1. 什么是View
This class represents the basic building block for user interface components. A View occupies a rectangular area on the screen and is responsible for drawing and event handling. View is the base class for widgets, which are used to create interactive UI components (buttons, text fields, etc.). The [ViewGroup](https://developer.android.com/reference/android/view/ViewGroup)
subclass is the base class for layouts, which are invisible containers that hold other Views (or other ViewGroups) and define their layout properties.
。通俗的话说,view是我们日常开发中所有使用的Weight视图控件的基类,老祖宗。
关于weight(The widget package contains (mostly visual) UI elements to use on your Application screen. You can also design your own.)
view定义了一个控件基类,所具有的各种方法和属性,以至于能在屏幕上显示。TextView继承自View用于在屏幕上显示文字,ImagView继承自View用于在屏幕上显示图片,官方的wight组件包下有各种各样的view实现,具有各种各样的功能。而他们都是继承与View。
2. View有什么作用
一般来说我们不会直接使用View,而是使用wight下的各种view具体实现类,但有时候这些实现类不满足我们需求的时候,可能就会需要自定义View。来实现我们自己的需求。
3. 如何自定义View
自定义View最重要的就需要掌握view的三个方法。
- onMeasure(); view的测量。确定这个view应在屏幕上显示的大小
- onLayout(); view的位置。 确定这个view应在屏幕上显示的位置(这个方法自定义view的时候一般不会用到,自定义ViewGroup的时候需要实现)。
- onDraw(); view的绘制。 将想显示的内容绘制出来
完成这三步 一个自定义view就完成了。
4. 关于ViewGroup
提到View就不得不提ViewGroup。
A ViewGroup
is a special view that can contain other views (called children.) The view group is the base class for layouts and views containers. This class also defines the [ViewGroup.LayoutParams](https://developer.android.com/reference/android/view/ViewGroup.LayoutParams)
class which serves as the base class for layouts parameters(官方注释).
ViewGroup继承于View,它的主要是用于布局,比如常用的LinearLayout,RelativeLayout等都是继承与ViewGruop,用来装其他的viewgruop,和View,并实现了起相应规则的onLayout方法。按该layout的布局特性来摆放它的子view的位置。
5. 自定义ViewGroup
自定义ViewGoup的情况比较少,主要是实现可能不常见的布局场景,比如流式布局,随机布局,等需求。自定义ViewGroup需要实现的和核心方法是
- onMeasure():确定自己的大小和它子View的大小
- onLayout():确定自己及 它子View的位置。
- ondraw():调用子view的ondraw方法,显示其内容
网友评论