View的工作流程主要指的是measure、Layout、draw三个流程,即测量、布局、绘制。measure测量view的宽高,Layout确定view的宽高和四个顶点,draw绘制到屏幕上。
自定义View答题分为四类:
1、继承View重写onDraw方法
这种方法主要自定义一些不规则的效果,即这种效果不方便通过布局的组合方式实现,用这种方式需要自己支持wrap_content,并且支持padding也需要自己处理
2、继承ViewGroup派生出特殊的Layout
这种方法主要用于实现特殊的布局,即除了LinearLayout、RelativeLayout、FrameLayout这几种系统布局之外,我们重新定义的一种新布局。采用这种方式比较复杂一些,需要适当测处理vIewGroup的量值和布局这两个过程并同时处理子元素的测量和布局过程。
3、继承特定的view(比如TextView)
这种比较常见,一般用于扩展某种已有的View功能比如TextView,这种方法比较容易实现,也不需要自己支持warp_content和padding等。
4、继承特定的ViewGroup(比如 LinearLayout)
这种方法比较常见,当某种效果看起来像几种View组合在一起的时候可以采用这种方式来实现。采用这种方式不需要自己处理ViewGroup的测量和布局这两个过程,一般方式2能实现的效果这个方式都能实现,两者的区别在于方式2更接近View底层。
网友评论