0

J'ai une minuterie que je veux démarrer en maintenant enfoncé un bouton, et réinitialiser le minuteur quand je lâche. C'était possible avec onClick mais je n'arrive pas vraiment à comprendre comment utiliser l'événement onTouch dans ce projet. Le premier extrait de code a fonctionné, mais comment implémenter le toucher au lieu du clic d'une manière asy?implémenter l'événement onTouch dans mon timerminject

@Override 

    public void onClick(View v) 
     { 
      if (!timerHasStarted) 
       { 
        countDownTimer.start(); 
        timerHasStarted = true; 
        startB.setText("Start"); 

       } 
      else 
       { 

        countDownTimer.cancel(); 
        timerHasStarted = false; 
        startB.setText("RESET"); 
       } 
     } 

 public boolean onTouch(View v, MotionEvent event) { 

     final float mouseSensitivity = 0.5f; 

     if(event.getAction()==MotionEvent.ACTION_DOWN){ 
      countDownTimer.start(); 
      timerHasStarted = true; 
     } else if(event.getAction()==MotionEvent.ACTION_UP){ 
      countDownTimer.cancel(); 
      timerHasStarted = false; 


     } 
     return timerHasStarted; } } 

public void onTouch(View v, MotionEvent event) { 

     // final float mouseSensitivity = 0.5f; 

     if(event.getAction()==MotionEvent.ACTION_DOWN){ 
      countDownTimer.start(); 
      timerHasStarted = true; 
     } else if(event.getAction()==MotionEvent.ACTION_UP){ 
      countDownTimer.cancel(); 
      timerHasStarted = false; 


     } 
    } 

Répondre

0

Assurez-vous surchargez OnTouch par addind l'annotation @Override, la deuxième mise en œuvre ne vous pas, comme OnTouch retourne toujours booléenne. Assurez-vous que vous recevez l'appel tactile et personne d'autre. Set onTouchListener de la vue de votre objet, ou d'étendre la vue avec votre propre classe et mettre en œuvre onTouchEvent

Tenez compte si vous devez vérifier que la vue est en fait le bouton mentionné

poignée également MotionEvent.CANCEL, celle arrive de temps en temps et vous voulez probablement faire quelque chose alors. MotionEvent.MOVE peut être ignoré car vous ne voulez rien faire quand cela arrive. OnTouch devrait renvoyer s'il gère ou pas l'événement, pas l'état de votre minuteur personnel.