自定义View主要包括以下3种方式:
一、组合控件,利用已有控件的组合,来满足自己的需求。
例子:顶部导航栏
二、继承已有View,比如继承TextView、ImageView等,根据需要重写相应的方法,主要是重写onDraw来实现自己的需求。
例子:圆形头像
三、完全自定义View,包括自定义属性,测量、布局、绘制等。
----------------------------分割线----------------------------------
完全自定义View主要包括以下步骤:
1、自定义View的属性
2、在Constructor中获得自定义属性并创建画笔等
3、重写onMesure
4、重写onLayout
5、重写onDraw
说明:一般情况下,自定义View需要重写onMeasure与onDraw; 自定义ViewGroup必须重写onLayout,一般需要重写onMeasure不用重写onDraw.
补充:View的常见回调方法(与绘制流程密切相关)
onFinishInflate() 当应用从XML加载该控件并用它构建界面之后调用的方法
onMeasure() 测量View及其子控件的大小
onLayout() 当该控件需要分配其子控件的位置、大小时
[onPreDraw() 在组件将要绘制之前调用]
onDraw() 当组件开始绘制时调用
dispatchTouchEvent 事件分发的方法
onInterceptTouchEvent 事件拦截的方法
onTouchEvent 触摸事件的方法
onAtrrachedToWindow 当把该控件放入到某个窗口时
onDetachedFromWindow 当把该控件从某个窗口上分离时触发的方法
onVisibilityChanged 控件可见性发送改变时调用
onWindowVisibilityChanged 当包含该控件的窗口的可见性发生改变时触发的方法
onFocusChanged 控件焦点改变时调用
onWindowFocusChanged 当包含该控件的窗口的焦点发生改变时触发的方法
onSizeChange 当该组件的大小被改变时
onTrackballEvent 当发生轨迹球事件时