Android自定义View主要分为二大类:
一、单个控件自定View
二、ViewGroup自定义View
一、单个控件自定义View
单个控件自定义View可分为:
①.继承View重写onDraw方法:
这种方法主要用于实现一些不规则的效果,即这种效果不方便通过布局的组合方式来达到,往往需要静态或动态地显示一些不规则的图形。很显然这需要通过绘制的方式来实现,即重写onDraw方法。采用这种方式需要自己支持wrap_content,并且padding也需要自己处理。
②.继承特定的View( 例如:TextView,Button,EditText,Progressbar,ImageView等):
这种方法比较常见,一般是用于扩展已有View的功能,例如:TextView,Button,EditText,Progressbar,ImageView等,这种方法比较容易实现。这种方法不再需要自己支持wrap_content和padding等。
二、ViewGroup自定义View
ViewGroup自定义View可分为:
①、继承ViewGroup派生特殊的Layout:
这种方法主要用于实现自定义的布局,即除了LinearLayout、RelativeLayout、FrameLayout这几种系统的布局之外,我们重新定义一种新的布局,当某种效果看起来很像几种View组合在一起的时候可以采用这种方式实现。采用这种方式需要合适的处理ViewGroup的测量、布局、这两个过程,并同时处理子元素的测量和布局过程。
②、继承特定的ViewGroup(比如LinearLayout):
这种方法也比较常见,当某种效果看起来很像几种VIew'组合在一起的时候,可以采用这种方法来实现。采用这种方法不需要自己处理Viewgroup的测量和布局这两个过程。需要注意方法①和方法②的区别,一般来说方法①能实现的方法②也都能实现,两者主要的区别在于方法①更接近View的底层。
网友评论