返回
顶部

修改密码

关于MultiTouch android开发学习

+1

-1

收藏

+1

-1

点赞0

评论0

最近在做一个 小应用, 涉及到的跟以前接触的 不太一样。 这次是 onTouchEvent 和 OnGestureListener接口的 结合, 本身继承SurfaceView...拿出来跟大家讨论一下 看看有没有更好的办法!自己定义了好多 flag, 自己总觉得有更简洁的办法。。。上码吧! 注释不多!重在意会蛤…

 最近在做一个 小应用, 涉及到的跟以前接触的 不太一样。 这次是  onTouchEvent 和 OnGestureListener接口的 结合, 本身继承SurfaceView...

拿出来跟大家讨论一下 看看有没有更好的办法!自己定义了好多 flag, 自己总觉得有更简洁的办法。。。

上码吧! 注释不多!重在意会蛤!

 

@Override
public boolean onTouchEvent(MotionEvent event) { 

  int pointerCounter = event.getPointerCount();
  int action = (event.getAction() & event.getActionMasked());
  gd.onTouchEvent(event);
  

  if( pointerCounter <= 2){

   switch (action) {
   case MotionEvent.ACTION_DOWN:
    int X1 = (int) event.getX(0);
    int Y1 = (int) event.getY(0);
    this.checkCollection(X1, Y1);
    tempForId [0] = currentBallId;
    tempForCollision [0] = currentBallId;
    Log.e(TAG, "first===getX(0)===getY(0)===>DOWN"  + X1 + ":" + Y1 + tempForCollision [0]);
    if(touched){
     longFlag = true;
     secondTouched = false;
     firstTouchenCanMove = true;
    }

    break;
   case MotionEvent.ACTION_POINTER_DOWN:
    int X2 = (int) event.getX(1);
    int Y2 = (int) event.getY(1);
    if(touched & (pointerCounter > 1) ){
     this.checkCollection(X2, Y2);
     tempForId [1] = currentBallId;
     Log.d(TAG, "second===getX(1)===getY(1)===>DOWN"  + X2  + ":" + Y2);
     secondTouched = true;
    }else{
     firstTouchenCanMove = false;
     secondTouched = false;
    }
    longFlag = false;
    break;
   case MotionEvent.ACTION_MOVE:

    if (firstTouchenCanMove) {
     X1 = (int) event.getX(0);
     Y1 = (int) event.getY(0);
     this.touchMoveBalls(tempForId [0], X1, Y1);
     this.tempMoveCollisionCheck(tempForCollision[0]);
     Log.d(TAG, "first===getX(0)===getY(0)===>MOVE" + X1 + ":" + Y1);
     if (secondTouched){
      X2 = (int) event.getX(1);
      Y2 = (int) event.getY(1);

      this.touchMoveBalls(tempForId [1], X2, Y2);
      Log.e(TAG, "second===getX(1)===getY(1)===>MOVE"  + X2 + ":" + Y2);
     }else{
      secondTouched = false;
      touched = false;
     }
    }

    longFlag = false;
    afterMoveSendPdFlag = false;
    break;
   case MotionEvent.ACTION_POINTER_UP:
    secondTouched = false;
    touched = false;
    longFlag = false;
    firstTouchenCanMove = false;
    break;
   case MotionEvent.ACTION_UP:
    secondTouched = false;
    if (firstTouchenCanMove ) {
     if(afterMoveSendPdFlag){
      if(pdSendCheckForLongTouch){
       this.sendToPd();
       Log.i(TAG, "first pointer======>up, SEND pd");
      }
     }
     touched = false;
     afterMoveSendPdFlag = true;
     longFlag = false;
     pdSendCheckForLongTouch = true;
     secondTouched = false;
     firstTouchenCanMove = false;
    }

    break;
   }// close events switch loop
  }//end of if (pointerCounter <= 2)
  return true; //return to void onTouchEvents()
}

 

 

 

@Override
public void onLongPress(MotionEvent e) {
  // TODO Auto-generated method stub
  if (longFlag){
//  Log.d(TAG, "onLongPress");
  pdSendCheckForLongTouch = false;
  Toast.makeText(this.myContext, "onLongPress", Toast.LENGTH_SHORT).show();
  }
}

扫一扫在手机打开

评论
已有0条评论
0/150
提交
热门评论
相关推荐
今日要闻
换一批
热点排行