一、 自定义View的技术难度在于:
自定义View是一个综合的技术体系,涉及了View的层次结构、事件分发机制和View的工作原理
等技术细节。
二、自定义View的分类:
主要分为4类,也可以说成是自定义View的四种做法。
1、extends View后重写onDraw()方法
这一类主要用于实现一些不规则的效果,也就是说这种效果不方便通过布局的组合方式来实现,往往需要静态或者动态显示一些不规则的图形,所以就需要通过绘制的方式来实现,即重写onDraw()方法。采用这种方法需要自己支持wrap_content,padding也需要自己处理。
2、extends ViewGroup派生特殊的layout
这种方法主要用于实现自定义的布局,就是说除了LinearLayout、RelayiveLayout、FramLayout这几种系统的布局之外,我们重新定义一种新布局,当某种效果看起来很像几个View组合在一起的时候,可以采用这种方法来实现。使用这种方法的时候需要注意的是:ViewGroup的测量和布局这两个过程,并同时处理子元素的测量和布局过程。
3、extends 特定的View(比如TextView、Button)
这种方法就比较常见,适用于一些效果比较简单的自定义View,一般是用于扩展某种已有的View的功能,比如TextView,这种方法不需要自己支持wrap_content和padding等。
4、extends 特定的ViewGroup(比如LinearLayout)
这种方法也属于比较常见的,当某种效果看起来很像几种View组合在一起的时候,可以采用这种方法来实现。采用这种方法不需要自己处理ViewGroup的测量和布局这两个过程。