2012-07-23 108 views
0

我希望從設備屏幕的頂部獲取視圖的距離。獲取視圖的位置

我正在使用動畫對我的Activity執行一些操作,並且我需要在某個點開始動畫。這是一個TranslateAnimation,它以百分比的形式給出了旅行的距離。

例:

Animation animation = new TranslateAnimation(
       Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, 
       Animation.RELATIVE_TO_PARENT, 0.1f, Animation.RELATIVE_TO_PARENT, 0.0f 
      ); 

上面的代碼用於動態開始在低於屏幕的頂部10%,並且向上移動,直到它與屏幕的頂部對齊的圖。

出於我的目的,值0.1f不能被硬編碼,因爲所需的確切值可能會隨着不同的設備而改變。我需要一種方法來確定我應該使用什麼動態值來代替0.1f。該值應該是從另一個特定視圖的屏幕頂部開始的距離。

所以,基本上,我想要的是一種方法來獲取屏幕上現有的視圖,並確定它距離屏幕頂端多遠。

回答

0

通過調用getLeft()和getTop()方法可以檢索視圖的位置。前者返回表示視圖的矩形的左邊或X座標。後者返回表示視圖的矩形的頂部或Y座標。這些方法都返回視圖相對於其父項的位置。例如,當getLeft()返回20時,這意味着視圖位於其直接父級左邊緣右側20個像素處。

Android developer site

2

View類有兩個方便的方法,getLocationOnScreen()getLocationInWindow(),讓您相對於直接獲得一個視圖的位置在整個顯示器,而不只是它的父視圖。該方法需要預先初始化int[]其中x/y位置將被填滿。

的方法getLeft()getTop()可能是有用的,但請記住,這些將返回給定相對於座標它的父母,這可能是也可能不是你在這種情況下需要的。