Fix Swipe to Reply progress reset when AnimatorDurationScale is 0.

Fixes #9051
This commit is contained in:
alex-signal 2019-09-25 10:08:10 -03:00 committed by GitHub
parent 8e332d0798
commit 14999800e2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 7 deletions

View file

@ -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;

View file

@ -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;

View file

@ -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;
}
}