From b1d1aee3732f20f3fce609f08618bc2fce47b801 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 8 Nov 2022 09:51:06 -0400 Subject: [PATCH] Fix infinite animation loop when system animations are disabled. --- .../securesms/stories/StoryFirstTimeNavigationView.kt | 5 +++++ .../securesms/util/ContentResolverExtensions.kt | 11 +++++++++++ 2 files changed, 16 insertions(+) create mode 100644 app/src/main/java/org/thoughtcrime/securesms/util/ContentResolverExtensions.kt diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/StoryFirstTimeNavigationView.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/StoryFirstTimeNavigationView.kt index 0ab31a7de..6a17592d3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/StoryFirstTimeNavigationView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/StoryFirstTimeNavigationView.kt @@ -19,6 +19,7 @@ import com.bumptech.glide.request.target.Target import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.blurhash.BlurHash import org.thoughtcrime.securesms.mms.GlideApp +import org.thoughtcrime.securesms.util.areSystemAnimationsDisabled import org.thoughtcrime.securesms.util.visible class StoryFirstTimeNavigationView @JvmOverloads constructor( @@ -118,6 +119,10 @@ class StoryFirstTimeNavigationView @JvmOverloads constructor( } private fun startLottieAnimations() { + if (context.contentResolver.areSystemAnimationsDisabled()) { + return + } + isPlayingAnimations = true tapToAdvance.addAnimatorListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator?) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ContentResolverExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/util/ContentResolverExtensions.kt new file mode 100644 index 000000000..a3fe96971 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/util/ContentResolverExtensions.kt @@ -0,0 +1,11 @@ +package org.thoughtcrime.securesms.util + +import android.content.ContentResolver +import android.provider.Settings + +fun ContentResolver.areSystemAnimationsDisabled(): Boolean { + val durationScale = Settings.System.getFloat(this, Settings.Global.ANIMATOR_DURATION_SCALE) + val transitionScale = Settings.System.getFloat(this, Settings.Global.TRANSITION_ANIMATION_SCALE) + + return !(durationScale > 0f && transitionScale > 0f) +}