说明:之前写的笔记,一并放上来。
第三篇 中级篇(一)
chapter 12
这一章重点是MVC模式,具体在实践上,采取了这样的做法:
1、 把所有的”声明与查找界面组件“(findViewById)的代码,提取到findViews里面;
2 、把所有的“为特定界面组件添加控制流程”的代码,提取到setListeners里面;
3 、在onCreate方法里面调用findViews和setListeners,实现程序逻辑和界面组件的声明分离
chapter 13 加入对话框(Dialog)
1、对话框的一种实现代码示例:
private void openOptionsDialog(){
new AlertDialog.Builder(Bmi.this).
.setTitle(R.string.about_title)
.setMessage(R.string.about_time)
.setPositionButton("确认",
new DialogInterface.OnClickListener(){
public void onClick(
DialogInterface dialogInterface,int i){
}
})
.show();
说明:
a 这里使用了匿名的实体这种方法,据说是这样做的好处是,“当运行完这个对话框后,系统会自动回收这个匿名实体所占用的内存空间。”;
b Bmi.this是对话框所在Activity类的实例的引用;
c 这个对话框里面有个“确认”按钮。
2 添加监听对象的一种方法示例:
在Button的xml里面加上android:onClick="openOptionsDialog",还要定义下面形式的函数public void openOptionsDialog(View target){}
3 显示Toast的代码示例
Toast.makeText(Bmi.this,"BMI计算器",Toast.LENGTH_SHORT).show();
4 错误处理
使用try...catch...的异常处理机制。
chapter 14 查看在线内容(URI)
1 给对话框增加一种按钮,具体代码在上文的setPositionButton方法后面插入这样的方法:
.setNegativeButton(R.string.homepage_label,
new DialogInterface.OnClickListener(){
public void onClick(
DialogInterface dialoginterface,int i){
......
}
})
这个本来应该是添加取消按钮的(Negative和Positive相对),作者把它用作了访问首页链接的一个按钮。
2 打开连接、电话、地图的方法示例
Uri uri = Uri.parse("http://sites.google.com/site/gasodroid");
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
上面是打开网页链接的(启动默认浏览器吧);
把parse的参数改成“geo:25.047192,121.516981”,则会启动Google Map定位到指定的坐标;
把parse的参数改成“tel:12345678”,,ACTION_VIEW改成ACTION_DIAL,则会拨号。
个人感觉,上面的代码也可以用匿名实体重写一下,形如:
startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse(target));
chapter 15 加入菜单(Menu)
加入菜单,主要实现两个函数,一是onCreateOptionsMenu,另一个事 onOptionsItemSelected,示例如下:
protected static final int MENU_ABOUT = Menu.FIRST;
protected static final int MENU_QUIT = Menu.FIRST+1;
@Override
public boolean onCreateOptionsMenu(Menu menu){
menu.add(0, MENU_ABOUT, 0, "关于...")
.setIcon(android.R.drawable.ic_menu_help);
menu.add(0, MENU_QUIT, 0, "结束")
.setIcon(android.R.drawable.ic_menu_close_clear_cancel);
return super.onCreateOptionsMenu(Menu);
}
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case MENU_ABOUT:
openOptionsDialog();
break;
case MENU_QUIT:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
前一个方式是建立菜单的,后一个是处理选项动作的。另外这里用了andriod.R.xxx.xxx的资源引用方式,是引用系统内置资源的,和R.xxx.xxx区别是前面多了个”android.“。
chapter 16 定义Android列表(Manifest)
实际上这一章对manifest清单文件讲解的不是很清楚。宏观上看,这本书适合作为学习Android的第一本书,但不能作为唯一一本书。