Android多点触控获取错误的指针和或XY值

Android多点触控获取错误的指针和或XY值,第1张

概述我从mutlitouch事件中获取X和Y值时遇到问题.下面的代码显示了在触发POINTER_DOWN和POINTER_UP事件时如何获取值,但是X和Y值似乎在POINTER_UP事件中混淆/重复. @Overridepublic void onTouchEvent(MotionEvent event) {int id, pointerIndex;switch (event.getActi 我从mutlitouch事件中获取X和Y值时遇到问题.下面的代码显示了在触发POINTER_DOWN和POINTER_UP事件时如何获取值,但是X和Y值似乎在POINTER_UP事件中混淆/重复.

@OverrIDepublic voID ontouchEvent(MotionEvent event) {int ID,pointerIndex;switch (event.getAction() & MotionEvent.ACTION_MASK) {  case MotionEvent.ACTION_POINTER_DOWN:    pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK)     >> MotionEvent.ACTION_POINTER_ID_SHIFT;    ID = event.getPointerID(pointerIndex);    Log.e("Down",""+ID+" "+event.getX(ID)+" "+event.getY(ID));    break;case MotionEvent.ACTION_POINTER_UP:    pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK)     >> MotionEvent.ACTION_POINTER_ID_SHIFT;    ID = event.getPointerID(pointerIndex);    Log.e("UP",""+ID+" "+event.getX(ID)+" "+event.getY(ID));    break;}super.ontouchEvent(event);}

这通常导致以下lolcat:

E/DOWN    (25070): 0 279.60922 279.17447E/DOWN    (25070): 1 513.20044 520.3252E/DOWN    (25070): 2 422.6651 358.72418E/UP      (25070): 0 279.60922 279.17447E/UP      (25070): 1 422.6651 358.72418 E/UP      (25070): 2 422.6651 358.72418

在这里,您可以看到ID 1的XY位置错误,而是显示值ID 2.

请注意,不会调用任何ACTION_CANCEL事件.我想我使用MASKS / ANDing有点不对劲.任何帮助将非常感激!

解决方法 显然,event.getX和event.getY应该被赋予指针索引,而不是指针ID. 总结

以上是内存溢出为你收集整理的Android多点触控获取错误的指针和/或XY值全部内容,希望文章能够帮你解决Android多点触控获取错误的指针和/或XY值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1128371.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存