自定义控件

Why: 为什么要自定义控件
  1. 特定的显示风格
  2. 处理特有的用户交互
  3. 优化我们的布局
  4. 封装等...
How: 如何自定义控件
  1. 自定义属性的声明与获取
    1. 分析需要的自定义属性
    2. res/values/attrs.xml定义声明
    3. layout.xml文件中进行使用
    4. 在View的构造方法中进行获取
  2. 测量onMeasure
    1. MeasureSpec Mode:EXACTIY(明确的:具体数值及matchparent,且不超过父控件),AT_MOST(wrapcontent,至多不超过),UNSPECIFIED(不限制高度,一般用于scrollview及listview中)
    2. MeasureSpec Size
    3. setMeasureDimension
    4. requestLayout() (重新触发测量及布局)
  3. 测量onLayout(ViewGroup)
    1. 决定子View的位置
    2. 尽可能将onMeasure中一些操作移动到此方法中
    3. requestLayout() (重新触发测量及布局)
  4. 绘制onDraw
    1. 绘制内容区域
    2. invalidate() , postInvalidate()
    3. Canvas.drawXXX
    4. translate,rotate,sclae,skew
    5. save(),restore()
  5. onTouchEvent (ViewGroup)
    1. ACTION_DOWN , ACTION_MOVE , ACTION_UP
    2. ACTION_POINT_DOWN,ACTION_POINT_UP
    3. parent.requestDisallowInterceptTouchEvent(true) (请求父控件不要拦截手势)
    4. VelocityTracker
  6. onInterceptTouchEvent(ViewGroup) (如果本方法返回true代表本方法把子View的时间拦截了)
    1. ACTION_DOWN,ACTION_MOVE,ACTION_UP
    2. ACTION_POINTER_DOWN,ACTION_POINTER_UP
  7. 其他
    1. onSaveInstanceState,onRestoreInstanceState
    2. ViewConfiguration (mTouckSlop等)
    3. ScaleGestureDetector,ViewDragHelpe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值