Search code examples
androidtouchmotion

Limit Touchevent to one time


how can I limit the Touchevent to one/ two time(s), that means the user can only do one time a touchevent.

Here is the code from the Touchevent, I dont know how I should edit it, that the touchevent only react one or two times.

   @Override
 public boolean onTouchEvent(MotionEvent event) {
    float currentX = event.getX();
    float currentY = event.getY();
    float deltaX, deltaY;
    float scalingFactor = 15.0f / ((box.xMax > box.yMax) ? box.yMax : box.xMax);
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
    deltaX = currentX - previousX; //vorherig(previous)  - aktuell
          deltaY = currentY - previousY;
          ball.speedX += deltaX * scalingFactor;
          ball.speedY += deltaY * scalingFactor;
      break;              
    case MotionEvent.ACTION_UP:
        // Modify rotational angles according to movement

    }
    // Save current x, y
    previousX = currentX;
    previousY = currentY;
    return true;  // Event handled
 }

Solution

  • Maintain an boolean variable as below...

    boolean touchCounter = false;
    
    @Override
     public boolean onTouchEvent(MotionEvent event) {
        float currentX = event.getX();
        float currentY = event.getY();
        float deltaX, deltaY;
        float scalingFactor = 15.0f / ((box.xMax > box.yMax) ? box.yMax : box.xMax);
    
        if (touchCounter == false) {
    
            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
    
                 touchCounter = true;
    
                 deltaX = currentX - previousX; //vorherig(previous)  - aktuell
                 deltaY = currentY - previousY;
                 ball.speedX += deltaX * scalingFactor;
                 ball.speedY += deltaY * scalingFactor;
                 break;              
            case MotionEvent.ACTION_UP:
    
                 touchCounter = true;
    
                 // Modify rotational angles according to movement
                 break;
    
            }
        }
    
        // Save current x, y
        previousX = currentX;
        previousY = currentY;
        return true;  // Event handled
     }