`

Activity...

阅读更多

 

一、常用类:

1. Activity 是最基本的类,它代表一个显示页面。类似一个 Servlet,可以显示页面、捕捉事件、显示菜单、处理复杂的用户交互等。

 

2.  Intent 指一个目标。它包含 ActionNameAction指定目标动作, Name指定目标类地址。

Intent典型用法如下:

Intent intent=new Intent(thisContext,toClass);

intent.putExtra(Bundle xx);//Intent添加数据

startActivity(intent);//发送该intent

//另外还可以配置Intent Return来处理Intent数据返回。

//调用startActivityForResult(intent)即可实现该层嵌套。

 

3.对于典型的一些数据控件,比如ListViewTabHostAndroid对其都进行了简单封装和布局定义,对应有ListActivityTabActiviy等。

 

4. Android采用了典型的MVC结构。其表现如下:View (界面)既可以通过xml(layout目录下)生成,也可以通过硬编码(代码)的方式直接通过代码生成。对于xml中的View资源,可以在代码中通过getViewById()的方法获得。Model既可以通过xml(values目录下)生成,也可以硬编码的方式直接在代码中指定。ViewModel通过Adapter来进行连接。典型的Adapter包括ArrayAdapter(可以Sort()操作)CusorAdapter(Cusor中查询到数据源),ListAdapterSimpleAdapter(最常用)SpinnerAdapter(它是一个接口,设置Spinner应用SimpleAdaptersetDropDownResource方法)

 

5. SimpleAdapter典型用法:

List<Map<String,String>> list=new ArrayList();

Map<String,String> map=new HashMap();//代表列表中的一个项。Key值将决定Value的显示位置。

map.put(“name”, “WangFeng”);

map.put(“description”, “I am a Student.”);

list.add(map);

new SimpleAdapter(

this, //Context

listdata,//List<Map<String,?>>List<Map<?,String>> or Cursor

android.R.layout.simple_list_item_2,//which view display

new String[]{“name”,”description”},//data column Name

new int[]{android.R.id.text1,android.R.id.text2};//which data view display

 

ArrayAdapter的典型用法:

注意ArrayAdapter是一个泛型对象,其泛型类型与数据源的array class对应。ArrayAdapter仅有一列数据。因此内置了insert(),remove(),add(),clear()等数据操作方法。同时还提供了sort(Compartor)的排序方法。

new ArrayAdapter(

this,//Context

android.R.layout. simple_list_item_1,//which view

array//array object or resource id

)

 

二、开发陷阱:

1.在调用super.onCreate()方法之前,Activity的Context尚处于null状态。切勿在onCreate方法前初始化View组件。

2.在调用this.setContentView(xx.xml)之前,切勿对该layout文件使用findViewById()方法,否则将得到null结果。

3.使用ListView时,必须在setAdapter()方法之前调用setHeader()、setFooter()、setEmptyView(),否则将抛出异常。另外,不要尝试添加一个复杂的view放在listView的header里面,这会影响事件的捕获。

4.对于一个继承AdapterView的对象,切勿去捕捉Clicked、Selected事件,而应改用onItemClicked(),onItemSelected()事件。否则将抛出异常。

5.如ListView的数据源发生了改变。应调用notifyDataSetChanged()方法来更新视图。不过SimpleAdapter不提供notifyDataSetChanged()方法。更新以SimpleAdapter为桥梁的视图只能采用重新setAdapter()的方法。

6.对于布局文件,在嵌套LinearLayout时,请尽量使用wrap_content。使用match_parent将可能覆盖父容器,并导致无法显示后面的布局。

7.Android中的Calendar默认是处于GMT+0:0的时区。因此其Date对象与本机Date差值8小时。

 

三、Android开源工具、项目:

 

1.android/tools目录下有个叫Hierarchy Viewer的工具,在启动模拟器后运行该bat文件将加载应用界面。可以帮助界面调优。

2.DroidDraw:是一个开源的Java桌面工具。运行后可以对Android界面进行可视化编辑。不过DroidDraw与Eclipse的编码好像有问题。DroidDraw开发AbsoluteLayout较有优势。普通编辑可视化layout可以使用ADT内置的工具,使用方法是进入xml文件,选择layout标签。

3.ChartEngin:Android平台下的一个免费项目,用于显示各种报表。

4.HessianDroid:Hessianandroid版本,使用Hessian可以完成轻量级RPC对象传输。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics