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)
这是什么情况啊
onTouch()方法中的参数MontionEvent event默认只是单点触控。你的switch的条件也不对,应该这样写
switch (event.getAction() & MotionEvent.ACTION_MASK){
}