本文主要介紹 : top, left, right, bottom, x, y, translationX, translationY.
View的位置主要由四個(gè)頂點(diǎn)的位置確定 對(duì)應(yīng)著View的四個(gè)屬性值:top, left, right, bottom.
注意 : 這些坐標(biāo)都是相對(duì)于View的父控件來說的,是相對(duì)位置
View的寬高和View坐標(biāo)的關(guān)系:
// 寬度
width = right - left;
// 高度
height = bottom - top;
獲取View的位置參數(shù):
// 相當(dāng)簡(jiǎn)單吧, getXXX()系列方法.
left = getLeft();
right = getRight();
top = getTop();
bottom = getBottom();
Android 3.0 增加了幾個(gè)額外的參數(shù): x, y, translationX, translationY
它們都是相對(duì)于父控件而言的位置.
- (x, y) : 是View左上角坐標(biāo).注意:此時(shí)的坐標(biāo)系是父控件的左上頂點(diǎn)為原點(diǎn)
- translationX : View相對(duì)于父控件在X軸上的位移量.初始值為 0.
- translationY : View相對(duì)于父控件在Y軸上的位移量.初始值為 0.
注意 : 對(duì)于translationX 和 translationY來說如果控件沒有發(fā)生移動(dòng)他們就都是0,只有View發(fā)生了位移translationX和translationY的值才會(huì)有變化.
三種位置參數(shù)關(guān)系:
x = left + translationX;
y = top + translationY;
在上面的公式中,left 和 top 的值是始終不變的. 在平移過程中x, y ,translationX, translationY 變化如下 :
注意1 : 以下變化都是通過屬性動(dòng)畫改變View的位置
注意2 : 移動(dòng)過程中top, left, bottom, right 是不會(huì)不變化的.
- 當(dāng)View向 x軸負(fù)方向移動(dòng)時(shí)(向左):
- x 減小.
- translationX 減小.
- 當(dāng)View向 x軸正方向移動(dòng)(向右):
- x 增大.
- translationX 增大
- 當(dāng)View向 y軸負(fù)方向移動(dòng)時(shí)(向上):
- y 減小.
- translationY 減小.
- 當(dāng)View向 y軸正方向移動(dòng)(向下):
- y 增大.
- translationY 增大
總結(jié) :
- 上述位置參數(shù)都是相對(duì)于父控件的而言的.
- 只有在程序運(yùn)行過程中發(fā)生位移x , y, translationX , translationY才會(huì)變化.
- 移動(dòng)過程中 top, left bottom, right不會(huì)發(fā)生變化.