diff --git a/app/src/main/java/com/battlelancer/seriesguide/settings/DisplaySettings.kt b/app/src/main/java/com/battlelancer/seriesguide/settings/DisplaySettings.kt index 5c14c60cbe..b0972a1b90 100644 --- a/app/src/main/java/com/battlelancer/seriesguide/settings/DisplaySettings.kt +++ b/app/src/main/java/com/battlelancer/seriesguide/settings/DisplaySettings.kt @@ -42,6 +42,7 @@ object DisplaySettings { const val KEY_LAST_ACTIVE_MOVIES_TAB = "com.battlelancer.seriesguide.moviesActiveTab" const val KEY_DISPLAY_EXACT_DATE = "com.battlelancer.seriesguide.shows.exactdate" const val KEY_PREVENT_SPOILERS = "com.battlelancer.seriesguide.PREVENT_SPOILERS" + const val KEY_DISABLE_ANIMATIONS = "seriesguide.DISABLE_ANIMATIONS" /** * Returns true for all screens with dpi higher than [DisplayMetrics.DENSITY_HIGH]. @@ -231,4 +232,13 @@ object DisplaySettings { return PreferenceManager.getDefaultSharedPreferences(context) .getBoolean(KEY_PREVENT_SPOILERS, false) } + + /** + * If the app should disable or reduce animations to avoid sickness + * that are not covered by the Remove animations accessibility setting of the system. + */ + fun isDisableAnimations(context: Context): Boolean { + return PreferenceManager.getDefaultSharedPreferences(context) + .getBoolean(KEY_DISABLE_ANIMATIONS, false) + } } \ No newline at end of file diff --git a/app/src/main/java/com/battlelancer/seriesguide/ui/preferences/SgPreferencesFragment.kt b/app/src/main/java/com/battlelancer/seriesguide/ui/preferences/SgPreferencesFragment.kt index 84b291cd56..8a05786ea3 100644 --- a/app/src/main/java/com/battlelancer/seriesguide/ui/preferences/SgPreferencesFragment.kt +++ b/app/src/main/java/com/battlelancer/seriesguide/ui/preferences/SgPreferencesFragment.kt @@ -12,6 +12,7 @@ import android.provider.Settings import android.text.TextUtils import android.widget.Toast import androidx.appcompat.app.AppCompatActivity +import androidx.core.app.TaskStackBuilder import androidx.core.content.edit import androidx.core.content.getSystemService import androidx.preference.ListPreference @@ -34,9 +35,10 @@ import com.battlelancer.seriesguide.streaming.StreamingSearch import com.battlelancer.seriesguide.streaming.StreamingSearchConfigureDialog import com.battlelancer.seriesguide.sync.SgSyncAdapter import com.battlelancer.seriesguide.ui.SeriesGuidePreferences +import com.battlelancer.seriesguide.ui.ShowsActivity +import com.battlelancer.seriesguide.ui.dialogs.L10nDialogFragment import com.battlelancer.seriesguide.ui.dialogs.NotificationSelectionDialogFragment import com.battlelancer.seriesguide.ui.dialogs.NotificationThresholdDialogFragment -import com.battlelancer.seriesguide.ui.dialogs.L10nDialogFragment import com.battlelancer.seriesguide.ui.dialogs.TimeOffsetDialogFragment import com.battlelancer.seriesguide.util.LanguageTools import com.battlelancer.seriesguide.util.ThemeUtils @@ -114,6 +116,17 @@ class SgPreferencesFragment : PreferenceFragmentCompat(), setListPreferenceSummary(this) } + findPreference(DisplaySettings.KEY_DISABLE_ANIMATIONS)!!.apply { + setOnPreferenceClickListener { + // restart to apply animation settings, go back to this settings screen + TaskStackBuilder.create(requireActivity()) + .addNextIntent(Intent(activity, ShowsActivity::class.java)) + .addNextIntent(requireActivity().intent) + .startActivities() + true + } + } + // show currently set values for list prefs setListPreferenceSummary(findPreference(DisplaySettings.KEY_NUMBERFORMAT)) diff --git a/app/src/main/java/com/battlelancer/seriesguide/util/ThemeUtils.kt b/app/src/main/java/com/battlelancer/seriesguide/util/ThemeUtils.kt index 0a6df98d19..2ca10b0f93 100644 --- a/app/src/main/java/com/battlelancer/seriesguide/util/ThemeUtils.kt +++ b/app/src/main/java/com/battlelancer/seriesguide/util/ThemeUtils.kt @@ -5,6 +5,7 @@ import androidx.annotation.AttrRes import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.ContextCompat import com.battlelancer.seriesguide.R +import com.battlelancer.seriesguide.settings.DisplaySettings import com.battlelancer.seriesguide.ui.SeriesGuidePreferences import com.uwetrottmann.androidutils.AndroidUtils import com.uwetrottmann.seriesguide.widgets.SlidingTabLayout @@ -48,5 +49,6 @@ object ThemeUtils { setCustomTabView(R.layout.tabstrip_item_transparent, R.id.textViewTabStripItem) setSelectedIndicatorColors(getColorFromAttribute(context, R.attr.colorPrimary)) setUnderlineColor(getColorFromAttribute(context, R.attr.sgColorDivider)) + setDisableAnimations(DisplaySettings.isDisableAnimations(context)) } } \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9b0d7f6e36..b5ee14580f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -406,6 +406,7 @@ Images via Wi-Fi only To reduce data charges, don\'t download over mobile or metered networks Report errors to app developer + Reduce animations %d day before diff --git a/app/src/main/res/xml/settings_root.xml b/app/src/main/res/xml/settings_root.xml index 7b5b1608db..8ba21c01de 100644 --- a/app/src/main/res/xml/settings_root.xml +++ b/app/src/main/res/xml/settings_root.xml @@ -65,6 +65,12 @@ app:key="numberformat" app:title="@string/pref_number" /> + +