自定义UI控件,需继承 View类或View的子类,并重载View类中的一些方法,不必都重载,但至少要重载onDraw( )。
类别 | 方法 | 描述 |
---|---|---|
Creation | Constructors | |
onFinishInflate() | 当View和它的所有子对象从XML中导入之后,调用此方法 | |
Layout | onMeasure(int, int) | View会调用此方法,来确认自己及所有子对象的大小 |
onLayout(boolean, int, int, int, int, int, int) | 当View要为所有子对象分配大小和位置时,调用此方法 | |
onSizeChanged(int, int, int, int) | 当View大小改变时,调用此方法 | |
Drawing | onDraw(Canvas) | 当View要绘制它的内容时,调用此方法 |
Event processing | onKeyDown(int, KeyEvent) | 当一个新的按键事件发生时,调用此方法 |
onKeyUp(int, KeyEvent) | 当一个按键释放事件发生时,调用此方法 | |
onMotionEvent(MotionEvent) | 当一个动作事件(如触摸)发生时,调用此方法 | |
Focus | onFocusChanged(boolean, int) | 当View获得或失去焦点时,调用此方法 |
Attaching | onAttachedToWindow() | 当View附加到一个窗体上时,调用此方法 |
onDetachedFromWindow() | 当View离开它的窗体时,调用此方法 |
View的绘制过程:onAttachedToWindow -> onMeasrue -> onSizeChanged -> onLayout -> onDraw
Activity中绘制View:通过setContentView( ) 传入层次树的根节点引用 -> Activity被激活并获得焦点 -> 请求根节点计算并绘制树 -> ViewGroup结合自己的有效空间和子View要求的LayoutParams来布局子view,并调用子view的Draw( )方法来绘制之
时间: 2024-11-16 08:36:57