2015-04-08 2 views
2

J'essaie juste de faire fonctionner cette fonction mais j'ai des problèmes. Quand j'appuie sur View, la méthode getPointerCount() renvoie toujours 0 pointeurs, quand je touche l'écran avec un doigt, 1. Quand je touche l'écran avec deux doigts ou plus, c'est toujours le retour 1. Avez-vous des idées?Pourquoi la méthode onTouchEvent getPointerCount() renvoie-t-elle toujours 1?

j'ai essayer de ce code,

@Override 
    public boolean onTouch(View view, MotionEvent me) { 
     // No dragging during animation at the moment. 
     // TODO: Stop animation on touch event and return to drag mode. 
     if (me.getPointerCount() >= 2) { 
      mAnimate = false; 
      mEnableTouchPressure = false; 
      mRenderLeftPage = false; 
      startCurl(CURL_NONE); 
      mCurlState = CURL_NONE; 
      mPageRight.setFlipTexture(false); 
      mPageLeft.setFlipTexture(false); 
      return false; 
     } else { 
      if (me.getAction() == MotionEvent.ACTION_DOWN) { 
       Log.e("TAG_EVENT", me.getPointerCount() + ""); 
      } else { 
       Log.e("TAG_EVENT - 2", me.getPointerCount() + ""); 
      } 
     } 
} 

Répondre

0

Je pense est parce que vous devez retourner vrai pour à traiter l'événement tactile.

+0

Ceci ne fournit pas une réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire en dessous de son message - vous pouvez toujours commenter vos propres messages, et une fois que vous aurez suffisamment de [réputation] (http://stackoverflow.com/help/whats-reputation) vous pourrez être capable de [commenter sur n'importe quel post] (http://stackoverflow.com/help/privileges/comment). – Codexer

+0

Désolé, je suis nouveau dans SO. Ce que je voulais dire, c'est que le problème est peut-être lié au fait que la méthode onTouch ne retourne pas vrai, donc l'événement tactile n'est pas traité. À partir des documents (View.onTouch()): ** Retourne ** _True si l'écouteur a consommé l'événement, false sinon._ Donc, vous pouvez essayer de retourner true dans l'instruction else. –

1

Vous pouvez lire à propos de MotionEvent.ACTION_MASK. Pour attraper l'action de multiTouch vous pouvez utiliser le code suivant:

int action = (motionEvent.getAction() & MotionEvent.ACTION_MASK) % 5 
switch(action) { 
    case MotionEvent.ACTION_DOWN: 
     System.out.println(motionEvent.getPointerCount()); 
     break; 
}