Loading quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialController.java +25 −33 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import static com.android.launcher3.config.FeatureFlags.ENABLE_NEW_GESTURE_NAV_T import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.annotation.Nullable; import android.annotation.TargetApi; import android.graphics.PointF; import android.os.Build; Loading Loading @@ -147,30 +146,11 @@ final class OverviewGestureTutorialController extends SwipeUpGestureTutorialCont showFeedback(R.string.overview_gesture_feedback_swipe_too_far_from_edge); break; case OVERVIEW_GESTURE_COMPLETED: setGestureCompleted(); mTutorialFragment.releaseFeedbackAnimation(); if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) { onMotionPaused(true /*arbitrary value*/); animateTaskViewToOverview(() -> { mFakeTaskView.setVisibility(View.INVISIBLE); if(!mTutorialFragment.isLargeScreen()){ mFakePreviousTaskView.animateToFillScreen(() -> { mFakeLauncherView.setBackgroundColor( mContext.getColor( R.color.gesture_overview_tutorial_swipe_rect )); showSuccessFeedback(); }); } else { mFakeLauncherView.setBackgroundColor( mContext.getColor( R.color.gesture_overview_tutorial_swipe_rect )); showSuccessFeedback(); } }); } else { animateTaskViewToOverview(null); animateTaskViewToOverview(ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()); onMotionPaused(true /*arbitrary value*/); if (!ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) { showSuccessFeedback(); } break; Loading @@ -191,21 +171,28 @@ final class OverviewGestureTutorialController extends SwipeUpGestureTutorialCont /** * runnable executed with slight delay to ease the swipe animation after landing on overview * @param runnable */ public void animateTaskViewToOverview(@Nullable Runnable runnable) { public void animateTaskViewToOverview(boolean animateDelayedSuccessFeedback) { PendingAnimation anim = new PendingAnimation(TASK_VIEW_END_ANIMATION_DURATION_MILLIS); anim.setFloat(mTaskViewSwipeUpAnimation .getCurrentShift(), AnimatedFloat.VALUE, 1, ACCEL); if (animateDelayedSuccessFeedback) { anim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animator) { if (runnable != null) { new Handler().postDelayed(runnable, 300); new Handler().postDelayed(() -> { mFakeTaskView.setVisibility(View.INVISIBLE); if (!mTutorialFragment.isLargeScreen()) { mFakePreviousTaskView.animateToFillScreen( () -> onSuccessAnimationComplete()); } else { onSuccessAnimationComplete(); } }, TASK_VIEW_FILL_SCREEN_ANIMATION_DELAY_MILLIS); } }); } ArrayList<Animator> animators = new ArrayList<>(); Loading @@ -224,4 +211,9 @@ final class OverviewGestureTutorialController extends SwipeUpGestureTutorialCont animset.start(); mRunningWindowAnim = SwipeUpAnimationLogic.RunningWindowAnim.wrap(animset); } private void onSuccessAnimationComplete() { setLauncherViewColor(R.color.gesture_overview_tutorial_swipe_rect); showSuccessFeedback(); } } quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ public class OverviewGestureTutorialFragment extends TutorialFragment { @Override public void onAnimationStart(Animator animation) { super.onAnimationStart(animation); controller.animateTaskViewToOverview(null); controller.animateTaskViewToOverview(false); } }); Loading quickstep/src/com/android/quickstep/interaction/SwipeUpGestureTutorialController.java +1 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ abstract class SwipeUpGestureTutorialController extends TutorialController { private static final int FAKE_PREVIOUS_TASK_MARGIN = Utilities.dpToPx(24); protected static final long TASK_VIEW_END_ANIMATION_DURATION_MILLIS = 300; protected static final long TASK_VIEW_FILL_SCREEN_ANIMATION_DELAY_MILLIS = 300; private static final long HOME_SWIPE_ANIMATION_DURATION_MILLIS = 625; private static final long OVERVIEW_SWIPE_ANIMATION_DURATION_MILLIS = 1000; Loading quickstep/src/com/android/quickstep/interaction/TutorialController.java +14 −7 Original line number Diff line number Diff line Loading @@ -316,6 +316,14 @@ abstract class TutorialController implements BackGestureAttemptCallback, } } /** * Only use this when a gesture is completed, but the feedback shouldn't be shown immediately. * In that case, call this method immediately instead. */ public void setGestureCompleted() { mGestureCompleted = true; } /** * Show feedback reflecting a successful gesture attempt. **/ Loading Loading @@ -641,13 +649,17 @@ abstract class TutorialController implements BackGestureAttemptCallback, } } void setLauncherViewColor(@ColorRes int backgroundColorRes) { mFakeLauncherView.setBackgroundColor(mContext.getColor(backgroundColorRes)); } private void updateDrawables() { if (mContext != null) { mTutorialFragment.getRootView().setBackground(AppCompatResources.getDrawable( mContext, getMockWallpaperResId())); mTutorialFragment.updateFeedbackAnimation(); mFakeLauncherView.setBackgroundColor( mContext.getColor(R.color.gesture_tutorial_fake_wallpaper_color)); setLauncherViewColor(ENABLE_NEW_GESTURE_NAV_TUTORIAL.get() ? getSwipeActionColorResId() : R.color.gesture_tutorial_fake_wallpaper_color); updateFakeViewLayout(mFakeHotseatView, getMockHotseatResId()); mHotseatIconView = mFakeHotseatView.findViewById(R.id.hotseat_icon_1); updateFakeViewLayout(mFakeTaskView, getMockAppTaskLayoutResId()); Loading @@ -657,11 +669,6 @@ abstract class TutorialController implements BackGestureAttemptCallback, getMockPreviousAppTaskThumbnailColorResId())); mFakeIconView.setBackground(AppCompatResources.getDrawable( mContext, getMockAppIconResId())); if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) { mFakeLauncherView.setBackgroundColor( mContext.getColor(getSwipeActionColorResId())); } } } Loading Loading
quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialController.java +25 −33 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import static com.android.launcher3.config.FeatureFlags.ENABLE_NEW_GESTURE_NAV_T import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.annotation.Nullable; import android.annotation.TargetApi; import android.graphics.PointF; import android.os.Build; Loading Loading @@ -147,30 +146,11 @@ final class OverviewGestureTutorialController extends SwipeUpGestureTutorialCont showFeedback(R.string.overview_gesture_feedback_swipe_too_far_from_edge); break; case OVERVIEW_GESTURE_COMPLETED: setGestureCompleted(); mTutorialFragment.releaseFeedbackAnimation(); if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) { onMotionPaused(true /*arbitrary value*/); animateTaskViewToOverview(() -> { mFakeTaskView.setVisibility(View.INVISIBLE); if(!mTutorialFragment.isLargeScreen()){ mFakePreviousTaskView.animateToFillScreen(() -> { mFakeLauncherView.setBackgroundColor( mContext.getColor( R.color.gesture_overview_tutorial_swipe_rect )); showSuccessFeedback(); }); } else { mFakeLauncherView.setBackgroundColor( mContext.getColor( R.color.gesture_overview_tutorial_swipe_rect )); showSuccessFeedback(); } }); } else { animateTaskViewToOverview(null); animateTaskViewToOverview(ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()); onMotionPaused(true /*arbitrary value*/); if (!ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) { showSuccessFeedback(); } break; Loading @@ -191,21 +171,28 @@ final class OverviewGestureTutorialController extends SwipeUpGestureTutorialCont /** * runnable executed with slight delay to ease the swipe animation after landing on overview * @param runnable */ public void animateTaskViewToOverview(@Nullable Runnable runnable) { public void animateTaskViewToOverview(boolean animateDelayedSuccessFeedback) { PendingAnimation anim = new PendingAnimation(TASK_VIEW_END_ANIMATION_DURATION_MILLIS); anim.setFloat(mTaskViewSwipeUpAnimation .getCurrentShift(), AnimatedFloat.VALUE, 1, ACCEL); if (animateDelayedSuccessFeedback) { anim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animator) { if (runnable != null) { new Handler().postDelayed(runnable, 300); new Handler().postDelayed(() -> { mFakeTaskView.setVisibility(View.INVISIBLE); if (!mTutorialFragment.isLargeScreen()) { mFakePreviousTaskView.animateToFillScreen( () -> onSuccessAnimationComplete()); } else { onSuccessAnimationComplete(); } }, TASK_VIEW_FILL_SCREEN_ANIMATION_DELAY_MILLIS); } }); } ArrayList<Animator> animators = new ArrayList<>(); Loading @@ -224,4 +211,9 @@ final class OverviewGestureTutorialController extends SwipeUpGestureTutorialCont animset.start(); mRunningWindowAnim = SwipeUpAnimationLogic.RunningWindowAnim.wrap(animset); } private void onSuccessAnimationComplete() { setLauncherViewColor(R.color.gesture_overview_tutorial_swipe_rect); showSuccessFeedback(); } }
quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ public class OverviewGestureTutorialFragment extends TutorialFragment { @Override public void onAnimationStart(Animator animation) { super.onAnimationStart(animation); controller.animateTaskViewToOverview(null); controller.animateTaskViewToOverview(false); } }); Loading
quickstep/src/com/android/quickstep/interaction/SwipeUpGestureTutorialController.java +1 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ abstract class SwipeUpGestureTutorialController extends TutorialController { private static final int FAKE_PREVIOUS_TASK_MARGIN = Utilities.dpToPx(24); protected static final long TASK_VIEW_END_ANIMATION_DURATION_MILLIS = 300; protected static final long TASK_VIEW_FILL_SCREEN_ANIMATION_DELAY_MILLIS = 300; private static final long HOME_SWIPE_ANIMATION_DURATION_MILLIS = 625; private static final long OVERVIEW_SWIPE_ANIMATION_DURATION_MILLIS = 1000; Loading
quickstep/src/com/android/quickstep/interaction/TutorialController.java +14 −7 Original line number Diff line number Diff line Loading @@ -316,6 +316,14 @@ abstract class TutorialController implements BackGestureAttemptCallback, } } /** * Only use this when a gesture is completed, but the feedback shouldn't be shown immediately. * In that case, call this method immediately instead. */ public void setGestureCompleted() { mGestureCompleted = true; } /** * Show feedback reflecting a successful gesture attempt. **/ Loading Loading @@ -641,13 +649,17 @@ abstract class TutorialController implements BackGestureAttemptCallback, } } void setLauncherViewColor(@ColorRes int backgroundColorRes) { mFakeLauncherView.setBackgroundColor(mContext.getColor(backgroundColorRes)); } private void updateDrawables() { if (mContext != null) { mTutorialFragment.getRootView().setBackground(AppCompatResources.getDrawable( mContext, getMockWallpaperResId())); mTutorialFragment.updateFeedbackAnimation(); mFakeLauncherView.setBackgroundColor( mContext.getColor(R.color.gesture_tutorial_fake_wallpaper_color)); setLauncherViewColor(ENABLE_NEW_GESTURE_NAV_TUTORIAL.get() ? getSwipeActionColorResId() : R.color.gesture_tutorial_fake_wallpaper_color); updateFakeViewLayout(mFakeHotseatView, getMockHotseatResId()); mHotseatIconView = mFakeHotseatView.findViewById(R.id.hotseat_icon_1); updateFakeViewLayout(mFakeTaskView, getMockAppTaskLayoutResId()); Loading @@ -657,11 +669,6 @@ abstract class TutorialController implements BackGestureAttemptCallback, getMockPreviousAppTaskThumbnailColorResId())); mFakeIconView.setBackground(AppCompatResources.getDrawable( mContext, getMockAppIconResId())); if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) { mFakeLauncherView.setBackgroundColor( mContext.getColor(getSwipeActionColorResId())); } } } Loading