# AndroidView 体系
了解 android 的 View 体系,才知道后面我们步骤写 Android 自定义控件做准备。
要明白 View
和 ViewGroup
。
要能判断常用的控件是属于 View
还是 ViewGrop
,接着才有自己要写的控件属于 View
还是 ViewGroup
。
为什么呢?
因为自定义 View
跟自定义 ViewGroup
的步骤,套路不一样。
# Android 自定义控件类型
Android 自定义控件呢,我们可以分为三类:
- 自定义 View(包括对现有 View 的修改);
- 自定义 ViewGrop(包括对现有 ViewGroup 的修改);
- 自定义 ViewGrop;
# 自定义组合控件例子
自定义组合控件,其实就是把多个现在有控件整合在一起,把复杂的操作封装起来,把简单的操作暴露出去。
比如说我们要做以下这个控件:
当然可以重头开始绘制,从无到有。
我们也可以使用两个 button
+ 一个 TextView
或者 EditText
组合起来。
然后把复杂的逻辑封装起来,比如说,上限和下限的判断,比如说增加梯度,比如说阀值,达到一定的值会改变颜色之类的。这些复杂的操作封装起来。对外只暴露数据变会的回调通知和设置数值 / 获取数值的方法即可。
别人拿到你的控件,不关心怎么实现,只关心使用即可。
# 自定义 View 例子
自定义 View,什么是 View,从控件的角度来理解,我们可以这样判断。如果控件里没有孩子的,没有子 View 的,就是 View,比如说 Button
, TextView
, ProgressBar
, ImageView
, 这些都是 View
.
# 自定义 ViewGroup 例子
自定义 ViewGrop,什么是 ViewGroup, 用来包含孩子的,控制子 View 的摆放的,是容器。ViewGrop 里还可以包含着 ViewGroup 和 View。比如说,LinearLayout,RetiveLayout,RecyclerView,ListView,ViewPager… 这些都是 ViewGrop。