Android的控件都派生自android.view.View类,在android.widget包中定义了大量的系统控件供开发者使用,开发者也可以从View类及其子类中,派生出自定义的控件。
一、Android的控件结构
Android中有一类重要的控件,称为容器控件,它们派生自View的子类android.view.ViewGroup。每个容器控件都可以作为父控件存在,其中包含若干个子控件,每个子控件占据其父控件的一块区域,统一由父控件进行管理和支配。
交互界面中控件的关系直观上是极其复杂的,所以Android将控件对象之间的联系抽象为树形结构,从而简化了控件之间的关系——每个控件只会受其父控件的控制,而不会被其他控件影响。为了保证保证调控的整体性,Android为控件树增加了一个统一的交互事件管理对象ViewParent,它可以从整体上对控件树的变化进行调度,避免了控件对象彼此间的局部通信,从而大大降低控件对象间的耦合性。
在Android控件中,交互事件都是沿着控件树自顶向下传播的。父控件接受到交互事件后,会先判断事件的目标控件对象,如果是自己需要的,就会截获事件进行处理,否则就尝试将事件向下分发给对应的子控件,并递推地逐级向下传播事件,直至该事件被处理或者忽略。而在Android中,View定义了一系列事件函数用来接收和处理各类交互事件,比如通过View.onKeyDown函数可以接收到用户的按键操作,onTouchEvent可以获取用户触摸屏幕的相关事件,等等。每个View类的子控件都可以重载这些函数,来处理自己所需的事件。
二、Android的控件属性
每个Android控件都有一定的属性,用于表示控件对象的基本特征。这些属性都定义在View类中。
三、Android的窗口机制
所谓窗口机制,是指Android采取了基于窗口注册的实现模式,将用户与界面的交互传递到对应的控件中去。使用过c++和java中界面开发可能会比较熟悉。
窗口机制的核心是窗口管理服务(WindowManagerService),它是Android系统的核心服务之一,运行在系统核心进程的一个独立线程中。它负责管理所以交互界面的控件树,并将用户操作转换成交互事件传递至当前界面。
//在界面组件中构造并展现一个对话框对象 new AlertDialog.Bulider(this) .setTitle("对话框标题") //设置标题 .setMessage("对话框内容")//设置提示信息 .setPositiveButton("关闭",new OnClickListener(){ //相关处理 }) .show();
其内容区域用于设置提示信息,或接受用户输入信息。AlertDialog.Builder对象提供了大量的便捷接口供开发者使用,比如可以通过AlertDialog.Bulider.setMessage设置提醒的文字信息,也可以通过AlertDialog.Bulider.setItems函数设置选择列表亦或可以通过AlertDialog.Bulider.setView自定义内容区域的样式。
在界面组件中,可以通过Activity.showDialog函数来弹出指定的对话框对象,开发者需要在Activity.onCreateDialog函数中对其进行构造。对话框一旦被构造,就会被缓存下来。开发者可以通过Activity.dismissDialog函数消隐该对话框,可以通过Activity.removeDialog函数删除缓存的对话框对象。每次对话框呈现之前,都会调用Activity.onPrepareDialog函数,开发者可以通过重载该函数动态地变更对话框对象中的内容。
四、Android的基本控件
控件是构建界面的基本单元。为了帮助更好地进行界面的构造,Android提供了大量的基础控件。对于开发者而言,只有了解这些控件的实现特征和使用方式,才能够更快更好地进行交互界面的开发。那么接下来,我会为大家一个一个介绍Android中比较重要的控件,并附上简单的操作代码。
========================================
作者:cpacm
出处:(http://www.cnblogs.com/cpacm/p/3954139.html)