我想从设备屏幕的顶部获取视图的距离。
我正在使用动画来对我的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 :(得分:2)
View
类有两个便捷方法getLocationOnScreen()
和getLocationInWindow()
,它们允许您直接获取视图相对于整个显示的位置,而不仅仅是其父视图。这些方法采用预初始化int[]
,其中x / y位置将被填充。
方法getLeft()
和getTop()
也可能有用,但请记住,这些方法会返回给定的坐标与其父级的坐标,这可能是也可能不是您需要的坐标在这种情况下。
答案 1 :(得分:0)
可以通过调用方法getLeft()和getTop()来检索视图的位置。前者返回表示视图的矩形的左坐标或X坐标。后者返回表示视图的矩形的顶部或Y坐标。这些方法都返回视图相对于其父级的位置。例如,当getLeft()返回20时,这意味着视图位于其直接父级左边缘右侧20个像素处。