本文主要介绍 : top, left, right, bottom, x, y, translationX, translationY.
View的位置主要由四个顶点的位置确定 对应着View的四个属性值:top, left, right, bottom.
注意 : 这些坐标都是相对于View的父控件来说的,是相对位置
View的宽高和View坐标的关系:
// 宽度
width = right - left;
// 高度
height = bottom - top;
获取View的位置参数:
// 相当简单吧, getXXX()系列方法.
left = getLeft();
right = getRight();
top = getTop();
bottom = getBottom();
Android 3.0 增加了几个额外的参数: x, y, translationX, translationY
它们都是相对于父控件而言的位置.
- (x, y) : 是View左上角坐标.注意:此时的坐标系是父控件的左上顶点为原点
- translationX : View相对于父控件在X轴上的位移量.初始值为 0.
- translationY : View相对于父控件在Y轴上的位移量.初始值为 0.
注意 : 对于translationX 和 translationY来说如果控件没有发生移动他们就都是0,只有View发生了位移translationX和translationY的值才会有变化.
三种位置参数关系:
x = left + translationX;
y = top + translationY;
在上面的公式中,left 和 top 的值是始终不变的. 在平移过程中x, y ,translationX, translationY 变化如下 :
注意1 : 以下变化都是通过属性动画改变View的位置
注意2 : 移动过程中top, left, bottom, right 是不会不变化的.
- 当View向 x轴负方向移动时(向左):
- x 减小.
- translationX 减小.
- 当View向 x轴正方向移动(向右):
- x 增大.
- translationX 增大
- 当View向 y轴负方向移动时(向上):
- y 减小.
- translationY 减小.
- 当View向 y轴正方向移动(向下):
- y 增大.
- translationY 增大
总结 :
- 上述位置参数都是相对于父控件的而言的.
- 只有在程序运行过程中发生位移x , y, translationX , translationY才会变化.
- 移动过程中 top, left bottom, right不会发生变化.