Пример #1
0
  @Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    if (currentMessageObject == null) {
      return;
    }

    avatarImage.draw(canvas);

    if (nameLayout != null) {
      canvas.save();
      canvas.translate(
          avatarImage.getImageX() + avatarImage.getImageWidth() + AndroidUtilities.dp(9),
          AndroidUtilities.dp(10) + namesOffset);
      namePaint.setColor(
          AvatarDrawable.getColorForId(currentMessageObject.messageOwner.media.user_id));
      nameLayout.draw(canvas);
      canvas.restore();
    }
    if (phoneLayout != null) {
      canvas.save();
      canvas.translate(
          avatarImage.getImageX() + avatarImage.getImageWidth() + AndroidUtilities.dp(9),
          AndroidUtilities.dp(31) + namesOffset);
      phoneLayout.draw(canvas);
      canvas.restore();
    }

    if (drawAddButton) {
      Drawable addContactDrawable;
      if (currentMessageObject.isOutOwner()) {
        addContactDrawable = addContactDrawableOut;
      } else {
        addContactDrawable = addContactDrawableIn;
      }
      setDrawableBounds(
          addContactDrawable,
          avatarImage.getImageX() + namesWidth + AndroidUtilities.dp(78),
          AndroidUtilities.dp(13) + namesOffset);
      addContactDrawable.draw(canvas);
    }
  }
Пример #2
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;
  }