Get gestures animation preview image in async loader.

When user scrolls in Gestures Settings, the textureview used for the
animation video will be destroyed if the view is scrolled outside the
screen. When the view is scrolled back in, a slight flicker is seen as
the animation video is not instantly made available on the new surface
texture. We are now retrieving the preview image in an async loader
after the preference is created, so that it will not delay the original
loading of the gestures settings page, but the preview will be made
available while we initialize the animation video in the new surface
texture.

Bug: 29790087
Change-Id: I83f4a5bc4f24b7aab4c0cc851cb524c10e74f328
This commit is contained in:
Doris Ling
2016-07-19 15:46:50 -07:00
parent 9d83a9fbbb
commit de991f457d
2 changed files with 85 additions and 16 deletions

View File

@@ -56,6 +56,10 @@ public class GestureSettings extends SettingsPreferenceFragment implements
private static final String PREF_KEY_SWIPE_DOWN_FINGERPRINT = "gesture_swipe_down_fingerprint";
private static final String DEBUG_DOZE_COMPONENT = "debug.doze.component";
private static final String ARG_SCROLL_TO_PREFERENCE = "gesture_scroll_to_preference";
private static final int PREF_ID_DOUBLE_TAP_POWER = 0;
private static final int PREF_ID_DOUBLE_TWIST = 1;
private static final int PREF_ID_PICK_UP_AND_NUDG = 2;
private static final int PREF_ID_SWIPE_DOWN_FINGERPRINT = 3;
private int mScrollPosition = -1;
private List<GesturePreference> mPreferences;
@@ -71,7 +75,7 @@ public class GestureSettings extends SettingsPreferenceFragment implements
if (isCameraDoubleTapPowerGestureAvailable(getResources())) {
int cameraDisabled = Secure.getInt(
getContentResolver(), Secure.CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED, 0);
addPreference(PREF_KEY_DOUBLE_TAP_POWER, cameraDisabled == 0);
addPreference(PREF_KEY_DOUBLE_TAP_POWER, cameraDisabled == 0, PREF_ID_DOUBLE_TAP_POWER);
} else {
removePreference(PREF_KEY_DOUBLE_TAP_POWER);
}
@@ -79,14 +83,15 @@ public class GestureSettings extends SettingsPreferenceFragment implements
// Ambient Display
if (isDozeAvailable(context)) {
int dozeEnabled = Secure.getInt(getContentResolver(), Secure.DOZE_ENABLED, 1);
addPreference(PREF_KEY_PICK_UP_AND_NUDGE, dozeEnabled != 0);
addPreference(PREF_KEY_PICK_UP_AND_NUDGE, dozeEnabled != 0, PREF_ID_DOUBLE_TWIST);
} else {
removePreference(PREF_KEY_PICK_UP_AND_NUDGE);
}
// Fingerprint slide for notifications
if (isSystemUINavigationAvailable(context)) {
addPreference(PREF_KEY_SWIPE_DOWN_FINGERPRINT, isSystemUINavigationEnabled(context));
addPreference(PREF_KEY_SWIPE_DOWN_FINGERPRINT, isSystemUINavigationEnabled(context),
PREF_ID_PICK_UP_AND_NUDG);
} else {
removePreference(PREF_KEY_SWIPE_DOWN_FINGERPRINT);
}
@@ -95,7 +100,8 @@ public class GestureSettings extends SettingsPreferenceFragment implements
if (isDoubleTwistAvailable(context)) {
int doubleTwistEnabled = Secure.getInt(
getContentResolver(), Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, 1);
addPreference(PREF_KEY_DOUBLE_TWIST, doubleTwistEnabled != 0);
addPreference(PREF_KEY_DOUBLE_TWIST, doubleTwistEnabled != 0,
PREF_ID_SWIPE_DOWN_FINGERPRINT);
} else {
removePreference(PREF_KEY_DOUBLE_TWIST);
}
@@ -211,10 +217,11 @@ public class GestureSettings extends SettingsPreferenceFragment implements
return false;
}
private void addPreference(String key, boolean enabled) {
private void addPreference(String key, boolean enabled, int id) {
GesturePreference preference = (GesturePreference) findPreference(key);
preference.setChecked(enabled);
preference.setOnPreferenceChangeListener(this);
preference.loadPreview(getLoaderManager(), id);
mPreferences.add(preference);
}