Пример #1
0
  @Override
  public boolean onTouchEvent(MotionEvent event) {
    float x = event.getX();
    float y = event.getY();

    boolean result = false;
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
      if (x >= avatarImage.getImageX()
          && x <= avatarImage.getImageX() + namesWidth + AndroidUtilities.dp(42)
          && y >= avatarImage.getImageY()
          && y <= avatarImage.getImageY() + avatarImage.getImageHeight()) {
        avatarPressed = true;
        result = true;
      } else if (x >= avatarImage.getImageX() + namesWidth + AndroidUtilities.dp(52)
          && y >= AndroidUtilities.dp(13) + namesOffset
          && x <= avatarImage.getImageX() + namesWidth + AndroidUtilities.dp(92)
          && y <= AndroidUtilities.dp(52) + namesOffset) {
        buttonPressed = true;
        result = true;
      }
      if (result) {
        startCheckLongPress();
      }
    } else {
      if (event.getAction() != MotionEvent.ACTION_MOVE) {
        cancelCheckLongPress();
      }
      if (avatarPressed) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
          avatarPressed = false;
          playSoundEffect(SoundEffectConstants.CLICK);
          if (contactUser != null) {
            if (delegate != null) {
              delegate.didPressedUserAvatar(this, contactUser);
            }
          } else {
            if (contactDelegate != null) {
              contactDelegate.didClickPhone(this);
            }
          }
        } else if (event.getAction() == MotionEvent.ACTION_CANCEL) {
          avatarPressed = false;
        } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
          if (!(x >= avatarImage.getImageX()
              && x <= avatarImage.getImageX() + namesWidth + AndroidUtilities.dp(42)
              && y >= avatarImage.getImageY()
              && y <= avatarImage.getImageY() + avatarImage.getImageHeight())) {
            avatarPressed = false;
          }
        }
      } else if (buttonPressed) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
          buttonPressed = false;
          playSoundEffect(SoundEffectConstants.CLICK);
          if (contactUser != null && contactDelegate != null) {
            contactDelegate.didClickAddButton(this, contactUser);
          }
        } else if (event.getAction() == MotionEvent.ACTION_CANCEL) {
          buttonPressed = false;
        } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
          if (!(x >= avatarImage.getImageX() + namesWidth + AndroidUtilities.dp(52)
              && y >= AndroidUtilities.dp(13) + namesOffset
              && x <= avatarImage.getImageX() + namesWidth + AndroidUtilities.dp(92)
              && y <= AndroidUtilities.dp(52) + namesOffset)) {
            buttonPressed = false;
          }
        }
      }
    }
    if (!result) {
      result = super.onTouchEvent(event);
    }

    return result;
  }