# AndroidView 体系

了解 android 的 View 体系,才知道后面我们步骤写 Android 自定义控件做准备。

要明白 ViewViewGroup

要能判断常用的控件是属于 View 还是 ViewGrop ,接着才有自己要写的控件属于 View 还是 ViewGroup

为什么呢?

因为自定义 View 跟自定义 ViewGroup 的步骤,套路不一样。

# Android 自定义控件类型

Android 自定义控件呢,我们可以分为三类:

  • 自定义 View(包括对现有 View 的修改);
  • 自定义 ViewGrop(包括对现有 ViewGroup 的修改);
  • 自定义 ViewGrop;

# 自定义组合控件例子

自定义组合控件,其实就是把多个现在有控件整合在一起,把复杂的操作封装起来,把简单的操作暴露出去。

比如说我们要做以下这个控件:

img

当然可以重头开始绘制,从无到有。

我们也可以使用两个 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。

Edited on Views times