android 关闭多点触控_android的多点触控问题

在Android程序中,尝试实现多点触控功能时遇到问题,当第二个手指按下屏幕时程序崩溃。错误信息显示pointerIndex超出范围。问题可能出在MotionEvent的动作处理上,需要检查ACTION_POINTER_DOWN和ACTION_MOVE等事件处理是否正确。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

relativeLayout.setOnTouchListener(new OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

// TODO Auto-generated method stub

int pointerCount = event.getPointerCount();

int pointerId = 0;

int action = event.getAction();

if (pointerCount>1) {

Toast.makeText(FlymouseTouch.this, "滑动模式", Toast.LENGTH_SHORT).show();

int moreaction = event.getActionMasked();

switch (moreaction) {

case MotionEvent.ACTION_POINTER_DOWN:

x1 = event.getX(1);

y1 = event.getY(1);

x2 = event.getX(2);

y2 = event.getY(2);

break;

case MotionEvent.ACTION_MOVE:

mx1 = event.getX(1);

my1 = event.getY(1);

mx2 = event.getX(2);

my2 = event.getY(2);

float cx1 = mx1-x1;

float cy1 = my1-y1;

float cx2 = mx2-x2;

float cy2 = my2-y2;

NetUtils.SendTouch("appkey", MotionEvent.ACTION_MOVE, cx2, cy2, 6);

break;

case MotionEvent.ACTION_POINTER_UP:

float supx = event.getX(2);

float supy = event.getY(2);

NetUtils.SendTouch("appkey", MotionEvent.ACTION_POINTER_2_UP, supx, supy, 6);

break;

}

这是代码 当我运行的时候第二个手指一放到屏幕上 程序就奔溃了 报错信息如下

04-11 16:57:43.938: E/InputEventReceiver(7604): Exception dispatching input event.

04-11 16:57:43.939: E/MessageQueue-JNI(7604): Exception in MessageQueue callback: handleReceiveCallback

04-11 16:57:43.943: E/MessageQueue-JNI(7604): java.lang.IllegalArgumentException: pointerIndex out of range

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.MotionEvent.nativeGetAxisValue(Native Method)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.MotionEvent.getX(MotionEvent.java:1981)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at com.example.shoubing.FlymouseTouch$2.onTouch(FlymouseTouch.java:108)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.View.dispatchTouchEvent(View.java:7305)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2253)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1950)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2259)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2259)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2259)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2259)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1970)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1420)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.app.Activity.dispatchTouchEvent(Activity.java:2428)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1918)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.View.dispatchPointerEvent(View.java:7506)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3654)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3579)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4849)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4809)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4965)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.os.MessageQueue.nativePollOnce(Native Method)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.os.MessageQueue.next(MessageQueue.java:128)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.os.Looper.loop(Looper.java:151)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at android.app.ActivityThread.main(ActivityThread.java:5370)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at java.lang.reflect.Method.invokeNative(Native Method)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at java.lang.reflect.Method.invoke(Method.java:525)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)

04-11 16:57:43.943: E/MessageQueue-JNI(7604): at dalvik.system.NativeStart.main(Native Method)

这是什么情况啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值