singletap touch détecter dans Ontouch méthode de la vue

J'avais besoin d'un singletap touch détecter dans mon affichage personnalisé du ontouch méthode. J'ai essayé d'obtenir les valeurs x et y dans les deux ACTION-BAS et de l'ACTION et dans l'ACTION, j'ai donné une condition que si les valeurs de X et Y dans ACTIONDOWN et l'ACTION sont égaux alors le prendre comme un seul robinet.

Mon code est comme suit

@Override
public boolean onTouchEvent(MotionEvent ev) {
if (!mSupportsZoom && !mSupportsPan) return false;
mScaleDetector.onTouchEvent(ev);
final int action = ev.getAction();
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN: {
final float x = ev.getX();
final float y = ev.getY();
mLastTouchX = x;  //here i get x and y values in action down
mLastTouchY = y;
mActivePointerId = ev.getPointerId(0);
break;
}
case MotionEvent.ACTION_MOVE: {
final int pointerIndex = ev.findPointerIndex(mActivePointerId);
final float x = ev.getX(pointerIndex);
final float y = ev.getY(pointerIndex);
if (mSupportsPan && !mScaleDetector.isInProgress()) {
final float dx = x - mLastTouchX;
final float dy = y - mLastTouchY;
mPosX += dx;
mPosY += dy;
//mFocusX = mPosX;
//mFocusY = mPosY;
invalidate();
}
mLastTouchX = x;
mLastTouchY = y;
break;
}
case MotionEvent.ACTION_UP: {
final float x = ev.getX();
final float y = ev.getY();
touchupX=x;   //here is get x and y values at action up
touchupY=y; 
if(mLastTouchX == touchupX && mLastTouchY == touchupY){  //my condition if both the x and y values are same .
PinchZoomPanActivity2.tapped1(this.getContext(), 100); //my method if the singletap is detected
}
else{
}
mActivePointerId = INVALID_POINTER_ID;
break;
}
case MotionEvent.ACTION_CANCEL: {
mActivePointerId = INVALID_POINTER_ID;
break;
}
case MotionEvent.ACTION_POINTER_UP: {
final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) 
>> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
final int pointerId = ev.getPointerId(pointerIndex);
if (pointerId == mActivePointerId) {
final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
mLastTouchX = ev.getX(newPointerIndex);
mLastTouchY = ev.getY(newPointerIndex);
mActivePointerId = ev.getPointerId(newPointerIndex);
}
break;
}
}
return true;
}

mais je ne peux pas le faire. Je veux dire à chaque action de ma méthode est appelée. même lorsque les valeurs de x et y deux actionup et actiondown ne sont pas les mêmes. et je pense que j'ai aussi besoin de mettre un peu de la plage à la singletap que nous touchons avec nos doigts sur l'écran. Quelqu'un peut-il me suggérer quelques façons?

  • Il ne sera jamais exactement à la même place - votre doigt va toujours se déplacer légèrement. Utiliser une gamme de check - assurez-vous que l'abs(upLoc-downLoc) < 5.
  • - je besoin pour utiliser le contrôle de portée, mais je ne comprends pas votre"abs(upLoc-downLoc)<5".
  • abs=valeur absolue. Cela signifie donc que si l'emplacement a changé en moins de 5 pixels.
InformationsquelleAutor Sandeep R | 2013-08-01