1.2 Android的核心功能模块
上节从层次结构的角度出发,对Android做了介绍。而本节将换一个角度,从具体的功能模块上去认识Android,介绍Android具体都能做些什么及能做到什么程度。了解这些功能模块的概况,就像看Android的“个人简历”一样,可以帮助我们对它的能力有整体上的认识,进而在应用开发之前可以更好地评估技术上的可能性和风险性。
本节将依次介绍Android的各个重要的功能模块,而本书的后续章节会对开发者需要关注的功能点进行更为详尽的剖析。
1.2.1 界面框架
每个Android开发者都会关心Android到底能够打造怎样的用户界面(User Interface, UI)。Android界面框架中最有特色的部分是资源(Resource)和布局(Layout)体系,通过完善的控件库和简明的接口设计,开发者可以尽快搭建自己需要的界面。
Android的每个交互界面都由一棵控件树构成。控件树中的控件(Widget)对象皆派生自android.view.View类,而其中非子节点的控件都派生自android.view.ViewGroup类,可称之为容器控件。控件树中的控件都受其父控件的管理,父控件会负责子控件的丈量和绘制,并向子控件分发交互事件。
Android的每个控件都有焦点、可视性、可用性、标识、背景等诸多控件属性。而为了获取用户与控件的交互事件(UI Events),可以为控件添加各种交互事件监听对象(Event Listener),它的设计采用了观察者模式。
Android中最有特色的控件,当属布局控件(Layout Widget)。这是一种自容器控件,其主要任务并不是展示自己,而是按不同的方式排列其中的子控件。比如,线性布局控件(android.widget.LinearLayout)会将其中的子控件按水平或竖直方向依次排列,而表格布局控件(android.widget.TableLayout)则会依照构造的行列结构摆放控件。
为了帮助开发者逃离界面开发的“泥沼”,Android部署了完整的应用资源(Application Resources)体系。所谓完整,就是Android将所有和界面相关的元素,比如界面布局、文字信息、尺寸信息、颜色和图像等,都从代码中剥离出来,用应用资源来进行描述。Android的应用资源由资源目录、XML资源文件和数据资源文件共同构成。XML文件比逻辑化的代码更适合描述界面这样的结构化概念,而Android用特殊的资源目录结构来针对移动设备的屏幕特征、语言环境和外部设备等特征部署资源文件,以此来解决设备的兼容性问题。
对于开发者而言,高效地构架产品所需的界面效果是最重要的一件事情。所谓高效,包括开发效率要高,同时也包括界面交互时更流畅,加载速度更快。本书的第7章和第8章会对Android的界面框架进行详细的介绍,其中,会结合一些优秀的界面实现来实际探索如何构建足够高效的交互界面。