diff options
-rw-r--r-- | quickstep/src/com/android/launcher3/uioverrides/UiFactory.java | 9 | ||||
-rw-r--r-- | src/com/android/launcher3/allapps/DiscoveryBounce.java | 25 |
2 files changed, 32 insertions, 2 deletions
diff --git a/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java b/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java index 3aa6482d6..a9b251609 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java +++ b/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java @@ -21,7 +21,10 @@ import static com.android.launcher3.AbstractFloatingView.TYPE_HIDE_BACK_BUTTON; import static com.android.launcher3.LauncherState.ALL_APPS; import static com.android.launcher3.LauncherState.NORMAL; import static com.android.launcher3.LauncherState.OVERVIEW; +import static com.android.launcher3.allapps.DiscoveryBounce.BOUNCE_MAX_COUNT; +import static com.android.launcher3.allapps.DiscoveryBounce.HOME_BOUNCE_COUNT; import static com.android.launcher3.allapps.DiscoveryBounce.HOME_BOUNCE_SEEN; +import static com.android.launcher3.allapps.DiscoveryBounce.SHELF_BOUNCE_COUNT; import static com.android.launcher3.allapps.DiscoveryBounce.SHELF_BOUNCE_SEEN; import android.animation.AnimatorSet; @@ -136,7 +139,8 @@ public class UiFactory { LauncherState prevState = launcher.getStateManager().getLastState(); if (((swipeUpEnabled && finalState == OVERVIEW) || (!swipeUpEnabled - && finalState == ALL_APPS && prevState == NORMAL))) { + && finalState == ALL_APPS && prevState == NORMAL) || BOUNCE_MAX_COUNT <= + launcher.getSharedPrefs().getInt(HOME_BOUNCE_COUNT, 0))) { launcher.getSharedPrefs().edit().putBoolean(HOME_BOUNCE_SEEN, true).apply(); launcher.getStateManager().removeStateListener(this); } @@ -159,7 +163,8 @@ public class UiFactory { public void onStateTransitionComplete(LauncherState finalState) { LauncherState prevState = launcher.getStateManager().getLastState(); - if (finalState == ALL_APPS && prevState == OVERVIEW) { + if ((finalState == ALL_APPS && prevState == OVERVIEW) || BOUNCE_MAX_COUNT <= + launcher.getSharedPrefs().getInt(SHELF_BOUNCE_COUNT, 0)) { launcher.getSharedPrefs().edit().putBoolean(SHELF_BOUNCE_SEEN, true).apply(); launcher.getStateManager().removeStateListener(this); } diff --git a/src/com/android/launcher3/allapps/DiscoveryBounce.java b/src/com/android/launcher3/allapps/DiscoveryBounce.java index 76b25655c..7467119b5 100644 --- a/src/com/android/launcher3/allapps/DiscoveryBounce.java +++ b/src/com/android/launcher3/allapps/DiscoveryBounce.java @@ -25,6 +25,7 @@ import android.animation.Animator; import android.animation.AnimatorInflater; import android.animation.AnimatorListenerAdapter; import android.app.ActivityManager; +import android.content.SharedPreferences; import android.os.Handler; import android.view.MotionEvent; @@ -43,6 +44,10 @@ public class DiscoveryBounce extends AbstractFloatingView { public static final String HOME_BOUNCE_SEEN = "launcher.apps_view_shown"; public static final String SHELF_BOUNCE_SEEN = "launcher.shelf_bounce_seen"; + public static final String HOME_BOUNCE_COUNT = "launcher.home_bounce_count"; + public static final String SHELF_BOUNCE_COUNT = "launcher.shelf_bounce_count"; + + public static final int BOUNCE_MAX_COUNT = 3; private final Launcher mLauncher; private final Animator mDiscoBounceAnimation; @@ -137,6 +142,7 @@ public class DiscoveryBounce extends AbstractFloatingView { new Handler().postDelayed(() -> showForHomeIfNeeded(launcher, false), DELAY_MS); return; } + incrementHomeBounceCount(launcher); new DiscoveryBounce(launcher, 0).show(HOTSEAT); } @@ -165,6 +171,7 @@ public class DiscoveryBounce extends AbstractFloatingView { // TODO: Move these checks to the top and call this method after invalidate handler. return; } + incrementShelfBounceCount(launcher); new DiscoveryBounce(launcher, (1 - OVERVIEW.getVerticalProgress(launcher))) .show(PREDICTION); @@ -197,4 +204,22 @@ public class DiscoveryBounce extends AbstractFloatingView { PersonalWorkSlidingTabStrip.KEY_SHOWED_PEEK_WORK_TAB, false) && UserManagerCompat.getInstance(launcher).hasWorkProfile(); } + + private static void incrementShelfBounceCount(Launcher launcher) { + SharedPreferences sharedPrefs = launcher.getSharedPrefs(); + int count = sharedPrefs.getInt(SHELF_BOUNCE_COUNT, 0); + if (count > BOUNCE_MAX_COUNT) { + return; + } + sharedPrefs.edit().putInt(SHELF_BOUNCE_COUNT, count + 1).apply(); + } + + private static void incrementHomeBounceCount(Launcher launcher) { + SharedPreferences sharedPrefs = launcher.getSharedPrefs(); + int count = sharedPrefs.getInt(HOME_BOUNCE_COUNT, 0); + if (count > BOUNCE_MAX_COUNT) { + return; + } + sharedPrefs.edit().putInt(HOME_BOUNCE_COUNT, count + 1).apply(); + } } |