0

我想从设备屏幕顶部获取视图的距离。

我正在使用动画对我的活动做一些事情,我需要一个动画从某个点开始。这是一个 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。这个值应该是另一个特定视图与屏幕顶部的距离。

所以,基本上,我想要的是一种在屏幕上获取现有视图并确定它离屏幕顶部多远的方法。

4

2 回答 2

2

该类View有两个方便的方法,getLocationOnScreen()允许getLocationInWindow()您直接获取视图相对于整个显示的位置,而不仅仅是其父视图。这些方法会预先初始化int[]x/y 位置将被填充的位置。

方法getLeft()getTop()也可能有用,但请记住,这些方法将返回给定对象相对于其父对象的坐标,在这种情况下,这可能是您需要的,也可能不是。

于 2012-07-23T21:07:48.070 回答
0

可以通过调用 getLeft() 和 getTop() 方法来检索视图的位置。前者返回代表视图的矩形的左坐标或 X 坐标。后者返回代表视图的矩形的顶部或 Y 坐标。这些方法都返回视图相对于其父视图的位置。例如,当 getLeft() 返回 20 时,这意味着视图位于其直接父级的左边缘右侧 20 像素处。

来自Android 开发者网站

于 2012-07-23T21:01:31.697 回答