diff --git a/src/org/thoughtcrime/securesms/components/webrtc/WebRtcAnswerDeclineButton.java b/src/org/thoughtcrime/securesms/components/webrtc/WebRtcAnswerDeclineButton.java index f0f0fe5737..f4548ee4e8 100644 --- a/src/org/thoughtcrime/securesms/components/webrtc/WebRtcAnswerDeclineButton.java +++ b/src/org/thoughtcrime/securesms/components/webrtc/WebRtcAnswerDeclineButton.java @@ -7,7 +7,6 @@ import android.animation.ObjectAnimator; import android.content.Context; import android.graphics.Color; import android.os.Build; -import android.provider.Settings; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; @@ -24,6 +23,7 @@ import androidx.annotation.Nullable; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.logging.Log; +import org.thoughtcrime.securesms.util.AccessibilityUtil; import org.thoughtcrime.securesms.util.ServiceUtil; import org.thoughtcrime.securesms.util.ViewUtil; @@ -264,7 +264,7 @@ public final class WebRtcAnswerDeclineButton extends LinearLayout implements Acc } private void animateElements(int delay) { - if (areAnimationsDisabled()) return; + if (AccessibilityUtil.areAnimationsDisabled(getContext())) return; ObjectAnimator fabUp = getUpAnimation(answer); ObjectAnimator fabDown = getDownAnimation(answer); @@ -300,11 +300,6 @@ public final class WebRtcAnswerDeclineButton extends LinearLayout implements Acc animatorSet.start(); } - private boolean areAnimationsDisabled() { - return Settings.Global.getFloat(getContext().getContentResolver(), - Settings.Global.ANIMATOR_DURATION_SCALE, 1) == 0f; - } - private void resetElements() { animating = false; complete = false; diff --git a/src/org/thoughtcrime/securesms/conversation/ConversationItemSwipeCallback.java b/src/org/thoughtcrime/securesms/conversation/ConversationItemSwipeCallback.java index a01368108f..d95cefca3e 100644 --- a/src/org/thoughtcrime/securesms/conversation/ConversationItemSwipeCallback.java +++ b/src/org/thoughtcrime/securesms/conversation/ConversationItemSwipeCallback.java @@ -11,6 +11,7 @@ import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.RecyclerView; import org.thoughtcrime.securesms.database.model.MessageRecord; +import org.thoughtcrime.securesms.util.AccessibilityUtil; import org.thoughtcrime.securesms.util.ServiceUtil; class ConversationItemSwipeCallback extends ItemTouchHelper.SimpleCallback { @@ -123,6 +124,7 @@ class ConversationItemSwipeCallback extends ItemTouchHelper.SimpleCallback { case MotionEvent.ACTION_CANCEL: swipeBack = true; shouldTriggerSwipeFeedback = false; + resetProgressIfAnimationsDisabled(viewHolder); break; } return false; @@ -142,6 +144,14 @@ class ConversationItemSwipeCallback extends ItemTouchHelper.SimpleCallback { } } + private static void resetProgressIfAnimationsDisabled(RecyclerView.ViewHolder viewHolder) { + if (AccessibilityUtil.areAnimationsDisabled(viewHolder.itemView.getContext())) { + ConversationSwipeAnimationHelper.update((ConversationItem) viewHolder.itemView, + 0f, + getSignFromDirection(viewHolder.itemView)); + } + } + private boolean cannotSwipeViewHolder(@NonNull RecyclerView.ViewHolder viewHolder) { if (!(viewHolder.itemView instanceof ConversationItem)) return true; diff --git a/src/org/thoughtcrime/securesms/util/AccessibilityUtil.java b/src/org/thoughtcrime/securesms/util/AccessibilityUtil.java new file mode 100644 index 0000000000..ebebade32c --- /dev/null +++ b/src/org/thoughtcrime/securesms/util/AccessibilityUtil.java @@ -0,0 +1,14 @@ +package org.thoughtcrime.securesms.util; + +import android.content.Context; +import android.provider.Settings; + +public final class AccessibilityUtil { + + private AccessibilityUtil() { + } + + public static boolean areAnimationsDisabled(Context context) { + return Settings.Global.getFloat(context.getContentResolver(), Settings.Global.ANIMATOR_DURATION_SCALE, 1) == 0f; + } +}