所有的View在窗口中按单独的树状结构分布
所有的View在窗口中按单独的树状结构分布。你可以通过硬编码的方式添加view,或者你也可以在一个或多个xml布局文件中指定一棵布局树。View包含许多特殊的子类,它们扮演了控件的角色或者
示显示文本、图片或者其他东西的能力。
当你创建了一棵布局树,你也许希望执行下述典型操作:
设置属性:比如设置TextView的文本。不同的View有不同的可用属性和方法。注意你在布局树中设置的属性将在编译时受到检查。(Note that properties that are known at build time can
be set in the XML layout files.)
设置监听器:大多数View允许开发者设置监听器来在View中捕捉他们感兴趣的事件。例如:所有的View都支持监听“获得焦点”和“失去焦点”事件。你可以使用”setOnFocusChangeListener(View.OnFocusChangeListener)来注册该监听器。”View的子类提供了更多的特殊监听器。例如,Button子类公开了一个监听器来监听按钮的点击事件。 设置属性:你可以通过”setVisibility(int)”来隐藏或显示View。
注意:Android框架将自动完成测距、布局和绘制View控件。你不应当通过手动调用的方式来执行View的动作。除非你正在实现ViewGroup。
实现一个自定义View
要实现一个自定义View,你通常要重载android框架调用View的一些
方法。你不需要重载他们的所有方法。事实上,你能够仅从重载onDraw(android.graphics.Canvas)方法开始。 类别 方法 描述
创建相关 构造器 当通过代码创建
时,将会调用构
造器中的一个表
单。而当解析布
局文件时,也会
调用一个表单,
该表单将转换并
应用所有在布局
文件中定义的属
性。
当该View和它onFinishInflate()
的所有子元素从
xml文件被解析
后调用。
布局相关 调用该方法可以onMeasuer(int,int)
确定该View和
它的所有子元素
需要的大小。
调用该方法以使onLayout(boolean,int,int,int,int)
View分配大小
和位置给它的所
有子元素。
当View的大小onSizeChanged(boolean,int,int,int,int)
更改时调用该方
法。
Draw相关 当View需要渲onDraw(Canvas)
染它的内容时被调用。
Event处理相关 当一个新的keyonKeyDown(int,KeyEvent)
事件到达时触发。
当抬起某键时触onKeyUp(int,KeyEvent)
发。
当轨迹球的动作onTrackballEvent(MotionEvent)
事件到达时触发。
当触屏事件到达onTouchEvent(MotionEvent)
时触发。
焦点相关 当该View获取onFocusChanged(boolean,int,Rect)
会失去焦点时触发。
当该View的父onWindowFocusChanged(boolean)
窗体获取或失去焦点时触发。
添加/移除相关 当该View被添onAttachedToWindow()
加到窗体时触发。
当该View从窗onDetachedFromWindow()
体移除时触发。 当View的父窗onWindowVisibilityChanged(int)
体的可见性更改时触发。