您的位置:首页 > 移动开发 > Android开发

Android View绘制机制基础(二)

2017-06-02 15:03 357 查看


什么是View?

View 是Android中的所有控件的基类,不管是简单的Button还是复杂的RelativeLayout和ListView,他们共同基类都是View。所以说,View是一种界面层的控件的一种抽象,它代表了一个控件。除了View之外,还有ViewGroup,它可以被翻译为控件组,ViewGroup内部包含了许多控件,即一组View。


在Android设计中ViewGroup也继承View,这就意味着View本身就可以是单个控件也可以是多个控件组成的一组控件,通过这种关系就形成了View树的结构。可以简单的举个例子:根据上面这个概念,我们知道,Button显然是个View,而LinearLayout不但是一个View而且还是一个ViewGroup,而ViewGroup内部可以有子View的,这个子View同样同样还可以是ViewGroup,以此类推。

如果不理解我们可以继续看图:



自定义textview

从图中右边红色区域可以看出:

TestTextView是一个View,他继承了AppCompatTextView,而AppCompatTextView继承自TextView,而TextView直接继承自View,同理我们也可以构造一个继承自ViewGroup的控件。

如图:



自定义ViewGroup


大家可以自己去尝试自定义,Android studio 中Ctrl+H可以查看自定义类的集成体系。



View的位置参数



View的位置坐标和父容器的关系

从上图中不难看出View的位置主要由它的四个顶点来决定,分别对应View的四个属性:top、left、right、bottom。top是左上角的纵坐标,left是左上角的横坐标,bottom是右下角的纵坐标,right是右下角的横坐标。值得注意的是,这些坐标都是相对于View的父容器而言的,是一种相对的坐标。


上面理解了以后,我们就很容易获取View的宽高和坐标的关系:

width = right - left


height = bottom - top


获取View的四个基本参数的方法

Left = getLeft();

Right = getRight();

Top = getTop();

Bottom = getBottom();


3.0开始View增加了几个额外的参数

x、y、translationX和translationY,其中x、y是View做上角的坐标,而translationX和translationY是View左上角角相对于父容器的偏移量。

几个参数的换算关系如下:

x = left + translationX

y = top+ translationY

在view平移过程中,top和left表示的是原始的左上角坐标,是值是不会变得,此时改变的是x、y、translationX和translationY四个参数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息