为什么要自定义控件:
1、特定的显示风格
2、处理特有的用户交互
3、优化我们的布局
4、封装等…
如何自定义控件:
1、自定义属性的声明与获取
2、测量onMeasure
3、布局onLayout(ViewGroup)
4、绘制onDraw
5、onTouchEvent
5、onInterceptTouchEvent (ViewGroup)
自定义属性的声明与获取
1、分析需要的自定义属性
2、在res/values/attrs.xml定义声明
3、在layout.xml文件中进行使用
4、在View的构造方法中进行获取
|
|
onMeasure
1、EXACTLY, AT_MOST, UNSPECIFIED
2、MeasureSpec
3、setMeasuredDimension
4、requestLayout()
onLayout(ViewGroup)
1、决定子View的位置
2、尽可能将onMeasure中一些操作移动到此方法
3、requestLayout()
绘制onDraw
1、绘制内容区域
2、invalidate(), postInvalidate()
3、Canvas.drawXXX
4、translate、rotate、 scale、 skew
5、save(), restore()
onTouchEvent
onInterceptTouchEvent (ViewGroup)