2012-07-23 110 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()可能是有用的,但请记住,这些将返回给定相对于坐标它的父母,这可能是也可能不是你在这种情况下需要的。