From e0693ced0d5241cbc564f8a20f930518cd66293b Mon Sep 17 00:00:00 2001 From: Phil Weaver Date: Fri, 15 Dec 2017 16:13:41 -0800 Subject: [PATCH] Add setting to disable animations Fixes: 12910879 Test: make RunSettingsRoboTests Also went to Settings -> Accessibility, turned off animations, and observed that animations stopped. Turned it back on, and the came back. Also fiddled with the granular settings in developer options, which behaved as expected. Change-Id: I189fbc4152d3cdb5ee45562c33f94c739f569c32 --- res/values/strings.xml | 2 + res/xml/accessibility_settings.xml | 4 ++ .../accessibility/AccessibilitySettings.java | 39 +++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/res/values/strings.xml b/res/values/strings.xml index 694a1b052dc..4a8e7e3ea0a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -4353,6 +4353,8 @@ Power button ends call Large mouse pointer + + Remove animations Mono audio diff --git a/res/xml/accessibility_settings.xml b/res/xml/accessibility_settings.xml index d7d2e02e4e1..b5da848eb30 100644 --- a/res/xml/accessibility_settings.xml +++ b/res/xml/accessibility_settings.xml @@ -62,6 +62,10 @@ + + mLongPressTimeoutValueToTitleMap = new HashMap<>(); private final Handler mHandler = new Handler(); @@ -194,6 +203,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements private SwitchPreference mTogglePowerButtonEndsCallPreference; private SwitchPreference mToggleLockScreenRotationPreference; private SwitchPreference mToggleLargePointerIconPreference; + private SwitchPreference mToggleDisableAnimationsPreference; private SwitchPreference mToggleMasterMonoPreference; private ListPreference mSelectLongPressTimeoutPreference; private Preference mNoServicesMessagePreference; @@ -317,6 +327,9 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements } else if (mToggleLargePointerIconPreference == preference) { handleToggleLargePointerIconPreferenceClick(); return true; + } else if (mToggleDisableAnimationsPreference == preference) { + handleToggleDisableAnimations(); + return true; } else if (mToggleMasterMonoPreference == preference) { handleToggleMasterMonoPreferenceClick(); return true; @@ -349,6 +362,14 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements mToggleLargePointerIconPreference.isChecked() ? 1 : 0); } + private void handleToggleDisableAnimations() { + String newAnimationValue = mToggleDisableAnimationsPreference.isChecked() + ? ANIMATION_OFF_VALUE : ANIMATION_ON_VALUE; + for (String animationPreference : TOGGLE_ANIMATION_TARGETS) { + Settings.Global.putString(getContentResolver(), animationPreference, newAnimationValue); + } + } + private void handleToggleMasterMonoPreferenceClick() { Settings.System.putIntForUser(getContentResolver(), Settings.System.MASTER_MONO, mToggleMasterMonoPreference.isChecked() ? 1 : 0, UserHandle.USER_CURRENT); @@ -389,6 +410,9 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements mToggleLargePointerIconPreference = (SwitchPreference) findPreference(TOGGLE_LARGE_POINTER_ICON); + mToggleDisableAnimationsPreference = + (SwitchPreference) findPreference(TOGGLE_DISABLE_ANIMATIONS); + // Master Mono mToggleMasterMonoPreference = (SwitchPreference) findPreference(TOGGLE_MASTER_MONO); @@ -620,6 +644,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements mToggleLargePointerIconPreference.setChecked(Settings.Secure.getInt(getContentResolver(), Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON, 0) != 0); + updateDisableAnimationsToggle(); + // Master mono updateMasterMono(); @@ -702,6 +728,19 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements } } + private void updateDisableAnimationsToggle() { + boolean allAnimationsDisabled = true; + for (String animationSetting : TOGGLE_ANIMATION_TARGETS) { + if (!TextUtils.equals( + Settings.Global.getString(getContentResolver(), animationSetting), + ANIMATION_OFF_VALUE)) { + allAnimationsDisabled = false; + break; + } + } + mToggleDisableAnimationsPreference.setChecked(allAnimationsDisabled); + } + private void updateMasterMono() { final boolean masterMono = Settings.System.getIntForUser( getContentResolver(), Settings.System.MASTER_MONO,