《Google!Android2手机应用程序设计入门》笔记(2)

说明:之前写的笔记,一并都发出来吧。

第二篇 基础篇

chapter 07 描述用户界面

1、Android应用程序模式的简单理解。一般把Android程序分为四种类型,Activity、Intent、Service、Content Provider。就我理解,和通常的程序概念比较相近的是Activity和Service,他们的区别在于Activity生命周期较短,Service可以一直运行;Activity要实现GUI,运行在前台,Service不需要(或许也不能),运行在后台。Intent感觉是一个启动器,或者像进程管理器,用于启动Activity以及Activity之间的通信。Content Provider,目前只接触到访问系统共享的信息,比如联系人,在有些程序里面用不到这个。
Activity类似于桌面程序设计中的一个窗口。程序如果有多个窗口或者窗口内容,就对应有多个Activity。不过同一时间只能在Android手机上显示一个Activity。实现一个继承自Activity的类,就相当于完成了一个“窗口”类的设计。但是要show这个“窗口”,必须在AndroidManifest.xml文件里面注册一个这个Activity,和对应的Intent。在这个Android程序设计中没有Main,也没有MainLoop。这和桌面程序设计差别较大,自己一时没有适应。也有人把Activity比作一个网页,在Android程序设计中也用到了Web开发中的MVC模式。或许可以把Intent理解为Activity作为网页的一个url管理器。之前对MVC也是浅尝辄止,理解也不透彻。有一个暂时不理解的地方就是Activity定义了一个“窗口”类,但却没遇到对这个类的实例化。或许是Intent做了实例化的工作,那么一个Activity类是否只能有一个实例存在,不管处在什么样的生命周期状态?回去还要好好想想。
2、Activity类似于桌面程序设计中的一个窗口。Activity类可以完成GUI的全部工作,包括绘制界面元素、处理用户交互行为等。对应于程序设计,就是一个java文件。这样看,一个最简单的Android应用程序,只要两个文件就够了,一个是继承Activity类的类实现Java文件,另一个是AndroidManifest.xml。当然Java文件要包含在一定的文件目录下。不过Google似乎要开发者尽可能实用MVC模式,因此,Eclipse新建的Android项目按照了MVC的方式组织。一个重要的特征是把界面实现代码分离成了xml,把静态字符串常量给分离成了xml资源。Google在Android的开发中的一些API支持,便宜用MVC的设计模式。
3、用xml设计界面,在Activity类定义文件中通过setContentView(R.layout.xxx)来绘制这样的界面。R.xxx.xxx算是Android对MVC特别支持的一个具体表现吧。
4、这一章用到的组件,一个是LinearLayout,在默认的项目模版中作为Activity界面设计布局的根容器;另一个是TextView,用于显示文本的容器。另外介绍几个组件的属性,android:layout_width、android:layout_height、android:orientation等,在字面上还是比较好理解。前两个的常用值有fill_parent、wrap_content等,第三的常用有vertical、horizon等。TextView的一个属性,android:text="@string/hello",这里@xxx/xxx和R.xxx.xxx有异曲同工之效。

chapter 08 设计用户界面

1、android:id="@+id/height"。为什么用+号,我猜测是对于"@string/hello"这样的访问,是对于有string.xml的文件的,而id.xml则不存在。同时单独弄个id.xml又太麻烦,所以就启用了+这种机制。
2、android:inputType="number"。这个在有些场合比较实用。具体的就不列举了,用的时候不是非常多,用到的时候再查文档即可。

chapter 09 存取识别符号

这一章讲了android:id、R.java、xml,特别提到了把字符串抽取到xml中,这本书里面还是比较重视对实用MVC的引导的。

chapter 10 解读程序流程

主要讲的内容是是分析一个Activity类的代码文件Bmi.java,逐行讲解,对于没有Java基础的人,这一章是很有用的,不过对于熟悉Java的读者,这一章可能有些多余。几个注意的地方:
1、代码文件通常要导入很多的android库文件,用”import android.xxx.xxx;"这种形式,不过书后面也介绍了Eclipse的快捷键Ctrl+Shift+O来自动导入缺少的库;
2、onCreate方法,这里没有开始讲生命周期,而是放到了后面,或许有其他考虑吧;
3、setContentView方法,应该是包含在android.content库里面,后面还有不少这样的set开头的方法,对应可以去总结一下上下文(context)管理的问题。

chapter 11 完成BMI程序

这一章完成了BMI程序的第一个版本。几个注意的地方:(直接抄原文代码了)

EditText fieldheight = (EditText) findViewById(R.id.height); //如何获取组件对象的引用
double height = Double.parseDouble(fieldheight.getText().toString()) / 100; //获取组件的值

Button button = (Button)findViewById(R.id.submit);
button.setOnClickListener(calcBMI);
private OnClickListener calcBMI = new OnClickListener(){
public void onClick(View v){
...
}
};

TextView fieldsuggest = (TextView)findViewById(R.id.suggest);
...
fieldsuggest.setText(R.string.advice_heavy);

posted @ 2012-04-03 12:34  tt-0411  阅读(1325)  评论(0编辑  收藏  举报