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
This commit is contained in:
Phil Weaver
2017-12-15 16:13:41 -08:00
parent 444989ad35
commit e0693ced0d
3 changed files with 45 additions and 0 deletions

View File

@@ -4353,6 +4353,8 @@
<string name="accessibility_power_button_ends_call_prerefence_title">Power button ends call</string> <string name="accessibility_power_button_ends_call_prerefence_title">Power button ends call</string>
<!-- Title for the accessibility preference for enabling/disabling large icons for mouse/trackpad pointers. [CHAR LIMIT=35] --> <!-- Title for the accessibility preference for enabling/disabling large icons for mouse/trackpad pointers. [CHAR LIMIT=35] -->
<string name="accessibility_toggle_large_pointer_icon_title">Large mouse pointer</string> <string name="accessibility_toggle_large_pointer_icon_title">Large mouse pointer</string>
<!-- Title for the accessibility preference for disabling animations. [CHAR LIMIT=35] -->
<string name="accessibility_disable_animations">Remove animations</string>
<!-- Title for the accessibility preference for master mono. [CHAR LIMIT=35] --> <!-- Title for the accessibility preference for master mono. [CHAR LIMIT=35] -->
<string name="accessibility_toggle_master_mono_title">Mono audio</string> <string name="accessibility_toggle_master_mono_title">Mono audio</string>
<!-- Summary for the accessibility preference for master mono. [CHAR LIMIT=50] --> <!-- Summary for the accessibility preference for master mono. [CHAR LIMIT=50] -->

View File

@@ -62,6 +62,10 @@
<SwitchPreference <SwitchPreference
android:key="toggle_large_pointer_icon" android:key="toggle_large_pointer_icon"
android:title="@string/accessibility_toggle_large_pointer_icon_title" /> android:title="@string/accessibility_toggle_large_pointer_icon_title" />
<SwitchPreference
android:key="toggle_disable_animations"
android:title="@string/accessibility_disable_animations" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory <PreferenceCategory

View File

@@ -97,6 +97,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
"toggle_lock_screen_rotation_preference"; "toggle_lock_screen_rotation_preference";
private static final String TOGGLE_LARGE_POINTER_ICON = private static final String TOGGLE_LARGE_POINTER_ICON =
"toggle_large_pointer_icon"; "toggle_large_pointer_icon";
private static final String TOGGLE_DISABLE_ANIMATIONS = "toggle_disable_animations";
private static final String TOGGLE_MASTER_MONO = private static final String TOGGLE_MASTER_MONO =
"toggle_master_mono"; "toggle_master_mono";
private static final String SELECT_LONG_PRESS_TIMEOUT_PREFERENCE = private static final String SELECT_LONG_PRESS_TIMEOUT_PREFERENCE =
@@ -135,6 +136,14 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
// presentation. // presentation.
private static final long DELAY_UPDATE_SERVICES_MILLIS = 1000; private static final long DELAY_UPDATE_SERVICES_MILLIS = 1000;
// Settings that should be changed when toggling animations
private static final String[] TOGGLE_ANIMATION_TARGETS = {
Settings.Global.WINDOW_ANIMATION_SCALE, Settings.Global.TRANSITION_ANIMATION_SCALE,
Settings.Global.ANIMATOR_DURATION_SCALE
};
private static final String ANIMATION_ON_VALUE = "1";
private static final String ANIMATION_OFF_VALUE = "0";
private final Map<String, String> mLongPressTimeoutValueToTitleMap = new HashMap<>(); private final Map<String, String> mLongPressTimeoutValueToTitleMap = new HashMap<>();
private final Handler mHandler = new Handler(); private final Handler mHandler = new Handler();
@@ -194,6 +203,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
private SwitchPreference mTogglePowerButtonEndsCallPreference; private SwitchPreference mTogglePowerButtonEndsCallPreference;
private SwitchPreference mToggleLockScreenRotationPreference; private SwitchPreference mToggleLockScreenRotationPreference;
private SwitchPreference mToggleLargePointerIconPreference; private SwitchPreference mToggleLargePointerIconPreference;
private SwitchPreference mToggleDisableAnimationsPreference;
private SwitchPreference mToggleMasterMonoPreference; private SwitchPreference mToggleMasterMonoPreference;
private ListPreference mSelectLongPressTimeoutPreference; private ListPreference mSelectLongPressTimeoutPreference;
private Preference mNoServicesMessagePreference; private Preference mNoServicesMessagePreference;
@@ -317,6 +327,9 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
} else if (mToggleLargePointerIconPreference == preference) { } else if (mToggleLargePointerIconPreference == preference) {
handleToggleLargePointerIconPreferenceClick(); handleToggleLargePointerIconPreferenceClick();
return true; return true;
} else if (mToggleDisableAnimationsPreference == preference) {
handleToggleDisableAnimations();
return true;
} else if (mToggleMasterMonoPreference == preference) { } else if (mToggleMasterMonoPreference == preference) {
handleToggleMasterMonoPreferenceClick(); handleToggleMasterMonoPreferenceClick();
return true; return true;
@@ -349,6 +362,14 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
mToggleLargePointerIconPreference.isChecked() ? 1 : 0); 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() { private void handleToggleMasterMonoPreferenceClick() {
Settings.System.putIntForUser(getContentResolver(), Settings.System.MASTER_MONO, Settings.System.putIntForUser(getContentResolver(), Settings.System.MASTER_MONO,
mToggleMasterMonoPreference.isChecked() ? 1 : 0, UserHandle.USER_CURRENT); mToggleMasterMonoPreference.isChecked() ? 1 : 0, UserHandle.USER_CURRENT);
@@ -389,6 +410,9 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
mToggleLargePointerIconPreference = mToggleLargePointerIconPreference =
(SwitchPreference) findPreference(TOGGLE_LARGE_POINTER_ICON); (SwitchPreference) findPreference(TOGGLE_LARGE_POINTER_ICON);
mToggleDisableAnimationsPreference =
(SwitchPreference) findPreference(TOGGLE_DISABLE_ANIMATIONS);
// Master Mono // Master Mono
mToggleMasterMonoPreference = mToggleMasterMonoPreference =
(SwitchPreference) findPreference(TOGGLE_MASTER_MONO); (SwitchPreference) findPreference(TOGGLE_MASTER_MONO);
@@ -620,6 +644,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
mToggleLargePointerIconPreference.setChecked(Settings.Secure.getInt(getContentResolver(), mToggleLargePointerIconPreference.setChecked(Settings.Secure.getInt(getContentResolver(),
Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON, 0) != 0); Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON, 0) != 0);
updateDisableAnimationsToggle();
// Master mono // Master mono
updateMasterMono(); 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() { private void updateMasterMono() {
final boolean masterMono = Settings.System.getIntForUser( final boolean masterMono = Settings.System.getIntForUser(
getContentResolver(), Settings.System.MASTER_MONO, getContentResolver(), Settings.System.MASTER_MONO,