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
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 4097d04..d3b6d5c 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -208,14 +208,6 @@
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 daa2f1b..e1cf58b 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -99,6 +99,7 @@
private LinearLayoutManager mLayoutManager;
private HighlightablePreferenceGroupAdapter mAdapter;
private ArrayMap<String, Preference> mPreferenceCache;
+ private boolean mAnimationAllowed;
@Override
public void onCreate(Bundle icicle) {
@@ -304,6 +305,10 @@
@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 @@
return mAdapter;
}
+ protected void setAnimationAllowed(boolean animationAllowed) {
+ mAnimationAllowed = animationAllowed;
+ }
+
protected void cacheRemoveAllPrefs(PreferenceGroup group) {
mPreferenceCache = new ArrayMap<String, Preference>();
final int N = group.getPreferenceCount();
diff --git a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
index 1eea942..1a94ab0 100644
--- a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
+++ b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
@@ -77,6 +77,7 @@
@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 96fd7f8..e3771d3 100644
--- a/src/com/android/settings/datausage/UnrestrictedDataAccess.java
+++ b/src/com/android/settings/datausage/UnrestrictedDataAccess.java
@@ -50,6 +50,7 @@
@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 1712734..60b6dc5 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -82,6 +82,7 @@
@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 5541c2d..f08455b 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -178,6 +178,7 @@
@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);