Android 自定义控件需要掌握哪些

下面写的不分先后顺序:

下面会更新相关的博客
  1. 应该掌握Androd的动画,属性动画,常用的四种动画
    Android应用开发之所有动画使用详解
    http://blog.csdn.net/yanbober/article/details/46481171
    浅析Android动画(二),属性动画高级实例探究
    http://www.cnblogs.com/wondertwo/p/5312482.html
    Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
    http://blog.csdn.net/guolin_blog/article/details/43816093
    属性动画的坐标
    http://www.lightskystreet.com/2014/12/10/propertyview-anim-practice/
    Android 属性动画使用解析-属性动画高级用法
    http://www.sunnyang.com/401.html
  2. Android的事件分发机制
  3. 自定义View常用的一些方法
  4. 自定义ViewGroup
自定义ViewGroup时,需要重写onMeasure和onLayout方法
1、onLayout原理及源码解析:
源码解析Android中View的layout布局过程 
http://blog.csdn.net/iispring/article/details/50366021
http://legendmohe.net/2015/05/25/onmeasure%E5%92%8Conlayou
/** * 就是当前的ViewGroup距离父控件的,左上右下的距离 * @param changed * @param l * @param t * @param r * @param b */
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b)

2、在自定义View时通常会去重写View的onMeasure方法去得到控件的宽和高,在onMeasure方法中,MeasureSpec是一个常用的类,MeasureSpec学习心得
http://chenfuduo.me/2016/04/07/MeasureSpec%E5%AD%A6%E4%B9%A0%E5%BF%83%E5%BE%97/

3、在onMeasure方法里面需要支持EXACTLY、AT_MOST两种
http://blog.csdn.net/lmj623565791/article/details/38339817
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1002/3540.html
 /** * 区别: measureChild与measureChildren * measureChild 是测量单个View,如果使用循环来测量,只要是当前ViewGroup下不管是可见还是不可见的都进行测量 * * 用measureChildren() 方法来简化onMeasureChild(widthMeasureSpec,heightMeasureSpec)上面的代码 * 这个方法将自动遍历所有子view并让它们测量自己。这个方法还可以忽略那些visibility 设置为gone的子view,因此它支持visibility gone标志 * */

目前,margins还不能工作。如果我们想支持margins,可以在我们容器的onLayout 里面添加它们而不是在测量一个子view的时候去考虑margins

我们就能使用setMeasuredDimension()来设置容器的宽度和高度
  1. 触摸相关工具类全解
  2. 自定义View的一些常用
Android 自定义View onMeasure方法的实现(真真理解)
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1102/1891.html
onMeasure方法中使用resolveSizeAndState,支持2.2
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0316/1593.html

还有一些自定义控件的例子,持续更新:

这里写代码片

你可能感兴趣的:(控件)