【发布时间】:2013-05-22 03:38:24
【问题描述】:
MotionEvent.getRawX/.getRawY 返回绝对坐标(即基于整个屏幕)。但是接收到 MotionEvent 的 View 可能(可能是)另一个 View 的子视图,它本身可能在屏幕上的某个偏移处,等等。
特别是,我现在正在试验一个基本应用程序,Android 菜单/工具栏(带有时钟等)在屏幕顶部可见。当我调用 .getRawX/.getRawY 时,我得到了整个显示器的准确 X/Y 坐标 - 但是如果可以有菜单,或者如果 (grand)父视图本身比屏幕小并偏离其边缘?
现在,如果我使用 .getRawX/.getRawY 的返回值重新定位视图,它们可以工作,但视图会“跳”到屏幕顶部菜单的高度,因为“由于其上方的菜单,absolute" Y 值本质上增加了父视图的垂直偏移量。因此,需要有一种通用的方法来确定父视图在屏幕的绝对坐标中的位置,以便在用于重新定位相关视图之前可以调整原始 X/Y 值。
我不想发布代码,因为它基本上与此网站和许多其他网站上的“通过触摸移动视图”的所有其他示例重复。我没有要查找的错误...我正在寻找将 MotionEvent 的绝对坐标与任何未以 100% 全屏运行的应用程序的相对坐标相关联的方法。
【问题讨论】:
标签: android graphics view coordinates move