View的位置主要由它的四个顶点来决定,分别对应于View的四个属性:top、left、right、bottom,其中top是左上角纵坐标,left是左上角横坐标,right是右下角横坐标,bottom是右下角纵坐标,View的坐标和父容器的关系如图:
很容易得出View的宽高和坐标的关系
width = right - left
height = bottom - top
如何得到View的这四个属性呢?在View的源码中它们对应于mLeft、mRigh、mTop和mBottom这四个成员变量,获取方式如下所示
Left = getLeft();
Right = getRight();
Top = getTop;
Bottom = getBottom()
从Android 3.0开始,View增加了额外的几个参数:x,y,translationX和translationY,其中x和y是View左上角的坐标,而translationX和translationY是View左上角相对父容器的偏移量。这几个参数也是相对于父容器的坐标,并且translationX和translationY的默认值是0,和View的四个基本位置参数一样,View也为它们提供了get/set方法,这几个参数的换算关系如下所示
x = left + translationX
y = top + translationY
需要注意的是,View在平移的过程中,top和left表示的是原始左上角的位置信息,其值并不会发生改变,此时发生改变的是x,y,translationX和translationY这四个参数。