知识点:
1.自定义属性的声明与获取
2.测量 onMeasure
3.布局 onLyout(ViewGroup)
4.绘制 onDraw
5.onTouchEvent
6.onInterceptTouchEvent(ViewGroup)
一 .自定义属性的声明与获取
在 value中 attr.xml文件里声明, 在layout的布局文件中使用
获取方法:
TypedArray a = context.abtainStyledAttributes(attrs,R.styleable.XXX);
注意获取完属性值最后要调用 a.recycle();
二.测量 onMeasure
1. 测量的模式
EXACTLY 精确的值
AT_MOST 最大的值 一般见于 wrap_content
UNSPECIFIED 一般见于 ListView ScrollView
2. requestLayout() : 触发测量
三. 布局 onLayout: 如果自定义View是 ViewGroup,需要调用onLayout方法 决定子View如何放置
onLayout(boolean changed ,int l,int t,int r,int b)
四. 绘制 onDraw
onDraw 绘制内容区域,不需要考虑背景
重绘:invalidate() 子线程中用 postInvalidate()
Canvas.drawXXX
五. onTouchEvent
六 .onInterceptTouchEvent 如果自定义View是 ViewGroup,需要调用onInterceptTouchEvent 方法