public void pause() {
   if (moveAnimation.isActive()) {
     moveAnimation.stop();
   }
   if (selectionAnimation.isActive()) {
     selectionAnimation.stop();
   }
 }
 private void startExplosion() {
   if (selectionAnimation.isActive()) {
     selectionAnimation.stop();
   }
   explosionAnimation.setSpeed(dataHolder.getConfiguration().isFastAnimation());
   explosionAnimation.init(SystemClock.elapsedRealtime());
   invalidate();
 }
 public void startMove() {
   if (selectionAnimation.isActive()) {
     selectionAnimation.stop();
   }
   moveAnimation.setSpeed(dataHolder.getConfiguration().isFastAnimation());
   moveAnimation.setStartValues(
       dataHolder.getGameEngine().getGameField().getMaxMoveX(),
       dataHolder.getGameEngine().getGameField().getMaxMoveY());
   moveAnimation.init(SystemClock.elapsedRealtime());
   invalidate();
 }
  @Override
  public boolean onTouchEvent(MotionEvent event) {
    if (moveAnimation.isActive() || explosionAnimation.isActive()) {
      return true;
    }
    if (event.getAction() != MotionEvent.ACTION_UP) {
      return true; // super.onTouchEvent(event);
    }
    int x = Math.round((event.getX() - dataHolder.getCellSize() / 2) / dataHolder.getCellSize());
    int y = Math.round((event.getY() - dataHolder.getCellSize() / 2) / dataHolder.getCellSize());
    if (x < 0
        || x >= dataHolder.getGameEngine().getGameField().getSizeX()
        || y < 0
        || y >= dataHolder.getGameEngine().getGameField().getSizeY()) {
      return super.onTouchEvent(event);
    } else {
      TouchResult results = dataHolder.getGameEngine().touchAction(x, y);
      switch (results) {
        case explode:
          startExplosion();
          break;

        case selected:
          startSelection();
          break;

        case no_action:
          if (selectionAnimation.isActive()) {
            selectionAnimation.stop();
            invalidate();
          }
          if (moveAnimation.isActive()) {
            moveAnimation.stop();
            invalidate();
          }
          break;
        default:
          break;
      }
    }
    return true;
  }