From 5f31f031ef530355009aafde8426eeb63b7902cc Mon Sep 17 00:00:00 2001 From: Javinator9889 Date: Tue, 30 Jun 2020 14:35:06 +0200 Subject: [PATCH] Included new settings' section for disabling animations --- app/build.gradle | 2 +- .../data/SettingsLoader.kt | 4 ++++ .../LottieAdaptedPerformanceAnimationView.kt | 15 +++++++++---- .../handwashingreminder/utils/Constants.kt | 1 + app/src/main/res/values-es/strings.xml | 5 +++++ app/src/main/res/values/strings.xml | 5 +++++ app/src/main/res/xml/preferences.xml | 22 +++++++++++++------ 7 files changed, 42 insertions(+), 12 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3bed3f6..9f45cfb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -40,7 +40,7 @@ android { applicationId "com.javinator9889.handwashingreminder" minSdkVersion 17 targetSdkVersion 29 - versionCode 132 + versionCode 133 versionName "1.2.0-${gitCommitHash}" multiDexEnabled true resConfigs "en", "es" diff --git a/app/src/main/java/com/javinator9889/handwashingreminder/data/SettingsLoader.kt b/app/src/main/java/com/javinator9889/handwashingreminder/data/SettingsLoader.kt index 8786c8d..f2608c6 100644 --- a/app/src/main/java/com/javinator9889/handwashingreminder/data/SettingsLoader.kt +++ b/app/src/main/java/com/javinator9889/handwashingreminder/data/SettingsLoader.kt @@ -312,6 +312,10 @@ class SettingsLoader( }, onChangeListener = this@with ).also { deferreds.add(it) } + setupPreferenceAsync( + Preferences.PERFORMANCE_ANIMATIONS, + Ionicons.Icon.ion_battery_low + ).also { deferreds.add(it) } deferreds.awaitAll() arePreferencesInitialized.set(true) } diff --git a/app/src/main/java/com/javinator9889/handwashingreminder/graphics/LottieAdaptedPerformanceAnimationView.kt b/app/src/main/java/com/javinator9889/handwashingreminder/graphics/LottieAdaptedPerformanceAnimationView.kt index 708d9e9..45e52c6 100644 --- a/app/src/main/java/com/javinator9889/handwashingreminder/graphics/LottieAdaptedPerformanceAnimationView.kt +++ b/app/src/main/java/com/javinator9889/handwashingreminder/graphics/LottieAdaptedPerformanceAnimationView.kt @@ -20,29 +20,36 @@ package com.javinator9889.handwashingreminder.graphics import android.content.Context import android.util.AttributeSet +import androidx.preference.PreferenceManager import com.airbnb.lottie.LottieAnimationView import com.airbnb.lottie.LottieComposition import com.airbnb.lottie.LottieOnCompositionLoadedListener +import com.javinator9889.handwashingreminder.utils.Preferences import com.javinator9889.handwashingreminder.utils.isHighPerformingDevice class LottieAdaptedPerformanceAnimationView : LottieAnimationView, LottieOnCompositionLoadedListener { - constructor(context: Context): super(context) - constructor(context: Context, attrs: AttributeSet): super(context, attrs) - constructor(context: Context, attrs: AttributeSet, attrStyle: Int): + constructor(context: Context) : super(context) + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) + constructor(context: Context, attrs: AttributeSet, attrStyle: Int) : super(context, attrs, attrStyle) + private val areAnimationsEnabled: Boolean + init { addLottieOnCompositionLoadedListener(this) enableMergePathsForKitKatAndAbove(true) setCacheComposition(true) + val preferences = PreferenceManager.getDefaultSharedPreferences(context) + areAnimationsEnabled = + preferences.getBoolean(Preferences.PERFORMANCE_ANIMATIONS, true) } override fun getDuration(): Long = if (isHighPerformingDevice()) super.getDuration() else 100L override fun onCompositionLoaded(composition: LottieComposition?) { - if (!isHighPerformingDevice()) { + if (!isHighPerformingDevice() || !areAnimationsEnabled) { setMinFrame(maxFrame.toInt()) repeatCount = 0 } diff --git a/app/src/main/java/com/javinator9889/handwashingreminder/utils/Constants.kt b/app/src/main/java/com/javinator9889/handwashingreminder/utils/Constants.kt index 8ff8004..3b6ab6f 100644 --- a/app/src/main/java/com/javinator9889/handwashingreminder/utils/Constants.kt +++ b/app/src/main/java/com/javinator9889/handwashingreminder/utils/Constants.kt @@ -43,6 +43,7 @@ object Preferences { const val DONATIONS = "donations" const val INITIAL_TUTORIAL_DONE = "app:tutorial:is_done" const val ACTIVITY_MINIMUM_TIME = "activity:gms:minimumInterval" + const val PERFORMANCE_ANIMATIONS = "app:performance:animations" } object TimeConfig { diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 563cab6..7a50a2b 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -285,4 +285,9 @@ %d minuto %d minutos + Opciones de rendimiento de la app + Deshabilitar las animaciones en la app + Actualmente, las animaciones están activadas. + Ten en cuenta que esto puede afectar tanto al rendimiento como a la batería + No se mostrará ninguna animación diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ff5966c..e55dd41 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -313,4 +313,9 @@ %d minute %d minutes + App\'s performance options + Disable app\'s animations + Currently, the app will play some animations. + Keep in mind that it can affect both performance and battery life + No animations will be played diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 4924349..f1e5a8e 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -10,24 +10,24 @@ + android:title="@string/playstore" /> + android:title="@string/github" /> + android:title="@string/linkedin" /> + android:title="@string/twitter" /> + + +