作者Ed burnette说,Android 是一个复杂的系统,没有必要了解它的全部才去开始。举个例子,驾驶汽车是一门实用技术。学驾驶时,我们肯定不是从汽车原理开始学习,虽然学习汽车原理可以帮助我们更好地理解和掌握驾驶技术。学习Android开发,其道理也应该是如此。
应用技术最大的特点,就是应用;而掌握应用的最佳方式,就是动手。不去动手,学到的知识是不牢靠的,自以为会了,实际上是一知半解。说一回事,亲自动手去做又是另一回事。这中间的道理,很多人在很多场合都已经讲了,但问题的关键,还是在做。
先从用户接口(user interface)开始。在我的概念中,用户接口是机器与人之间交互的桥梁,人们必须要通过它们和机器打交道,来实现某种功能。包括图象、文字等显示内容,显示信息等位置布局,点击等操作方式。
在Android开发中,一般情况下是通过几个相互关联的文件来实现用户接口的。简单地说,可以分为四部分:项目定义、资源定义、控制定义。项目定义通常在AndroidManiseft.xml实现,位于项目根目录。资源定义通常在对应的XML文件定义。如,接口SCREEN的布局,对应Layout文件夹中的activity_main.xml等文件;字符串定义对应values文件夹中的strings.xml文件;菜单定义对应menu文件夹中的 menu.xml文件,等等。控制定义在对应的java文件中实现,一般情况是在位于src文件夹内主程序java文件中,若是包括其他类,则在其他java文件中实现。
R.java是由资源编译器根据RES文件夹内的XML自动生成,文件中定义R类,被主程序MainActivity调用。Android SDK的编译工具会把所有的数据和资源打包出Android package,即后缀为.apk的文件中。
《hello, Android》这本书在写作的时候,UI是采用XML文件来描述;现在设计UI时,可通过拖拽Palette中相应的Form Widget即可,其XML文件自动生成。
这里有个问题,为啥要用XML文件么? Android 开发者网站是这样说的,“The advantage to declaring your UI in XML is that it enables you to better separate the presentation of your application from the code that controls its behavior.” 目的是为了能够区分控制应用行为的代码。举个例子,如把出于某种考虑,需要对某个应用做一个其他语言的版本,这时只需要对Strings.xml等文件进行简单的替换,重新编译生成就可以了。