Update editing animation.

This commit is contained in:
Michelle Tang 2024-07-18 16:36:49 -07:00 committed by Greyson Parrelli
parent fa487e1885
commit bd3ab2cc38
3 changed files with 27 additions and 19 deletions

View file

@ -1,8 +1,6 @@
package org.thoughtcrime.securesms.components; package org.thoughtcrime.securesms.components;
import android.annotation.TargetApi;
import android.content.Context; import android.content.Context;
import android.os.Build;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.animation.AlphaAnimation; import android.view.animation.AlphaAnimation;
import android.view.animation.Animation; import android.view.animation.Animation;
@ -26,9 +24,14 @@ public class HidingLinearLayout extends LinearLayout {
super(context, attrs, defStyleAttr); super(context, attrs, defStyleAttr);
} }
public void hide() { public void hide(boolean shouldAnimate) {
if (!isEnabled() || getVisibility() == GONE) return; if (!isEnabled() || getVisibility() == GONE) return;
if (!shouldAnimate) {
setVisibility(GONE);
return;
}
AnimationSet animation = new AnimationSet(true); AnimationSet animation = new AnimationSet(true);
animation.addAnimation(new ScaleAnimation(1, 0.5f, 1, 1, Animation.RELATIVE_TO_SELF, 1f, Animation.RELATIVE_TO_SELF, 0.5f)); animation.addAnimation(new ScaleAnimation(1, 0.5f, 1, 1, Animation.RELATIVE_TO_SELF, 1f, Animation.RELATIVE_TO_SELF, 0.5f));
animation.addAnimation(new AlphaAnimation(1, 0)); animation.addAnimation(new AlphaAnimation(1, 0));

View file

@ -425,6 +425,7 @@ public class InputPanel extends ConstraintLayout
} }
public void enterEditMessageMode(@NonNull RequestManager requestManager, @NonNull ConversationMessage conversationMessageToEdit, boolean fromDraft, boolean clearQuote) { public void enterEditMessageMode(@NonNull RequestManager requestManager, @NonNull ConversationMessage conversationMessageToEdit, boolean fromDraft, boolean clearQuote) {
boolean fromEditMessageMode = inEditMessageMode();
int originalHeight = composeTextContainer.getMeasuredHeight(); int originalHeight = composeTextContainer.getMeasuredHeight();
SpannableString textToEdit = conversationMessageToEdit.getDisplayBody(getContext()); SpannableString textToEdit = conversationMessageToEdit.getDisplayBody(getContext());
@ -442,15 +443,20 @@ public class InputPanel extends ConstraintLayout
} }
this.messageToEdit = conversationMessageToEdit.getMessageRecord(); this.messageToEdit = conversationMessageToEdit.getMessageRecord();
updateEditModeUi();
updateEditModeThumbnail(requestManager); updateEditModeThumbnail(requestManager);
int maxWidth = composeContainer.getWidth(); int maxWidth = composeContainer.getWidth() - mediaKeyboard.getWidth();
if (composeContainer.getLayoutParams() instanceof MarginLayoutParams) { if (!fromEditMessageMode) {
MarginLayoutParams layoutParams = (MarginLayoutParams) composeContainer.getLayoutParams(); maxWidth -= editMessageCancel.getWidth();
maxWidth -= layoutParams.leftMargin + layoutParams.rightMargin; if (editMessageCancel.getLayoutParams() instanceof MarginLayoutParams) {
MarginLayoutParams layoutParams = (MarginLayoutParams) editMessageCancel.getLayoutParams();
maxWidth -= layoutParams.leftMargin;
}
} }
composeTextContainer.measure(MeasureSpec.makeMeasureSpec(maxWidth, MeasureSpec.AT_MOST), MeasureSpec.UNSPECIFIED); composeTextContainer.measure(MeasureSpec.makeMeasureSpec(maxWidth, MeasureSpec.AT_MOST), MeasureSpec.UNSPECIFIED);
int finalHeight = (inEditMessageMode()) ? composeTextContainer.getMeasuredHeight() : composeTextContainer.getMeasuredHeight() + editMessageTitle.getMeasuredHeight(); int finalHeight = composeTextContainer.getMeasuredHeight();
if (editMessageAnimator != null) { if (editMessageAnimator != null) {
editMessageAnimator.cancel(); editMessageAnimator.cancel();
@ -461,7 +467,6 @@ public class InputPanel extends ConstraintLayout
ViewGroup.LayoutParams params = composeTextContainer.getLayoutParams(); ViewGroup.LayoutParams params = composeTextContainer.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT; params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
composeTextContainer.setLayoutParams(params); composeTextContainer.setLayoutParams(params);
updateEditModeUi();
} }
}); });
editMessageAnimator.start(); editMessageAnimator.start();

View file

@ -1746,35 +1746,35 @@ class ConversationFragment :
inputPanel.isRecordingInLockedMode -> { inputPanel.isRecordingInLockedMode -> {
buttonToggle.display(sendButton) buttonToggle.display(sendButton)
quickAttachment.show() quickAttachment.show()
inlineAttachment.hide() inlineAttachment.hide(true)
} }
inputPanel.inEditMessageMode() -> { inputPanel.inEditMessageMode() -> {
buttonToggle.display(sendEditButton) buttonToggle.display(sendEditButton)
quickAttachment.hide() quickAttachment.hide(false)
inlineAttachment.hide() inlineAttachment.hide(false)
} }
draftViewModel.voiceNoteDraft != null -> { draftViewModel.voiceNoteDraft != null -> {
buttonToggle.display(sendButton) buttonToggle.display(sendButton)
quickAttachment.hide() quickAttachment.hide(true)
inlineAttachment.hide() inlineAttachment.hide(true)
} }
composeText.text.isNullOrBlank() && !attachmentManager.isAttachmentPresent -> { composeText.text.isNullOrBlank() && !attachmentManager.isAttachmentPresent -> {
buttonToggle.display(binding.conversationInputPanel.attachButton) buttonToggle.display(binding.conversationInputPanel.attachButton)
quickAttachment.show() quickAttachment.show()
inlineAttachment.hide() inlineAttachment.hide(true)
} }
else -> { else -> {
buttonToggle.display(sendButton) buttonToggle.display(sendButton)
quickAttachment.hide() quickAttachment.hide(true)
if (!attachmentManager.isAttachmentPresent && !linkPreviewViewModel.hasLinkPreviewUi) { if (!attachmentManager.isAttachmentPresent && !linkPreviewViewModel.hasLinkPreviewUi) {
inlineAttachment.show() inlineAttachment.show()
} else { } else {
inlineAttachment.hide() inlineAttachment.hide(true)
} }
} }
} }