summaryrefslogtreecommitdiffstats
path: root/quickstep
diff options
context:
space:
mode:
authorTony <twickham@google.com>2019-05-12 13:24:51 -0500
committerTony <twickham@google.com>2019-05-17 16:21:02 -0400
commit5406817028c7d4175d9e190e67e3bbd87ca4f5de (patch)
treea8742331939a64323098791440c9591546b905ef /quickstep
parent3c7f48116c7ac39494ad08bfc06d5259748bef0c (diff)
downloadandroid_packages_apps_Trebuchet-5406817028c7d4175d9e190e67e3bbd87ca4f5de.tar.gz
android_packages_apps_Trebuchet-5406817028c7d4175d9e190e67e3bbd87ca4f5de.tar.bz2
android_packages_apps_Trebuchet-5406817028c7d4175d9e190e67e3bbd87ca4f5de.zip
Add getOverviewFullscreenProgress() to LauncherState
- BackgroundAppState sets this to 1, all other states set it to 0 - QuickSwitchState extends BackgroundAppState, and calculations for fullscreen scale/translation are moved to BackgroundAppState - Move fullscreen progress logic out of WindowTransformSwipeHandler and into the launcher activity controller, which uses the new RecentsView.FULLSCREEN_PROGRESS property to animate it Bug: 130020567 Change-Id: If6265fcce3749050be354742e7d2c418d11ee9bb
Diffstat (limited to 'quickstep')
-rw-r--r--quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsViewStateController.java7
-rw-r--r--quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java38
-rw-r--r--quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java25
-rw-r--r--quickstep/recents_ui_overrides/src/com/android/quickstep/LauncherActivityControllerHelper.java15
-rw-r--r--quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java10
-rw-r--r--quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java29
6 files changed, 64 insertions, 60 deletions
diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsViewStateController.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsViewStateController.java
index c3a769887..1d36d1aae 100644
--- a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsViewStateController.java
+++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsViewStateController.java
@@ -18,6 +18,7 @@ package com.android.launcher3.uioverrides;
import static com.android.launcher3.LauncherState.RECENTS_CLEAR_ALL_BUTTON;
import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.quickstep.views.RecentsView.CONTENT_ALPHA;
+import static com.android.quickstep.views.RecentsView.FULLSCREEN_PROGRESS;
import android.animation.ValueAnimator;
import android.annotation.TargetApi;
@@ -64,6 +65,7 @@ public final class RecentsViewStateController extends
}
}
setAlphas(PropertySetter.NO_ANIM_PROPERTY_SETTER, state.getVisibleElements(mLauncher));
+ mRecentsView.setFullscreenProgress(state.getOverviewFullscreenProgress());
}
@Override
@@ -95,7 +97,10 @@ public final class RecentsViewStateController extends
builder.addOnFinishRunnable(() -> mRecentsView.setHintVisibility(1f));
}
- setAlphas(config.getPropertySetter(builder), toState.getVisibleElements(mLauncher));
+ PropertySetter propertySetter = config.getPropertySetter(builder);
+ setAlphas(propertySetter, toState.getVisibleElements(mLauncher));
+ float fullscreenProgress = toState.getOverviewFullscreenProgress();
+ propertySetter.setFloat(mRecentsView, FULLSCREEN_PROGRESS, fullscreenProgress, LINEAR);
}
private void setAlphas(PropertySetter propertySetter, int visibleElements) {
diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java
index 140e45c51..5408af359 100644
--- a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java
+++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java
@@ -17,14 +17,12 @@ package com.android.launcher3.uioverrides.states;
import static com.android.launcher3.LauncherAnimUtils.OVERVIEW_TRANSITION_MS;
-import android.os.RemoteException;
-
import com.android.launcher3.Launcher;
import com.android.launcher3.allapps.AllAppsTransitionController;
-import com.android.quickstep.RecentsModel;
+import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.quickstep.util.LayoutUtils;
import com.android.quickstep.views.RecentsView;
-import com.android.systemui.shared.recents.ISystemUiProxy;
+import com.android.quickstep.views.TaskView;
/**
* State indicating that the Launcher is behind an app
@@ -35,7 +33,11 @@ public class BackgroundAppState extends OverviewState {
FLAG_DISABLE_RESTORE | FLAG_OVERVIEW_UI | FLAG_DISABLE_ACCESSIBILITY;
public BackgroundAppState(int id) {
- super(id, OVERVIEW_TRANSITION_MS, STATE_FLAGS);
+ this(id, LauncherLogProto.ContainerType.TASKSWITCHER);
+ }
+
+ protected BackgroundAppState(int id, int logContainer) {
+ super(id, logContainer, OVERVIEW_TRANSITION_MS, STATE_FLAGS);
}
@Override
@@ -55,23 +57,17 @@ public class BackgroundAppState extends OverviewState {
public ScaleAndTranslation getOverviewScaleAndTranslation(Launcher launcher) {
// Initialize the recents view scale to what it would be when starting swipe up
RecentsView recentsView = launcher.getOverviewPanel();
- recentsView.getTaskSize(sTempRect);
- int appWidth = launcher.getDragLayer().getWidth();
- if (recentsView.shouldUseMultiWindowTaskSizeStrategy()) {
- ISystemUiProxy sysUiProxy = RecentsModel.INSTANCE.get(launcher).getSystemUiProxy();
- if (sysUiProxy != null) {
- try {
- // Try to use the actual non-minimized app width (launcher will be resized to
- // the non-minimized bounds, which differs from the app width in landscape
- // multi-window mode
- appWidth = sysUiProxy.getNonMinimizedSplitScreenSecondaryBounds().width();
- } catch (RemoteException e) {
- // Ignore, fall back to just using the drag layer width
- }
- }
+ if (recentsView.getTaskViewCount() == 0) {
+ return super.getOverviewScaleAndTranslation(launcher);
}
- float scale = (float) appWidth / sTempRect.width();
- return new ScaleAndTranslation(scale, 0f, 0f);
+ TaskView dummyTask = recentsView.getTaskViewAt(recentsView.getCurrentPage());
+ return recentsView.getTempClipAnimationHelper()
+ .getOverviewFullscreenScaleAndTranslation(dummyTask);
+ }
+
+ @Override
+ public float getOverviewFullscreenProgress() {
+ return 1;
}
@Override
diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java
index c26a1d057..ed511f5f2 100644
--- a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java
+++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java
@@ -15,11 +15,8 @@
*/
package com.android.launcher3.uioverrides.states;
-import static com.android.launcher3.LauncherAnimUtils.OVERVIEW_TRANSITION_MS;
-
import com.android.launcher3.Launcher;
import com.android.launcher3.userevent.nano.LauncherLogProto;
-import com.android.quickstep.util.ClipAnimationHelper;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.TaskView;
@@ -28,23 +25,10 @@ import com.android.quickstep.views.TaskView;
* quick switching from launcher; quick switching from an app uses WindowTransformSwipeHelper.
* @see com.android.quickstep.WindowTransformSwipeHandler.GestureEndTarget#NEW_TASK
*/
-public class QuickSwitchState extends OverviewState {
- private static final int STATE_FLAGS =
- FLAG_DISABLE_RESTORE | FLAG_OVERVIEW_UI | FLAG_DISABLE_ACCESSIBILITY;
+public class QuickSwitchState extends BackgroundAppState {
public QuickSwitchState(int id) {
- super(id, LauncherLogProto.ContainerType.APP, OVERVIEW_TRANSITION_MS, STATE_FLAGS);
- }
-
- @Override
- public ScaleAndTranslation getOverviewScaleAndTranslation(Launcher launcher) {
- RecentsView recentsView = launcher.getOverviewPanel();
- if (recentsView.getTaskViewCount() == 0) {
- return super.getOverviewScaleAndTranslation(launcher);
- }
- TaskView dummyTask = recentsView.getTaskViewAt(0);
- ClipAnimationHelper clipAnimationHelper = new ClipAnimationHelper(launcher);
- return clipAnimationHelper.getOverviewFullscreenScaleAndTranslation(dummyTask);
+ super(id, LauncherLogProto.ContainerType.APP);
}
@Override
@@ -56,11 +40,6 @@ public class QuickSwitchState extends OverviewState {
}
@Override
- public float getVerticalProgress(Launcher launcher) {
- return BACKGROUND_APP.getVerticalProgress(launcher);
- }
-
- @Override
public int getVisibleElements(Launcher launcher) {
return NONE;
}
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/LauncherActivityControllerHelper.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/LauncherActivityControllerHelper.java
index 434353d44..817d64f02 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/LauncherActivityControllerHelper.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/LauncherActivityControllerHelper.java
@@ -55,7 +55,6 @@ import com.android.launcher3.compat.AccessibilityManagerCompat;
import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.launcher3.views.FloatingIconView;
import com.android.quickstep.SysUINavigationMode.Mode;
-import com.android.quickstep.util.ClipAnimationHelper;
import com.android.quickstep.util.LayoutUtils;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.TaskView;
@@ -266,7 +265,7 @@ public final class LauncherActivityControllerHelper implements ActivityControlHe
endState.getVerticalProgress(activity));
anim.play(shiftAnim);
}
- playScaleDownAnim(anim, activity, endState);
+ playScaleDownAnim(anim, activity, fromState, endState);
anim.setDuration(transitionLength * 2);
AnimatorPlaybackController controller =
@@ -292,7 +291,7 @@ public final class LauncherActivityControllerHelper implements ActivityControlHe
/**
* Scale down recents from the center task being full screen to being in overview.
*/
- private void playScaleDownAnim(AnimatorSet anim, Launcher launcher,
+ private void playScaleDownAnim(AnimatorSet anim, Launcher launcher, LauncherState fromState,
LauncherState endState) {
RecentsView recentsView = launcher.getOverviewPanel();
TaskView v = recentsView.getTaskViewAt(recentsView.getCurrentPage());
@@ -300,19 +299,23 @@ public final class LauncherActivityControllerHelper implements ActivityControlHe
return;
}
- ClipAnimationHelper clipHelper = new ClipAnimationHelper(launcher);
LauncherState.ScaleAndTranslation fromScaleAndTranslation
- = clipHelper.getOverviewFullscreenScaleAndTranslation(v);
+ = fromState.getOverviewScaleAndTranslation(launcher);
LauncherState.ScaleAndTranslation endScaleAndTranslation
= endState.getOverviewScaleAndTranslation(launcher);
+ float fromFullscreenProgress = fromState.getOverviewFullscreenProgress();
+ float endFullscreenProgress = endState.getOverviewFullscreenProgress();
Animator scale = ObjectAnimator.ofFloat(recentsView, SCALE_PROPERTY,
fromScaleAndTranslation.scale, endScaleAndTranslation.scale);
Animator translateY = ObjectAnimator.ofFloat(recentsView, TRANSLATION_Y,
fromScaleAndTranslation.translationY, endScaleAndTranslation.translationY);
+ Animator applyFullscreenProgress = ObjectAnimator.ofFloat(recentsView,
+ RecentsView.FULLSCREEN_PROGRESS, fromFullscreenProgress, endFullscreenProgress);
scale.setInterpolator(LINEAR);
translateY.setInterpolator(LINEAR);
- anim.playTogether(scale, translateY);
+ applyFullscreenProgress.setInterpolator(LINEAR);
+ anim.playTogether(scale, translateY, applyFullscreenProgress);
}
@Override
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java
index f2260d669..0773904d0 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java
@@ -504,6 +504,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
private void setupRecentsViewUi() {
if (mContinuingLastGesture) {
+ updateSysUiFlags(mCurrentShift.value);
return;
}
mRecentsView.onGestureAnimationStart(mRunningTaskId);
@@ -677,15 +678,6 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
}
}
- // Update insets of the non-running tasks, as we might switch to them.
- int runningTaskIndex = mRecentsView == null ? -1 : mRecentsView.getRunningTaskIndex();
- if (runningTaskIndex >= 0) {
- for (int i = 0; i < mRecentsView.getTaskViewCount(); i++) {
- if (i != runningTaskIndex || !mRecentsAnimationWrapper.hasTargets()) {
- mRecentsView.getTaskViewAt(i).setFullscreenProgress(1 - mCurrentShift.value);
- }
- }
- }
if (mLauncherTransitionController == null || mLauncherTransitionController
.getAnimationPlayer().isStarted()) {
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java
index bded5ba4e..c37965aa7 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java
@@ -142,6 +142,19 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
}
};
+ public static final FloatProperty<RecentsView> FULLSCREEN_PROGRESS =
+ new FloatProperty<RecentsView>("fullscreenProgress") {
+ @Override
+ public void setValue(RecentsView recentsView, float v) {
+ recentsView.setFullscreenProgress(v);
+ }
+
+ @Override
+ public Float get(RecentsView recentsView) {
+ return recentsView.mFullscreenProgress;
+ }
+ };
+
protected RecentsAnimationWrapper mRecentsAnimationWrapper;
protected ClipAnimationHelper mClipAnimationHelper;
protected SyncRtSurfaceTransactionApplierCompat mSyncTransactionApplier;
@@ -165,6 +178,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
private final ClearAllButton mClearAllButton;
private final Rect mClearAllButtonDeadZoneRect = new Rect();
private final Rect mTaskViewDeadZoneRect = new Rect();
+ protected final ClipAnimationHelper mTempClipAnimationHelper;
private final ScrollState mScrollState = new ScrollState();
// Keeps track of the previously known visible tasks for purposes of loading/unloading task data
@@ -276,6 +290,8 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
@ViewDebug.ExportedProperty(category = "launcher")
private float mContentAlpha = 1;
+ @ViewDebug.ExportedProperty(category = "launcher")
+ private float mFullscreenProgress = 0;
// Keeps track of task id whose visual state should not be reset
private int mIgnoreResetTaskId = -1;
@@ -310,6 +326,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
mActivity = (T) BaseActivity.fromContext(context);
mModel = RecentsModel.INSTANCE.get(context);
mIdp = InvariantDeviceProfile.INSTANCE.get(context);
+ mTempClipAnimationHelper = new ClipAnimationHelper(context);
mClearAllButton = (ClearAllButton) LayoutInflater.from(context)
.inflate(R.layout.overview_clear_all_button, this, false);
@@ -598,6 +615,14 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
loadVisibleTaskData();
}
+ public void setFullscreenProgress(float fullscreenProgress) {
+ mFullscreenProgress = fullscreenProgress;
+ int taskCount = getTaskViewCount();
+ for (int i = 0; i < taskCount; i++) {
+ getTaskViewAt(i).setFullscreenProgress(mFullscreenProgress);
+ }
+ }
+
private void updateTaskStackListenerState() {
boolean handleTaskStackChanges = mOverviewStateEnabled && isAttachedToWindow()
&& getWindowVisibility() == VISIBLE;
@@ -1714,4 +1739,8 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
true /* hideOriginal */, iconLocation, false /* isOpening */, mFloatingIconView);
return mFloatingIconView;
}
+
+ public ClipAnimationHelper getTempClipAnimationHelper() {
+ return mTempClipAnimationHelper;
+ }
}