自定义View的理解

  • 为什么要做?

普通的开发中,自定View的工作相对较少的,与其造轮子使用,现有的View(Widget,布局)一般都能满足我们日常的使用。但掌握造轮子的原理,对我们使用或改装轮子还是很有帮助。

  • 怎么做?

一个无交互的View,包括测量,布局,绘制。
对应View的3个回调方法:

//测量当前View以及其内容(子View)
//作为约定,在重写该方法之后,需要确定mMeasureWidth, mMeasureHeight
onMeasure(int widthMeasureSpec, int heightMeasureSpec)

//如何放置子View,即确定子View的位置
void onLayout(boolean changed, int left, int top, int right, int bottom) 

//在本视图在绘制什么
void onDraw(Canvas canvas) 

三个步骤,并不是都要实现的。
比如一个Framelayout,作为承载View的容器,它不用绘制什么,仅仅是做好怎么放置子View的工作既可, 实现onMeasure() , onLayout()方法。
而一个ImageView,用来展示一个图片,它的主要职责是确定好自己的大小以及如何绘制自身,需要实现onMeasure(), onLayout()

你可能感兴趣的:(自定义View的理解)