我正在尝试制作一个简单的应用程序,只是为了更好地了解如何在 Android 上使用 Touch 事件。现在,我的 Activity 只是将 ImageView 移动到屏幕上触摸的坐标(MotionEvent 的坐标)。getX()
我可以通过应用一个简单的技巧来将图像的新位置设置为一个由相对于图像位置的触摸坐标(和getY()
)组成的值来设法做到这一点。dx和dy变量负责存储这些相对值,因此触摸在图像中保持不变。
现在我想将 2 个 ImageViews 放在 Activity 中,并且只有两个 ImageViews 固定点,一旦用户将一个 ImageView 拖到另一个 ImageView 的中心,这两个图像就会切换位置,但是要正确地做到这一点,我想获得真实的坐标的图像中心。我评论了代码中使其正常工作以显示问题的部分。正如您在创建视图时的第一张图片中看到的那样,图像坐标很简单(0, 0)
,无论它在哪里(只要将初始位置定义为布局参数,如CENTER_IN_PARENT
)。
正如您在第二张图片中看到的那样,据我观察 ImageViewgetX()
并getY()
返回坐标,就好像当图像位于左上角时,图像的左上角位于 DISPLAY 的左上角的活动窗口。
我想了解为什么会发生这种情况,以及是否有人知道如何实际获取 ImageView 的坐标,该坐标可以直接与 MotionEvent 的坐标进行比较。
图片: