1.自定义View简介:
可以认为继承自View,系统没有的效果,extends View exdents ViewGroup
extends View:
2.onMeasure()
//获取宽高模式
final int widthModes = MeasureSpec.getMode(widthMeasureSpec);
final int heightModes = MeasureSpec.getMode(heightMeasureSpec);
//获取宽高的值
final int widthSize = MeasureSpec.getSize(widthMeasureSpec);
final int heightSize = MeasureSpec.getSize(heightMeasureSpec);
MeasureSpec.AT_MOST//在布局中指定了wrap_content
MeasureSpec.EXACTLY//在不居中指定确切的值 100dp match_content fill_content
MeasureSpec.UNSPECIFIED//尽可能的大,很少用到
ScrollView + ListView 显示不全就是这个原因 测试量布局进入MeasureSpec.UNSPECIFIED
修改方法:重写.onMeasure() 进入 MeasureSpec.AT_MOST 然后右移两位
3.onDraw
4.onTouchEvent
责任链模式
这个方法响应了触摸屏幕发生的事件,当我们需要和用户交互的时候需要
MotionEvent.ACTION_DOWN://按下
MotionEvent.ACTION_MOVE://移动
MotionEvent.ACTION_UP://松开
5.自定义属性
自定义属性就是用于配置
5.1在res下的values 下面attrs.xml 自定义自己属性
5.2在布局中使用
声明命名空间,然后再自定义中使用
5.3在自定义中获取属性