如何在Motion事件中使用多点触控?

时间:2015-11-08 06:11:24

标签: android canvas motionevent

这就是我想要实现的目标:

在下图中,屏幕上有一个白点,我想在触摸屏幕的右侧部分时将白点移动到右侧,当触摸屏幕的左侧部分时,我想移动到左侧。

enter image description here

这是我的代码:

 protected void onDraw(Canvas canvas)
{
    final Bitmap mball = ball;


    if (pressed){
 if (touch_x>canvas.getWidth()/2)
     left += 2;
 else left -= 2;
    }

    canvas.drawBitmap(mball, left, canvas.getHeight()*0.7f, null);

    invalidate();       
}

public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
final int action = event.getAction();
 int pointerIndex;

 switch (action ){
 case MotionEvent.ACTION_DOWN:

     touch_x = event.getX();
     pressed = true;
 break;

 case MotionEvent.ACTION_POINTER_DOWN:

     touch_x = event.getX(event.getActionIndex());

     pressed = true;
          break;

 case MotionEvent.ACTION_UP:
     mActivePointerId = -1;
     pressed = false;
 break;

 case MotionEvent.ACTION_CANCEL: {
     mActivePointerId = -1;
     break;
 }

}
  return pressed;
}

它不按照我希望的方式工作。当用户触摸右侧部分时,白球应向右移动,如果触摸左侧部分而不抬起右手指,则球应向左移动,反之亦然。

发生的事情是,如果屏幕的右侧部分被触摸,球会继续向右移动,当触摸左侧部分而不移除右手指时,球继续向右移动。

我也尝试过将指针用于主指针和非主指针,但仍然没有运气。

任何帮助都将不胜感激。

0 个答案:

没有答案