From f38fb38f26117176ba7b961e960ef5c79e28a152 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Fri, 18 Mar 2016 14:23:01 -0400 Subject: [PATCH] Switch to whitelist for animations Disable animations for all SettingsPreferenceFragments, unless they explicitly ask for them before creating their preference screens. Turn it on for all fragments using the cached removal currently. Bug: 27713314 Change-Id: I1bc14e7aeb3ee5b8ddb4f3547f472305cd312edf --- src/com/android/settings/SecuritySettings.java | 8 -------- src/com/android/settings/SettingsPreferenceFragment.java | 9 +++++++++ .../settings/bluetooth/DeviceListPreferenceFragment.java | 1 + .../settings/datausage/UnrestrictedDataAccess.java | 1 + .../android/settings/fuelgauge/PowerUsageSummary.java | 1 + src/com/android/settings/wifi/WifiSettings.java | 1 + 6 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java index 4097d046309..d3b6d5cbe6c 100644 --- a/src/com/android/settings/SecuritySettings.java +++ b/src/com/android/settings/SecuritySettings.java @@ -208,14 +208,6 @@ public class SecuritySettings extends SettingsPreferenceFragment return resid; } - @Override - public void setPreferenceScreen(PreferenceScreen preferenceScreen) { - if (!preferenceScreen.isAttached()) { - preferenceScreen.setShouldUseGeneratedIds(false); - } - super.setPreferenceScreen(preferenceScreen); - } - /** * Important! * diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java index daa2f1b7c11..e1cf58bdaa4 100644 --- a/src/com/android/settings/SettingsPreferenceFragment.java +++ b/src/com/android/settings/SettingsPreferenceFragment.java @@ -99,6 +99,7 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF private LinearLayoutManager mLayoutManager; private HighlightablePreferenceGroupAdapter mAdapter; private ArrayMap mPreferenceCache; + private boolean mAnimationAllowed; @Override public void onCreate(Bundle icicle) { @@ -304,6 +305,10 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF @Override public void setPreferenceScreen(PreferenceScreen preferenceScreen) { + if (!preferenceScreen.isAttached()) { + // Without ids generated, the RecyclerView won't animate changes to the preferences. + preferenceScreen.setShouldUseGeneratedIds(mAnimationAllowed); + } super.setPreferenceScreen(preferenceScreen); if (preferenceScreen != null) { if (mHeader != null) { @@ -369,6 +374,10 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF return mAdapter; } + protected void setAnimationAllowed(boolean animationAllowed) { + mAnimationAllowed = animationAllowed; + } + protected void cacheRemoveAllPrefs(PreferenceGroup group) { mPreferenceCache = new ArrayMap(); final int N = group.getPreferenceCount(); diff --git a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java index 1eea942076f..1a94ab0f31e 100644 --- a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java +++ b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java @@ -77,6 +77,7 @@ public abstract class DeviceListPreferenceFragment extends @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setAnimationAllowed(true); mLocalManager = Utils.getLocalBtManager(getActivity()); if (mLocalManager == null) { diff --git a/src/com/android/settings/datausage/UnrestrictedDataAccess.java b/src/com/android/settings/datausage/UnrestrictedDataAccess.java index 96fd7f8824d..e3771d32503 100644 --- a/src/com/android/settings/datausage/UnrestrictedDataAccess.java +++ b/src/com/android/settings/datausage/UnrestrictedDataAccess.java @@ -50,6 +50,7 @@ public class UnrestrictedDataAccess extends SettingsPreferenceFragment @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); + setAnimationAllowed(true); setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext())); mApplicationsState = ApplicationsState.getInstance( (Application) getContext().getApplicationContext()); diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java index 17127342056..60b6dc52bd2 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java +++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java @@ -82,6 +82,7 @@ public class PowerUsageSummary extends PowerUsageBase { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); + setAnimationAllowed(true); addPreferencesFromResource(R.xml.power_usage_summary); mHistPref = (BatteryHistoryPreference) findPreference(KEY_BATTERY_HISTORY); diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index 5541c2df832..f08455bcb4f 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -178,6 +178,7 @@ public class WifiSettings extends RestrictedSettingsFragment @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); + setAnimationAllowed(true); addPreferencesFromResource(R.xml.wifi_settings); mAddPreference = new Preference(getContext()); mAddPreference.setIcon(R.drawable.ic_menu_add_inset);