在安卓屏幕上检测触摸位置是如何工作的?

5
我们可以使用以下函数获取屏幕上触摸位置的坐标:
public boolean onTouchEvent(MotionEvent event){
    float x_forOnTouch = event.getX();
    float y_forOnTouch = event.getY();  
getX()getY()函数返回的是什么?它们返回像素值吗?当手指触摸屏幕位置时,可能会触摸到多个像素。那么这个函数到底返回什么呢?
假设在我用手指触摸的区域中,屏幕上有多个像素,如下图所示: enter image description here 假设我需要点击并拖动像素1的点,但我的手指触摸的区域覆盖了像素1和2。我该如何准确地检测出已单击的像素,以便在需要时单击和拖动像素1或2?

1
请查看此链接:http://developer.android.com/reference/android/view/MotionEvent.html#getXPrecision() - JRowan
1个回答

5

好的,这个链接可能对你有所帮助:http://developer.android.com/reference/android/view/MotionEvent.html

我认为这些值是触摸的区域或范围的中心。请记住,它可以是像鼠标或笔一样的工具,因此该区域将更加精确。它有关于正在触摸的手指所在区域的方法和常量。

该链接包含了关于这个问题的许多方法,我不会复制和粘贴,因为它已经很详细地记录了,所以我认为你需要阅读它。

其中一些方法如下:

getPressure() getSize() getPointerCount() getXPrecision()

关于返回值,设备类型部分将提供大量信息。

一些相关的内容:

一个MotionEvent的内容解释取决于设备的源类别。

在源类别为SOURCE_CLASS_POINTER(例如触摸屏幕)的指针设备上,指针坐标指定了绝对位置,例如视图X/Y坐标。每个完整的手势由一系列动作事件表示,这些事件描述了指针状态转换和移动。

在源类别为SOURCE_CLASS_JOYSTICK(例如游戏手柄)的操纵杆设备上,指针坐标指定了操纵杆轴的绝对位置。操纵杆轴值被归一化到-1.0至1.0的范围内


1
他们为什么返回浮点数而不是整数,有简单的解释吗? - user13267
@user13267 我不确定你是否理解,为了确保起见。在游戏手柄设备的情况下,它将返回从-1.0到1.0的结果,因此需要使用浮点数。 - Diego C Nascimento
什么是游戏手柄设备的意思?有没有一些安卓手机是配备游戏手柄而不是触摸屏的? - user13267
这是实现,Android 不仅适用于手机。如果设备上没有手柄,则可以连接一个手柄,具体取决于设备。 - Diego C Nascimento
啊,好的,谢谢,我现在有点明白了。如果它有操纵杆,可能可以用来做这样的东西:http://www.amazon.com/MOGA-Mobile-Gaming-System-Android-Pc/dp/B0096L2SJ0。 - user13267

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接