来来回回看了很多关于自定义控件的系列文章,但是发现过了一段时间以后,再去回想还是感觉无话可说,归根揭底还是没有形成自己的知识脉络,最近趁着迭代末期,打算把整个Android View这一块的知识捋顺一遍,形成自己的知识结构体系
本文中绝大部分都摘选自参考文献,如果读者觉得我的布局不太合乎你的理解方式,可以自行参看参考文献部分
- 基础篇
- 动画篇
- 自定义控件篇
- 绘图篇
一、自定义View的分类
为了方便理解,我们给自定义View进行以下3中分类:
组合式自定义
- 组合式自定义:通过继承一个已有布局样式,传入自己设定的布局xml,对其中的一些子控件进行合并管理
- 这种方法往往没有绚丽的效果,通过对android现有组件的组合使用,减少代码逻辑和方便调用提高效率,譬如经常使用的表单型控件
拓展式自定义
- 拓展式自定义:通过集成一个现有的控件,对其进行功能拓展
- 譬如我们继承TextView,并实现一些自己需要的特定属性
完全自定义
- 完全自定义:通过完全重新View或者ViewGroup实现自定义
- 技巧性要求更高,但是定制过程更灵活
对于VIew:
- 继承View
- 对Padding处理
- 对wrap_content处理
- 自定义属性
对于ViewGroup:
- 继承ViewGroup
- 对wrap_content处理 onMeasure,内部对margin响应
- 实现onLayout