第一篇:Android实习总结报告
实习时间:学院:专业名称:学号:姓名:指导老师:实习地点:
Xxxxxx大学
专业实习报告
——201X.XX.XX
XXXXXXXXXXX学院 计算机通信
信息技术有限公司 201X.XX.X XXXXXXXXXX XXXX XXXX XXXXXXXX
一、实训地点
XXXXXXXX信息技术有限公司是一家隶属于XXXXXXXX集团主要从事软件开发、技术咨询与服务、IT教育投资、大学生实习实训等业务的民营科技型企业。
二、实训目的
到实际生产中的种种Android
Android现对androidAndroid
Android
android实习可以让我们与时代最目的:
1、培养学生运用所学课程Java语言程序设计的理论知识和技能,分析解决计算机实际应用中的问题的能力。
培养学生在Java语言程序设计的基础上,开发Android应用程序的思想和方法。培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。通过课程设计,要求学生在指导教师的指导下,独立完成课程设计的全部内容 包括:
1、确定开发的程序,收集和调查有关技术资料。
2、按软件工程步骤进行程序设计。
3、对完成的程序进行测试和完善。
4、完成课程设计报告。
三、实训内容
学习实训的内容主要包括如下:
开发环境:了解了android的起源与发展,学习安装 Eclipse 插件(ADT)学习AndroidSDK包含了开发Android应用所依赖的jar文件、运行环境及相关工具
Android项目结构:src/ java原代码存放目录 gen/ 自动生成目录 gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。这个文件由Android开发工具自动产生的。res/ 资源(Resource)目录 在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。assets资源目录Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件。AndroidManifest.xml 项目清单文件。
基础开发
一、1.Activity:是Android系统中的四大组件之一。2.Activity生命周期:void onCreate(Bundle savedInstanceState)void onStart()void onRestart()void onResume()void onPause()void onStop()void onDestroy()这七个方法定义了Activity的完整生命周期
二、Intent: Intent对他要完成操作的一种抽象描述,我们可以用intent来启动一个activity,发起一个broadcast和启动或绑定一个service。Intent使应用程序代码在运行时动态绑定成为可能,这也降低了不同代码之间的耦合性。Intent最常使用的方法是用来启动一个activity。Intent封装了他要执行动作的属性,这些属性最常见的是action和data Intent主要有以下四个重要属性:dssAction:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作。通过setAction()方法或在清单文件AndroidManifest.xml中设置。默认为:DEFAULT。
Data:Data通常是URI格式定义的操作数据。例如:tel://。通过setData()方法设置。
Category:Category属性用于指定当前动作(Action)被执行的环境。通过addCategory()方法或在清单文件AndroidManifest.xml中设置。默认为:CATEGORY_DEFAULT。
Extras:Extras属性主要用于传递目标组件所需要的额外的数据。通过putExtras()方法设置。
三、Service四大主键职业,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。要完成比较耗时的任务;不需要用户界面;
四、BroadcastRecever 生命周期
1.在广播到达接收者时调用onRecever();方法
2.注册广播的几种方式包括:代码注册;项目清单注册;
五、Handler 1.Handler、Message、MessageQueue和Looper之间的关系的关系,Handler的作用: Handler(一个线程可以有多个Handler但是只能有一个Looper), 关系:向消息对列(MessageQueue封装在Looper中)发送消息,Handler在创建时就会关联以个Looper默认关联当前Looper.作用:发送消息(Handler在主线程启动一个子线程,在子线程调用SendMassager(),发送到主线程的HandlerMessage()方法);处理消息(调用HandlerMessage()方法处理)。
数据存储
一、Sharepreference:保存应用系统的配置信息等的键值存储机制。(使用键值机制:Bundle ContentValues Map JSONObjecdt)
二、存储方式 1)是一种键值存储方式,可以持久化存储变量的值(Sharepreference存储的值都是基本类型的数据)存储的数据是以xml文件的形式存在,存储在/data/data/packagename/shared_prefs目录中文件存储
I/O存储,主要是用于大文件的数据的存取,比如视频、图片等,该中存储方式在使用的过程当中更新比较困难。
文件存储的使用:Activity提供了openFileOutput(name,mode)方法和openFileInput()方法,用于读写文件数据.第一个参数name中不能包含路径分隔符“/”
三、Sqlite
自定义一个数据库的操作类,该类要extends SQLiteOpenHelper类
public class MyHelper extends SQLiteOpenHelper { //类没有实例化,是不能用作父类构造器的参数,必须声明为静态
private static final String name = “china”;//数据库名称 private static final int version = 1;//数据库版本 public MyHelper(Context context){ //第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类
super(context, name, null, version);} public void onCreate(SQLiteDatabase db){
//该方法是在第一次实例化数据库操作对象的时候被调用
//可以在其中做一些初始化的工作,比如创建数据库表等
} public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
//在数据库的版本发生改变的时候会被调用
} }
四、ContentProvider 实现不同应用之间数据的访问和共享: 1)通过实现一个ContentProvider的抽象借口,将本应用的数据完全暴露出去,其中数据是以表的形式暴露的,暴露数据的时候要提供公共的URI。
2)其它应用通过android提供的ContentResolver接口访问ContentProvider暴露的数据。
五、网络存储
一、通过网络提供的存储空间来上传或者是下载那些存储在网络空间的数据信息。
网络编程:分为两种 1)基于Socket的网络编程:该网络编程使用的协议主要是TCP和UDP协议
面试题:TCP和UDP区别:TCP:面向连接 可靠 延时长 效率低UDP:面向无连接 不可靠 延时短 效率高Socket+ServerSocket+TCP(套接字)UDP+DatagrarmSocket+DatagramPackage(数据报)2)基于Http的网络编程:
该网络编程使用的协议是面向Http协议; 该网络编程是以xml/json格式的数据为载体,来进行相互通信数据; Android基于http协议的网络编程,使用的标准接口有两个:HttpURLConnection以及apatch的接口HttpClient Http协议通信分为两种方式:get请求方式和post请求方式
六、Xml格式数据解析Json格式数据解析:
Dom解析:dom解析一般是把xml文档转换成一棵文档节点树,存储在内存中
优点:xml文档树在内存中完整存储,可以直接对该文档树的数据和结构进行修改;可以通过解析器去访问节点树上的任何一个节点;Dom解析的API使用简单方便。
缺点:当xml文档比较大的时候,该解析方式消耗内存资源 Sax解析:
优点:对内存的要求较低,方便解析xml的部分;
缺点:当xml文档结构复杂的采用SAX解析,编码过程比较复杂 Pull解析:sdk提供的内置解析方式,解析过程类似于sax解析,节省内存资源,而且比sax解析更加简单方便。
JSON格式数据:(1)key-value键值对象(无序的)(2)数组(有序的)
用到的内容包含:4个类一个异常
JSON格式数据的解析可以使用Google提供的gson解析工具 问题:xml格式数据解析和JSON格式数据解析的比较
四、实训心得:
1通过几个月的android实习,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。
2通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。例如: 要的布局(或者控件),在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的 跳转Intent管理,通过Bundle对数据在界面之间进行传输。
4在手机交互式通信服务中,学习了Android手机之间进行短信发送、广播、对广播的监听、服务等,在Service类中没有context,可以通过Handler来每秒反复运行,自动送出系统广播信息,同时在这里我们也知道可以设计一个常用的变量类,设计一个当前的CurrentActivity这个变量进行控制,进行处理。
在Android编程过程中巩固熟悉了Java的编程。由于Android应用程序的开发离不开Java的支持,所以基础的Java知识是必须的。Android系统是基于Linux的手机操作系统平台,要深入系统的学习Android,不仅仅是有Java和Android应用开发,必须要具备Linux,C/C++高级编程才能深入的涉及Android Framework和Android内核开发。成为Android开发的高素质人才。所以,在后续对Android的学习中可能会看一些较底层的书籍。
第二篇:android实习
21日
今天是实习的第一天,上午听了专家的讲座,并分组和项目立项。下午的时候,开始了对于Android的学习,我知道了Android系统的概述和特性,并且了解到了Android的体系结构和常用系统库,使我对Android有了简单的了解。
22日
今天开始正式接触Android软件的开发,先是要把开发的环境配好,工具(Eclipse)安装好。了解了Android应用程序的组成和目录结构。在下午的时候,开始学习Activity的系统原理和生命周期,并创建了Activity,对了Activity之间的跳转这,我遇到了问题,没有办法跳转,经过仔细盘查,原来是在跳转到的Activity中没有创建Intentintent = getIntent().在开发中要注意每一点,出现一点错误就可能使整个项目出现错误。
通过今天的学习,根据自己的项目,创建了项目所需要的Activity,并在需要的地方加入了跳转。
23日
今天上午,学习了文本框和编辑框:TextView,EditText;还有按钮Button和ImageButton,发现TextView是显示文本的,而EditText是输入文本的,通过EditText,我自己编写了一个计算器,使用了Intent传值,实现了简单的计算。在ImageButton中发现设置背景图标Background和src的不同,一个是设置按钮背景,一个是在按钮上加入了图片。我在自己项目的主页使用了ImageButton,使我的主页更加炫了。
下午的时候学习到了怎么样去布局,感觉使用RelativeLayout比LinearLayout方便,因为可以随便的设置布局,更加的随意,LinearLayout就会有很多的限制。不过LinearLayout布局相对简单,不繁琐,RelativeLayout布局相对麻烦,容易出现错误。
通过今天的学习,在自己的项目中的Activity中根据需要修改了布局,在我的主页中我使用了RelativeLayout,这样可以使我对主页的布局控制更加简单,更加随意,使我可以把主页布置的更吸引人。而其他的一些次要界面,我使用的是LinearLayout,这样更加方便。24日
今天学习到了Toast提示类,这个可以在点击按钮的时候显示提示内容,例如 Toast.makeText(first.this,”后退”,Toast.LENGTH_LONG).show();(first是我自己的文件名)。
对于menu类的用法和怎么取创建menu的监控方法有了了解,就是在public boolean onOptionsItemSelected(MenuItem item)中加入监控方法。在表单中我还用到了RadioButton和CheckBox。在下午的时候我知道了如何在内存卡中存数据。RadioButton 和 CheckBox和java web表单中的这些功能几乎一样。
在项目中的主界面中的,我加入了menu菜单,在里面加入了两个按键,一个是“关于 ”界面,是介绍项目的开发者和项目的版本的,还有一个是“退出”按键,并对其加入了Alert对话框,防止使用者不小心退出。而且也对返回键加入了对话框,在主界面中的按钮加入了Toast提示,提示的时间是SHORT,不是LONG,这样可以提醒使用者按下的是什么按键。
25日
今天老师讲解了图形框架,让我知道了如何去使用Canvas类,Paint类。并且学会了如何绘制自定义UI、控件。
在下午的时候,学习了绘制文字,图形和图像,并且自己动手制作了软件中的一些界面 26日
今天听了企业专家讲座,然后,老师为我们讲解了如何去创建证书和签名,并且指导我们在即动手去签名打包,最后告诉我们软件做的好的会发布到移动MM上去
27日
今天学习到了类似于Java中的Alert对话框,那就是AlertDialog,感觉Android和Java更加相似了,名字都差不多。当然,还知道了用Dialog显示的View是什么样的。虽然之前我就在自己的项目中用到了对话框,但是这次的学习使我对对话框的了解更加深入了,使用更加灵活了。
下午学习到的东西非常重要,那就是Spinner,Gallery,TabHost还有ListView类,知道了Gallery可以使多张图片通过滑动显示在手机上。项目的主页上有一个图集,就是使用的Gallery,才使大量的图片有了更好的操作。TabHost类似于网页的标签,项目的“英雄”显
示界面中的“技能介绍”和“出装”介绍就是使用了TabHost,才可以在一个页面上显示出来。
28日
今天是Android数据库的学习,今天学会了如何去创建数据表,如何在表中实现增删改查。下午的时候,通过创建ContentProvider来学习和了解ContentProvider。
29日
今天主要学习广播,知道了如何发送广播,监听广播,注册和取消广播,并且通过广播监听了手机接收短信。还学习了服务,了解了创建服务,启动服务,怎么样绑定服务和进程间通信,明白了服务的生命周期。
30日
今天是最后一天,有项目答辩,所以项目需要完成,我讲我小组的所有的内容集合起来,形成一个完整的项目,并签名打包
虽然这次培训时间很短,但是我从中学到了很多内容。我知道了安卓的一些基本知识,并对其有了一定的了解,可以对其进行简单的使用,可以
第三篇:Android实习心得
Android实习心得
刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构,更加方便,视觉上也是非常的酷,在前期我通过的大量的Android SDK开发范例大全中的例子以及Android提供的APIDEMOS进行学习,尽管例子之间的连接比较零散,不过通过这些例子的学习我可以学习到了很多和以前java上相通的思想。
我在为期半个月的实习中学到了很多在课堂上根本就学不到的知识,收益非浅.现在我对这半个月的实习做一个工作小结。
1通过半个月的android实习,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。
2通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。例如: 要的布局(或者控件),在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的跳转Intent管理,通过Bundle对数据在界面之间进行传输。
4在手机交互式通信服务中,学习了Android手机之间进行短信发送、广播、对广播的监听、服务等,在Service类中没有context,可以通过Handler来每秒反复运行,自动送出系统广播信息,同时在这里我们也知道可以设计一个常用的变量类,设计一个当前的CurrentActivity这个变量进行控制,进行处理。
在Android编程过程中巩固熟悉了Java的编程。由于Android应用程序的开发离不开Java的支持,所以基础的Java知识是必须的。Android系统是基于Linux的手机操作系统平台,要深入系统的学习Android,不仅仅是有Java和Android应用开发,必须要具备Linux,C/C++高级编程才能深入的涉及Android Framework和Android内核开发。成为Android开发的高素质人才。所以,在后续对Android的学习中可能会看一些较底层的书籍。
由于这次实习时间较短,对于Android应用程序的高级编程讲的很少,是这次实习中的不足。要想开发一些好的应用程序,还需要更多的知识支持。在做实习最后的项目时,遇到了很多平时没有遇到或者没有特别关注的问题,如常见的Activity忘记注册,对SD卡存取需要权限,在写SQL语句时细微的错误就可能导致程序运行错误。这些问题只有自己在实际开发中才能体会到并且解决,并且在解决后可以长时间的记住。
通过Android的实习,我们在大四毕业前,我们又掌握了一项新的前沿的开发技能,也有了更多的发展方向,这在以后的找工作的过程中无疑为我们增加了砝码,也可以成为我们的一项兴趣爱好,可以根据我们自己的需要设计一些小的程序。总之,在这次实习中,我获得了很多东西,提高了自己的编程技巧和编程方法,并且认识了Android应用程序的开发,以及加深了对Java的认识。
最后,通过实习,我收获了很多东西,特别是编程方面的,这对即将毕业的我们来说,这次实习是一次较为珍贵的充电,
第四篇:android实习报告
实习报告
实习目的:
生产实习是计算机科学与技术专业重要的实践性教学活动,其目的是使学生们进一步加深对所学知识的理解,理论联系实际,巩固所学有关计算机基础理论知识和基本技能,学习有关计算机最新技术方面的应用,增强学生对计算机在社会生活,社会生产中应用的感性认识,深入了解计算机在各个领域中的应用状况,学生在实习的同时,进行一定的社会实践与调查活动,对于提高学生的综合能力和全面素质具有重要意义。
实习内容:
Android主要有四大组件,分别为:Activity 活动、Service 服务、Broadcast receivers 广播接受者、Content Provider 内容提供者。还有上激活组件Intent。
1.Activity
Activity就是一个用户可以直接接触并看到的窗口,当新建一个Android Project后可以
看到在工程文件下的src中有一个已建好的java类FirstActivity,系统也会自动为他配备一个布局文件main.xml,并在AndroidManifest中对此Activity进行注册。
用户想要自己创建一个Activity,首先创建一个java类继承自Activity,可以为他配备一个布局文件用来显示Activity创建后的布局。最后在主配置文件manifest.xml中对创建的Activity进行注册,这一步是必不可少的,没有注册Activity无法运行。
在manifest.xml中会有许多的Activity,但系统一次只能运行一个Activity,因此必须修选定一个最先运行的Activity。在注册Activity是加入
可指定当前的Activity为主Activity最先被执行。其他Activity可借助激活组件Intent
进行启动。通过Intent还可实现来了两个Activity之间传递数据
Activity具有生命周期,他有三种状态:运行状态、暂停信息和停止状态。运行态是在屏幕台前位于当前任务堆栈的顶部,即获取焦点的Activity。暂停信息是指失去了焦点但对于用户仍可见,此状态下当程序处于低内存是仍有可能被消除。停止状态是指完全被另一个Activity覆盖,但他仍然保留所有的信息与状态。
2.Android图形设计UI
Android UI控件一般写在布局文件中,此次实习所学控件主要有:TextView,EditText
Button、AlertDialog、RadioButton、CheckBox、Spinner和TableRow等。将这些控件及相应的属性写在layout下的布局文件中就可在与其绑定的Activity中显示相应的对话框,文本框,按钮等。
Android的界面布局是为了使控件能够更友好的呈现在用户的眼中。主要有:绝对布局Absolutelayout、线形布局LinearLayout、框架布局FramLayout、相对布局RelativeLayout和
表格布局TableLayout。其中框架布局适合于单张图片的显示。
3.Service 服务
Service事实运行在后台的一段代码。他与Activity一样有相似的生命周期,但不同的是他不能自己运行,必须通过某一个Activity或者其他的Context对象来调用。
Service可通过调用Context.StartService()启动,还可以通过ServiceConnection来访问Service。可以将其他的组件绑定到Service上。
4.数据存储
Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。
openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/”,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data/
/files目录,如: /data/data/cn.itcast.action/files/itcast.txt,通过点击Eclipse菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data/
/files目录就可以看到该文件。
openFileOutput()方法的第二参数用于指定操作模式,有四种模式android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data/
/files),其他程序无法访问。除非在创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE,只有这样其他程序才能正确访问。
实习流程:
2月18——2月27日,老师对于ANDROID开发进行了详细的讲解,其内容包括:ANDROID 的背景介绍,发展过程,自身的优势与不足.Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解
2月28日——3月2日: 学生自己开发ANDROID 3GABS项目,老师答疑及验收
实习心得:
时间过的飞快,半个月的实习就要结束了,在这次实习中我们不仅学习了相关的专业知识而且让我对Android系统又有了一个更加深入的了解,它也是我们计算机专业的一个新的方向并且发展很迅速,为了今后的发展我们还需不断努力学习!我国的信息产业还很落后,随着社会的发展和国家的支持,手机上网是社会发展的趋势,到时候手机上网将无处不在!之前我对Android系统的了解之停留在应用的层次上,对于更深层次的了解是很少的,通过这次实习,让我对Android系统有了一个更深层次的了解,同时它页使我意识到无论朝哪个方向发展,主要还是要扎实深刻地学习,同时也得不断努力探索!
IT业发展速度一直都是相当惊人的,不想被社会淘汰,我们就得必须不断地学习,现在的社会不再是一劳永逸,其他行业也是如此,我们必须不断地拿知识来武装自己,不然被淘汰那是肯定的!现在就业难原因其实在于竞争的家具,为了在竞争中得到成功,我们必须时时刻刻学习,还学到了很多做人做事的道理,不仅懂得了要想在计算机这一行立足必须具备扎实的技术理论知识,还必须学会与人沟通,合作的能力,同时更懂得了尝试的重要性,很多事情不是听说是困难的它就是困难的,只有亲自去做亲自去体会才知道,其实它并没有那么困难,这就是实践的重要性!无论做什么事情都必须要坚持,只有坚持下去,才会成功!事在人为,就怕不做!我们不能怕失败,关键是要从失败中总结经验,带着勇气,带着自信,坚持不懈,踏踏实实。这一次的实习是短暂的,但我收获良多。回顾以前所走过的路,太多的无奈和迷茫,这次实习就像是我人生道路上的航标,为我指明了前景的方向,是我对自己的前途充满了信心,我不仅知道了在人生的岔道口更适合朝哪个方向前进!更知道了在今后的道路上怎么去武装自己!
实习结果:
第五篇:《Android应用开发》个人总结报告
《Android应用开发》个人总结报告
刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构,更加方便,视觉上也是非常的酷,在前期我通过的大量的Android SDK开发范例大全中的例子以及Android提供的APIDEMOS进行学习,尽管例子之间的连接比较零散,不过通过这些例子的学习我可以学习到了很多和以前java上相通的思想,因为Android在现在也是全新的技术和框架,在其中我也学到了如何用单例模式、工厂模式等常用的设计模式进行学习,通过API进行开发客户端,对Request发送,Response处理中通过比较方便的JSON对象传输,以及对XML、JSON、图片、业务等下载处理,对API接口调用等问题处理。
首先在界面上,我们同样可以通过不同布局进行设计非常酷的界面,这些界面可以通过include进行引入,和jsp、html也有相通的地方,同样在android上可以用到自定义的样式这和css也有比较相通的地方,我们可以通过一些公用的方法写个BaseActivity这个基类,通过继承方式比较不错的实现了Activity的界面,因为这样你可以Header(头部)和Footer(尾部)进行处理一些触发事件或者特效等。布局模式以相对模式为主,线线布局模式可以在比较简单的include进行完成,最重要的一点就是:我们可以自己通过重写方法或者通过实现View或者Layout等类进行扩充项目需
要的布局(或者控件),在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的 跳转Intent管理,通过Bundle对数据在界面之间进行传输。
Android的界面显示同样也是基于控件的。通常是用View(包括ViewGroup)控件配上XML的样式来做的。具体细节不想说了,可以参考 Samples里的ApiDemos/View,和View的Doc,以及Implementing a UI这篇Doc。其他还有很多,感觉算是SDK讲述的最多的内容。从控件的使用上,和网页的设计类似,尽量用parent_width之类的抽象长度,用Theme来做风格,抽取所有的字串等信息做本地化设计。相关内容参看Implementing a UI就好。
一类比较重要的是数据绑定控件。如果做过ASP.Net会从中看到很多类似的地方。一个支持数据绑定的控件,比如ListView。可以通过一个 ListAdapter绑定到一个数据源上。ListAdapter是一个抽象类,主要的实现类包括SimpleAdapter和 SimpleCursorAdapter。前者是绑定一个静态的Array,后者是绑定一个动态的Cursor。Cursor前面说过,是一个指向数据源的随机迭代器,将View绑定到Cursor通常要设置这样几个参数。一个是每一行的样式,称作Row Layout,其实就是一个普通的Layout的XML文件。还有就是一个列和现实控件的对应关系。那个控件显示哪个列的值,这是需要配置的。为了定制一个良好的数据显示控件,最简单你可以定制很PP的Row Layout,复杂一点就是可以重载绑定控件View,或者是适配器ListAdapter。如果是一个数据显示密集的应用,且你对UI有些追求,这个工作估计是必不可少的。
一个主要用于显示数据内容的Activity,可以选择派生自ListActivity。它提供了一个具有
ListView 的Layout,还有
simple_list_item_1, simple_list_item_2, two_line_list_item等默认的Row Layout,还有一些比较不错的API,和可供响应选择Item的事件。可以满足你比较基础的需求。如果你觉得只有一个ListView的界面太突兀,你可以为这个ListActivity指定一个Layout,需要注意的是,你需要提供一个id为@android:id/list的ListView控件,避免Activity在内部偷偷寻找该控件的时候失败。
除了这些要求,做好UI还有注意易用性和效率。快捷键是一个比较不错的选择,在 Activity中调用setDefaultkeyMode(SHORTCUT_DEFAULT_KEYS),可以开启快捷键模式,然后你可以将菜单绑定到指定快捷键上就OK了。个人觉得Tip也是一个比较重要的东西,但目前观察看来,这个东西只能够自己提供了。界面的动态性有时候是不可避免的,比如说菜单就是一个需要经常根据光标位置提供不同的选项。这个东西Android很人道的考虑到了,你可以参看NodeList这个Sample。它采取的应该是一个静态模拟动态的方式,这样有助于提高速度。你也可以利用ViewInflate,动态从一个XML创建一个控件。成本据Doc说很大,不到万不得已不要使