Loading Android.mk +2 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,7 @@ LOCAL_AAPT2_ONLY := true LOCAL_MODULE_TAGS := optional LOCAL_STATIC_JAVA_LIBRARIES := \ SystemUI-statsd \ SystemUISharedLib \ launcherprotosnano \ launcher_log_protos_lite Loading Loading @@ -201,6 +202,7 @@ LOCAL_USE_AAPT2 := true LOCAL_MODULE_TAGS := optional LOCAL_STATIC_JAVA_LIBRARIES := \ SystemUI-statsd \ SystemUISharedLib \ launcherprotosnano \ launcher_log_protos_lite Loading protos/launcher_atom.proto +6 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ message ItemInfo { Task task = 2; Shortcut shortcut = 3; Widget widget = 4; FolderIcon folder_icon = 9; } // When used for launch event, stores the global predictive rank optional int32 rank = 5; Loading Loading @@ -92,6 +93,11 @@ message Task { optional int32 index = 3; } // Represents folder in a closed state. message FolderIcon { optional int32 cardinality = 1; } ////////////////////////////////////////////// // Containers Loading quickstep/recents_ui_overrides/res/layout/predicted_hotseat_edu.xml +2 −2 Original line number Diff line number Diff line Loading @@ -24,13 +24,13 @@ <View android:layout_width="match_parent" android:layout_height="32dp" android:backgroundTint="?android:attr/colorAccent" android:backgroundTint="?attr/eduHalfSheetBGColor" android:background="@drawable/bottom_sheet_top_border" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/colorAccent" android:background="?attr/eduHalfSheetBGColor" android:orientation="vertical"> <TextView Loading quickstep/recents_ui_overrides/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java +0 −95 Original line number Diff line number Diff line Loading @@ -16,39 +16,24 @@ package com.android.launcher3; import static com.android.launcher3.LauncherState.BACKGROUND_APP; import static com.android.launcher3.LauncherState.HOTSEAT_ICONS; import static com.android.launcher3.LauncherState.NORMAL; import static com.android.launcher3.LauncherState.OVERVIEW; import static com.android.launcher3.anim.Interpolators.AGGRESSIVE_EASE; import static com.android.launcher3.anim.Interpolators.DEACCEL_3; import static com.android.launcher3.anim.Interpolators.LINEAR; import static com.android.launcher3.anim.Interpolators.OVERSHOOT_1_2; import static com.android.launcher3.states.StateAnimationConfig.ANIM_ALL_APPS_FADE; import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_SCALE; import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_TRANSLATE; import static com.android.launcher3.states.StateAnimationConfig.ANIM_VERTICAL_PROGRESS; import static com.android.quickstep.TaskViewUtils.findTaskViewToLaunch; import static com.android.quickstep.TaskViewUtils.getRecentsWindowAnimator; import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_OFFSET; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.content.Context; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.launcher3.LauncherState.ScaleAndTranslation; import com.android.launcher3.allapps.AllAppsTransitionController; import com.android.launcher3.anim.AnimatorPlaybackController; import com.android.launcher3.anim.Interpolators; import com.android.launcher3.anim.SpringAnimationBuilder; import com.android.launcher3.states.StateAnimationConfig; import com.android.quickstep.views.RecentsView; import com.android.quickstep.views.TaskView; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; Loading @@ -59,13 +44,6 @@ import com.android.systemui.shared.system.RemoteAnimationTargetCompat; */ public final class LauncherAppTransitionManagerImpl extends QuickstepAppTransitionManagerImpl { public static final int INDEX_SHELF_ANIM = 0; public static final int INDEX_RECENTS_FADE_ANIM = 1; public static final int INDEX_RECENTS_TRANSLATE_X_ANIM = 2; public static final int INDEX_PAUSE_TO_OVERVIEW_ANIM = 3; public static final long ATOMIC_DURATION_FROM_PAUSED_TO_OVERVIEW = 300; public LauncherAppTransitionManagerImpl(Context context) { super(context); } Loading Loading @@ -151,77 +129,4 @@ public final class LauncherAppTransitionManagerImpl extends QuickstepAppTransiti mLauncher.getStateManager().reapplyState(); }; } @Override public int getStateElementAnimationsCount() { return 4; } @Override public Animator createStateElementAnimation(int index, float... values) { switch (index) { case INDEX_SHELF_ANIM: { AllAppsTransitionController aatc = mLauncher.getAllAppsController(); Animator springAnim = aatc.createSpringAnimation(values); if ((OVERVIEW.getVisibleElements(mLauncher) & HOTSEAT_ICONS) != 0) { // Translate hotseat with the shelf until reaching overview. float overviewProgress = OVERVIEW.getVerticalProgress(mLauncher); ScaleAndTranslation sat = OVERVIEW.getHotseatScaleAndTranslation(mLauncher); float shiftRange = aatc.getShiftRange(); if (values.length == 1) { values = new float[] {aatc.getProgress(), values[0]}; } ValueAnimator hotseatAnim = ValueAnimator.ofFloat(values); hotseatAnim.addUpdateListener(anim -> { float progress = (Float) anim.getAnimatedValue(); if (progress >= overviewProgress || mLauncher.isInState(BACKGROUND_APP)) { float hotseatShift = (progress - overviewProgress) * shiftRange; mLauncher.getHotseat().setTranslationY(hotseatShift + sat.translationY); } }); hotseatAnim.setInterpolator(LINEAR); hotseatAnim.setDuration(springAnim.getDuration()); AnimatorSet anim = new AnimatorSet(); anim.play(hotseatAnim); anim.play(springAnim); return anim; } return springAnim; } case INDEX_RECENTS_FADE_ANIM: return ObjectAnimator.ofFloat(mLauncher.getOverviewPanel(), RecentsView.CONTENT_ALPHA, values); case INDEX_RECENTS_TRANSLATE_X_ANIM: { RecentsView rv = mLauncher.getOverviewPanel(); return new SpringAnimationBuilder(mLauncher) .setMinimumVisibleChange(1f / rv.getPageOffsetScale()) .setDampingRatio(0.8f) .setStiffness(250) .setValues(values) .build(rv, ADJACENT_PAGE_OFFSET); } case INDEX_PAUSE_TO_OVERVIEW_ANIM: { StateAnimationConfig config = new StateAnimationConfig(); config.duration = ATOMIC_DURATION_FROM_PAUSED_TO_OVERVIEW; config.setInterpolator(ANIM_VERTICAL_PROGRESS, OVERSHOOT_1_2); config.setInterpolator(ANIM_ALL_APPS_FADE, DEACCEL_3); if ((OVERVIEW.getVisibleElements(mLauncher) & HOTSEAT_ICONS) != 0) { config.setInterpolator(ANIM_HOTSEAT_SCALE, OVERSHOOT_1_2); config.setInterpolator(ANIM_HOTSEAT_TRANSLATE, OVERSHOOT_1_2); } LauncherStateManager stateManager = mLauncher.getStateManager(); return stateManager.createAtomicAnimation( stateManager.getCurrentStableState(), OVERVIEW, config); } default: return super.createStateElementAnimation(index, values); } } } quickstep/recents_ui_overrides/src/com/android/launcher3/appprediction/AllAppsTipView.java +10 −11 Original line number Diff line number Diff line Loading @@ -26,10 +26,10 @@ import android.os.UserManager; import com.android.launcher3.AbstractFloatingView; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherState; import com.android.launcher3.LauncherStateManager; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.allapps.FloatingHeaderView; import com.android.launcher3.statemanager.StateManager.StateListener; import com.android.launcher3.views.ArrowTipView; import com.android.systemui.shared.system.LauncherEventUtil; Loading Loading @@ -71,8 +71,7 @@ public class AllAppsTipView { public static void scheduleShowIfNeeded(Launcher launcher) { if (!hasSeenAllAppsTip(launcher)) { launcher.getStateManager().addStateListener( new LauncherStateManager.StateListener() { launcher.getStateManager().addStateListener(new StateListener<LauncherState>() { @Override public void onStateTransitionComplete(LauncherState finalState) { if (finalState == ALL_APPS) { Loading Loading
Android.mk +2 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,7 @@ LOCAL_AAPT2_ONLY := true LOCAL_MODULE_TAGS := optional LOCAL_STATIC_JAVA_LIBRARIES := \ SystemUI-statsd \ SystemUISharedLib \ launcherprotosnano \ launcher_log_protos_lite Loading Loading @@ -201,6 +202,7 @@ LOCAL_USE_AAPT2 := true LOCAL_MODULE_TAGS := optional LOCAL_STATIC_JAVA_LIBRARIES := \ SystemUI-statsd \ SystemUISharedLib \ launcherprotosnano \ launcher_log_protos_lite Loading
protos/launcher_atom.proto +6 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ message ItemInfo { Task task = 2; Shortcut shortcut = 3; Widget widget = 4; FolderIcon folder_icon = 9; } // When used for launch event, stores the global predictive rank optional int32 rank = 5; Loading Loading @@ -92,6 +93,11 @@ message Task { optional int32 index = 3; } // Represents folder in a closed state. message FolderIcon { optional int32 cardinality = 1; } ////////////////////////////////////////////// // Containers Loading
quickstep/recents_ui_overrides/res/layout/predicted_hotseat_edu.xml +2 −2 Original line number Diff line number Diff line Loading @@ -24,13 +24,13 @@ <View android:layout_width="match_parent" android:layout_height="32dp" android:backgroundTint="?android:attr/colorAccent" android:backgroundTint="?attr/eduHalfSheetBGColor" android:background="@drawable/bottom_sheet_top_border" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/colorAccent" android:background="?attr/eduHalfSheetBGColor" android:orientation="vertical"> <TextView Loading
quickstep/recents_ui_overrides/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java +0 −95 Original line number Diff line number Diff line Loading @@ -16,39 +16,24 @@ package com.android.launcher3; import static com.android.launcher3.LauncherState.BACKGROUND_APP; import static com.android.launcher3.LauncherState.HOTSEAT_ICONS; import static com.android.launcher3.LauncherState.NORMAL; import static com.android.launcher3.LauncherState.OVERVIEW; import static com.android.launcher3.anim.Interpolators.AGGRESSIVE_EASE; import static com.android.launcher3.anim.Interpolators.DEACCEL_3; import static com.android.launcher3.anim.Interpolators.LINEAR; import static com.android.launcher3.anim.Interpolators.OVERSHOOT_1_2; import static com.android.launcher3.states.StateAnimationConfig.ANIM_ALL_APPS_FADE; import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_SCALE; import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_TRANSLATE; import static com.android.launcher3.states.StateAnimationConfig.ANIM_VERTICAL_PROGRESS; import static com.android.quickstep.TaskViewUtils.findTaskViewToLaunch; import static com.android.quickstep.TaskViewUtils.getRecentsWindowAnimator; import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_OFFSET; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.content.Context; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.launcher3.LauncherState.ScaleAndTranslation; import com.android.launcher3.allapps.AllAppsTransitionController; import com.android.launcher3.anim.AnimatorPlaybackController; import com.android.launcher3.anim.Interpolators; import com.android.launcher3.anim.SpringAnimationBuilder; import com.android.launcher3.states.StateAnimationConfig; import com.android.quickstep.views.RecentsView; import com.android.quickstep.views.TaskView; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; Loading @@ -59,13 +44,6 @@ import com.android.systemui.shared.system.RemoteAnimationTargetCompat; */ public final class LauncherAppTransitionManagerImpl extends QuickstepAppTransitionManagerImpl { public static final int INDEX_SHELF_ANIM = 0; public static final int INDEX_RECENTS_FADE_ANIM = 1; public static final int INDEX_RECENTS_TRANSLATE_X_ANIM = 2; public static final int INDEX_PAUSE_TO_OVERVIEW_ANIM = 3; public static final long ATOMIC_DURATION_FROM_PAUSED_TO_OVERVIEW = 300; public LauncherAppTransitionManagerImpl(Context context) { super(context); } Loading Loading @@ -151,77 +129,4 @@ public final class LauncherAppTransitionManagerImpl extends QuickstepAppTransiti mLauncher.getStateManager().reapplyState(); }; } @Override public int getStateElementAnimationsCount() { return 4; } @Override public Animator createStateElementAnimation(int index, float... values) { switch (index) { case INDEX_SHELF_ANIM: { AllAppsTransitionController aatc = mLauncher.getAllAppsController(); Animator springAnim = aatc.createSpringAnimation(values); if ((OVERVIEW.getVisibleElements(mLauncher) & HOTSEAT_ICONS) != 0) { // Translate hotseat with the shelf until reaching overview. float overviewProgress = OVERVIEW.getVerticalProgress(mLauncher); ScaleAndTranslation sat = OVERVIEW.getHotseatScaleAndTranslation(mLauncher); float shiftRange = aatc.getShiftRange(); if (values.length == 1) { values = new float[] {aatc.getProgress(), values[0]}; } ValueAnimator hotseatAnim = ValueAnimator.ofFloat(values); hotseatAnim.addUpdateListener(anim -> { float progress = (Float) anim.getAnimatedValue(); if (progress >= overviewProgress || mLauncher.isInState(BACKGROUND_APP)) { float hotseatShift = (progress - overviewProgress) * shiftRange; mLauncher.getHotseat().setTranslationY(hotseatShift + sat.translationY); } }); hotseatAnim.setInterpolator(LINEAR); hotseatAnim.setDuration(springAnim.getDuration()); AnimatorSet anim = new AnimatorSet(); anim.play(hotseatAnim); anim.play(springAnim); return anim; } return springAnim; } case INDEX_RECENTS_FADE_ANIM: return ObjectAnimator.ofFloat(mLauncher.getOverviewPanel(), RecentsView.CONTENT_ALPHA, values); case INDEX_RECENTS_TRANSLATE_X_ANIM: { RecentsView rv = mLauncher.getOverviewPanel(); return new SpringAnimationBuilder(mLauncher) .setMinimumVisibleChange(1f / rv.getPageOffsetScale()) .setDampingRatio(0.8f) .setStiffness(250) .setValues(values) .build(rv, ADJACENT_PAGE_OFFSET); } case INDEX_PAUSE_TO_OVERVIEW_ANIM: { StateAnimationConfig config = new StateAnimationConfig(); config.duration = ATOMIC_DURATION_FROM_PAUSED_TO_OVERVIEW; config.setInterpolator(ANIM_VERTICAL_PROGRESS, OVERSHOOT_1_2); config.setInterpolator(ANIM_ALL_APPS_FADE, DEACCEL_3); if ((OVERVIEW.getVisibleElements(mLauncher) & HOTSEAT_ICONS) != 0) { config.setInterpolator(ANIM_HOTSEAT_SCALE, OVERSHOOT_1_2); config.setInterpolator(ANIM_HOTSEAT_TRANSLATE, OVERSHOOT_1_2); } LauncherStateManager stateManager = mLauncher.getStateManager(); return stateManager.createAtomicAnimation( stateManager.getCurrentStableState(), OVERVIEW, config); } default: return super.createStateElementAnimation(index, values); } } }
quickstep/recents_ui_overrides/src/com/android/launcher3/appprediction/AllAppsTipView.java +10 −11 Original line number Diff line number Diff line Loading @@ -26,10 +26,10 @@ import android.os.UserManager; import com.android.launcher3.AbstractFloatingView; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherState; import com.android.launcher3.LauncherStateManager; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.allapps.FloatingHeaderView; import com.android.launcher3.statemanager.StateManager.StateListener; import com.android.launcher3.views.ArrowTipView; import com.android.systemui.shared.system.LauncherEventUtil; Loading Loading @@ -71,8 +71,7 @@ public class AllAppsTipView { public static void scheduleShowIfNeeded(Launcher launcher) { if (!hasSeenAllAppsTip(launcher)) { launcher.getStateManager().addStateListener( new LauncherStateManager.StateListener() { launcher.getStateManager().addStateListener(new StateListener<LauncherState>() { @Override public void onStateTransitionComplete(LauncherState finalState) { if (finalState == ALL_APPS) { Loading