Merge "Removing unnecessary RemoteAnimationTargetCompat" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b9bced07c2
@@ -28,13 +28,13 @@ import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
|
||||
import androidx.annotation.BinderThread;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.UiThread;
|
||||
|
||||
import com.android.systemui.shared.system.RemoteAnimationRunnerCompat;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
@@ -82,9 +82,9 @@ public class LauncherAnimationRunner implements RemoteAnimationRunnerCompat {
|
||||
@BinderThread
|
||||
public void onAnimationStart(
|
||||
int transit,
|
||||
RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
RemoteAnimationTargetCompat[] nonAppTargets,
|
||||
RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets,
|
||||
RemoteAnimationTarget[] nonAppTargets,
|
||||
Runnable runnable) {
|
||||
Runnable r = () -> {
|
||||
finishExistingAnimation();
|
||||
@@ -101,17 +101,17 @@ public class LauncherAnimationRunner implements RemoteAnimationRunnerCompat {
|
||||
|
||||
// Called only in R platform
|
||||
@BinderThread
|
||||
public void onAnimationStart(RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets, Runnable runnable) {
|
||||
public void onAnimationStart(RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets, Runnable runnable) {
|
||||
onAnimationStart(0 /* transit */, appTargets, wallpaperTargets,
|
||||
new RemoteAnimationTargetCompat[0], runnable);
|
||||
new RemoteAnimationTarget[0], runnable);
|
||||
}
|
||||
|
||||
// Called only in Q platform
|
||||
@BinderThread
|
||||
@Deprecated
|
||||
public void onAnimationStart(RemoteAnimationTargetCompat[] appTargets, Runnable runnable) {
|
||||
onAnimationStart(appTargets, new RemoteAnimationTargetCompat[0], runnable);
|
||||
public void onAnimationStart(RemoteAnimationTarget[] appTargets, Runnable runnable) {
|
||||
onAnimationStart(appTargets, new RemoteAnimationTarget[0], runnable);
|
||||
}
|
||||
|
||||
|
||||
@@ -229,9 +229,9 @@ public class LauncherAnimationRunner implements RemoteAnimationRunnerCompat {
|
||||
* call {@link AnimationResult#setAnimation} with the target animation to be run.
|
||||
*/
|
||||
void onCreateAnimation(int transit,
|
||||
RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
RemoteAnimationTargetCompat[] nonAppTargets,
|
||||
RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets,
|
||||
RemoteAnimationTarget[] nonAppTargets,
|
||||
LauncherAnimationRunner.AnimationResult result);
|
||||
|
||||
/**
|
||||
|
||||
@@ -19,11 +19,11 @@ import android.animation.AnimatorSet;
|
||||
import android.annotation.TargetApi;
|
||||
import android.os.Build;
|
||||
import android.os.CancellationSignal;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
|
||||
import com.android.launcher3.uioverrides.QuickstepLauncher;
|
||||
import com.android.quickstep.util.ActivityInitListener;
|
||||
import com.android.quickstep.util.RemoteAnimationProvider;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import java.util.function.BiPredicate;
|
||||
|
||||
@@ -52,8 +52,8 @@ public class LauncherInitListener extends ActivityInitListener<Launcher> {
|
||||
CancellationSignal cancellationSignal = new CancellationSignal();
|
||||
appTransitionManager.setRemoteAnimationProvider(new RemoteAnimationProvider() {
|
||||
@Override
|
||||
public AnimatorSet createWindowAnimation(RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets) {
|
||||
public AnimatorSet createWindowAnimation(RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets) {
|
||||
|
||||
// On the first call clear the reference.
|
||||
cancellationSignal.cancel();
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
package com.android.launcher3;
|
||||
|
||||
import static android.provider.Settings.Secure.LAUNCHER_TASKBAR_EDUCATION_SHOWING;
|
||||
import static android.view.RemoteAnimationTarget.MODE_CLOSING;
|
||||
import static android.view.RemoteAnimationTarget.MODE_OPENING;
|
||||
import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_NONE;
|
||||
import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_SPLASH_SCREEN;
|
||||
|
||||
@@ -49,8 +51,6 @@ import static com.android.launcher3.views.FloatingIconView.getFloatingIconView;
|
||||
import static com.android.quickstep.TaskViewUtils.findTaskViewToLaunch;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.getWindowCornerRadius;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.supportsRoundedCornersOnWindows;
|
||||
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
|
||||
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_OPENING;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
@@ -81,6 +81,7 @@ import android.provider.Settings;
|
||||
import android.util.Pair;
|
||||
import android.util.Size;
|
||||
import android.view.CrossWindowBlurListeners;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.SurfaceControl;
|
||||
import android.view.View;
|
||||
import android.view.ViewRootImpl;
|
||||
@@ -135,7 +136,6 @@ import com.android.systemui.shared.system.QuickStepContract;
|
||||
import com.android.systemui.shared.system.RemoteAnimationAdapterCompat;
|
||||
import com.android.systemui.shared.system.RemoteAnimationDefinitionCompat;
|
||||
import com.android.systemui.shared.system.RemoteAnimationRunnerCompat;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
import com.android.systemui.shared.system.RemoteTransitionCompat;
|
||||
import com.android.wm.shell.startingsurface.IStartingWindowListener;
|
||||
|
||||
@@ -312,7 +312,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
* @return true if the app is launching from recents, false if it most likely is not
|
||||
*/
|
||||
protected boolean isLaunchingFromRecents(@NonNull View v,
|
||||
@Nullable RemoteAnimationTargetCompat[] targets) {
|
||||
@Nullable RemoteAnimationTarget[] targets) {
|
||||
return mLauncher.getStateManager().getState().overviewUi
|
||||
&& findTaskViewToLaunch(mLauncher.getOverviewPanel(), v, targets) != null;
|
||||
}
|
||||
@@ -326,18 +326,18 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
* @param launcherClosing true if the launcher app is closing
|
||||
*/
|
||||
protected void composeRecentsLaunchAnimator(@NonNull AnimatorSet anim, @NonNull View v,
|
||||
@NonNull RemoteAnimationTargetCompat[] appTargets,
|
||||
@NonNull RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
@NonNull RemoteAnimationTargetCompat[] nonAppTargets, boolean launcherClosing) {
|
||||
@NonNull RemoteAnimationTarget[] appTargets,
|
||||
@NonNull RemoteAnimationTarget[] wallpaperTargets,
|
||||
@NonNull RemoteAnimationTarget[] nonAppTargets, boolean launcherClosing) {
|
||||
TaskViewUtils.composeRecentsLaunchAnimator(anim, v, appTargets, wallpaperTargets,
|
||||
nonAppTargets, launcherClosing, mLauncher.getStateManager(),
|
||||
mLauncher.getOverviewPanel(), mLauncher.getDepthController());
|
||||
}
|
||||
|
||||
private boolean areAllTargetsTranslucent(@NonNull RemoteAnimationTargetCompat[] targets) {
|
||||
private boolean areAllTargetsTranslucent(@NonNull RemoteAnimationTarget[] targets) {
|
||||
boolean isAllOpeningTargetTrs = true;
|
||||
for (int i = 0; i < targets.length; i++) {
|
||||
RemoteAnimationTargetCompat target = targets[i];
|
||||
RemoteAnimationTarget target = targets[i];
|
||||
if (target.mode == MODE_OPENING) {
|
||||
isAllOpeningTargetTrs &= target.isTranslucent;
|
||||
}
|
||||
@@ -355,9 +355,9 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
* @param launcherClosing true if launcher is closing
|
||||
*/
|
||||
private void composeIconLaunchAnimator(@NonNull AnimatorSet anim, @NonNull View v,
|
||||
@NonNull RemoteAnimationTargetCompat[] appTargets,
|
||||
@NonNull RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
@NonNull RemoteAnimationTargetCompat[] nonAppTargets,
|
||||
@NonNull RemoteAnimationTarget[] appTargets,
|
||||
@NonNull RemoteAnimationTarget[] wallpaperTargets,
|
||||
@NonNull RemoteAnimationTarget[] nonAppTargets,
|
||||
boolean launcherClosing) {
|
||||
// Set the state animation first so that any state listeners are called
|
||||
// before our internal listeners.
|
||||
@@ -399,9 +399,9 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
private void composeWidgetLaunchAnimator(
|
||||
@NonNull AnimatorSet anim,
|
||||
@NonNull LauncherAppWidgetHostView v,
|
||||
@NonNull RemoteAnimationTargetCompat[] appTargets,
|
||||
@NonNull RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
@NonNull RemoteAnimationTargetCompat[] nonAppTargets) {
|
||||
@NonNull RemoteAnimationTarget[] appTargets,
|
||||
@NonNull RemoteAnimationTarget[] wallpaperTargets,
|
||||
@NonNull RemoteAnimationTarget[] nonAppTargets) {
|
||||
mLauncher.getStateManager().setCurrentAnimation(anim);
|
||||
|
||||
Rect windowTargetBounds = getWindowTargetBounds(appTargets, getRotationChange(appTargets));
|
||||
@@ -424,10 +424,10 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
* In multiwindow mode, we need to get the final size of the opening app window target to help
|
||||
* figure out where the floating view should animate to.
|
||||
*/
|
||||
private Rect getWindowTargetBounds(@NonNull RemoteAnimationTargetCompat[] appTargets,
|
||||
private Rect getWindowTargetBounds(@NonNull RemoteAnimationTarget[] appTargets,
|
||||
int rotationChange) {
|
||||
RemoteAnimationTargetCompat target = null;
|
||||
for (RemoteAnimationTargetCompat t : appTargets) {
|
||||
RemoteAnimationTarget target = null;
|
||||
for (RemoteAnimationTarget t : appTargets) {
|
||||
if (t.mode != MODE_OPENING) continue;
|
||||
target = t;
|
||||
break;
|
||||
@@ -649,9 +649,9 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
* @return Animator that controls the window of the opening targets from app icons.
|
||||
*/
|
||||
private Animator getOpeningWindowAnimators(View v,
|
||||
RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
RemoteAnimationTargetCompat[] nonAppTargets,
|
||||
RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets,
|
||||
RemoteAnimationTarget[] nonAppTargets,
|
||||
Rect windowTargetBounds, boolean appTargetsAreTranslucent, int rotationChange) {
|
||||
RectF launcherIconBounds = new RectF();
|
||||
FloatingIconView floatingView = FloatingIconView.getFloatingIconView(mLauncher, v,
|
||||
@@ -664,7 +664,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
SurfaceTransactionApplier surfaceApplier =
|
||||
new SurfaceTransactionApplier(floatingView);
|
||||
openingTargets.addReleaseCheck(surfaceApplier);
|
||||
RemoteAnimationTargetCompat navBarTarget = openingTargets.getNavBarRemoteAnimationTarget();
|
||||
RemoteAnimationTarget navBarTarget = openingTargets.getNavBarRemoteAnimationTarget();
|
||||
|
||||
int[] dragLayerBounds = new int[2];
|
||||
mDragLayer.getLocationOnScreen(dragLayerBounds);
|
||||
@@ -819,7 +819,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
SurfaceTransaction transaction = new SurfaceTransaction();
|
||||
|
||||
for (int i = appTargets.length - 1; i >= 0; i--) {
|
||||
RemoteAnimationTargetCompat target = appTargets[i];
|
||||
RemoteAnimationTarget target = appTargets[i];
|
||||
SurfaceProperties builder = transaction.forSurface(target.leash);
|
||||
|
||||
if (target.mode == MODE_OPENING) {
|
||||
@@ -902,9 +902,9 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
}
|
||||
|
||||
private Animator getOpeningWindowAnimatorsForWidget(LauncherAppWidgetHostView v,
|
||||
RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
RemoteAnimationTargetCompat[] nonAppTargets, Rect windowTargetBounds,
|
||||
RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets,
|
||||
RemoteAnimationTarget[] nonAppTargets, Rect windowTargetBounds,
|
||||
boolean appTargetsAreTranslucent) {
|
||||
final RectF widgetBackgroundBounds = new RectF();
|
||||
final Rect appWindowCrop = new Rect();
|
||||
@@ -912,7 +912,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
RemoteAnimationTargets openingTargets = new RemoteAnimationTargets(appTargets,
|
||||
wallpaperTargets, nonAppTargets, MODE_OPENING);
|
||||
|
||||
RemoteAnimationTargetCompat openingTarget = openingTargets.getFirstAppTarget();
|
||||
RemoteAnimationTarget openingTarget = openingTargets.getFirstAppTarget();
|
||||
int fallbackBackgroundColor = 0;
|
||||
if (openingTarget != null && supportsSSplashScreen()) {
|
||||
fallbackBackgroundColor = mTaskStartParams.containsKey(openingTarget.taskId)
|
||||
@@ -936,7 +936,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
SurfaceTransactionApplier surfaceApplier = new SurfaceTransactionApplier(floatingView);
|
||||
openingTargets.addReleaseCheck(surfaceApplier);
|
||||
|
||||
RemoteAnimationTargetCompat navBarTarget = openingTargets.getNavBarRemoteAnimationTarget();
|
||||
RemoteAnimationTarget navBarTarget = openingTargets.getNavBarRemoteAnimationTarget();
|
||||
|
||||
AnimatorSet animatorSet = new AnimatorSet();
|
||||
ValueAnimator appAnimator = ValueAnimator.ofFloat(0, 1);
|
||||
@@ -1003,7 +1003,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
SurfaceTransaction transaction = new SurfaceTransaction();
|
||||
float floatingViewAlpha = appTargetsAreTranslucent ? 1 - mPreviewAlpha.value : 1;
|
||||
for (int i = appTargets.length - 1; i >= 0; i--) {
|
||||
RemoteAnimationTargetCompat target = appTargets[i];
|
||||
RemoteAnimationTarget target = appTargets[i];
|
||||
SurfaceProperties builder = transaction.forSurface(target.leash);
|
||||
if (target.mode == MODE_OPENING) {
|
||||
floatingView.update(widgetBackgroundBounds, floatingViewAlpha,
|
||||
@@ -1174,8 +1174,8 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
}
|
||||
}
|
||||
|
||||
private boolean launcherIsATargetWithMode(RemoteAnimationTargetCompat[] targets, int mode) {
|
||||
for (RemoteAnimationTargetCompat target : targets) {
|
||||
private boolean launcherIsATargetWithMode(RemoteAnimationTarget[] targets, int mode) {
|
||||
for (RemoteAnimationTarget target : targets) {
|
||||
if (target.mode == mode && target.taskInfo != null
|
||||
// Compare component name instead of task-id because transitions will promote
|
||||
// the target up to the root task while getTaskId returns the leaf.
|
||||
@@ -1187,9 +1187,9 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean hasMultipleTargetsWithMode(RemoteAnimationTargetCompat[] targets, int mode) {
|
||||
private boolean hasMultipleTargetsWithMode(RemoteAnimationTarget[] targets, int mode) {
|
||||
int numTargets = 0;
|
||||
for (RemoteAnimationTargetCompat target : targets) {
|
||||
for (RemoteAnimationTarget target : targets) {
|
||||
if (target.mode == mode) {
|
||||
numTargets++;
|
||||
}
|
||||
@@ -1211,8 +1211,8 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
/**
|
||||
* Animator that controls the transformations of the windows when unlocking the device.
|
||||
*/
|
||||
private Animator getUnlockWindowAnimator(RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets) {
|
||||
private Animator getUnlockWindowAnimator(RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets) {
|
||||
SurfaceTransactionApplier surfaceApplier = new SurfaceTransactionApplier(mDragLayer);
|
||||
ValueAnimator unlockAnimator = ValueAnimator.ofFloat(0, 1);
|
||||
unlockAnimator.setDuration(CLOSING_TRANSITION_DURATION_MS);
|
||||
@@ -1223,7 +1223,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
public void onAnimationStart(Animator animation) {
|
||||
SurfaceTransaction transaction = new SurfaceTransaction();
|
||||
for (int i = appTargets.length - 1; i >= 0; i--) {
|
||||
RemoteAnimationTargetCompat target = appTargets[i];
|
||||
RemoteAnimationTarget target = appTargets[i];
|
||||
transaction.forSurface(target.leash)
|
||||
.setAlpha(1f)
|
||||
.setWindowCrop(target.screenSpaceBounds)
|
||||
@@ -1235,9 +1235,9 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
return unlockAnimator;
|
||||
}
|
||||
|
||||
private static int getRotationChange(RemoteAnimationTargetCompat[] appTargets) {
|
||||
private static int getRotationChange(RemoteAnimationTarget[] appTargets) {
|
||||
int rotationChange = 0;
|
||||
for (RemoteAnimationTargetCompat target : appTargets) {
|
||||
for (RemoteAnimationTarget target : appTargets) {
|
||||
if (Math.abs(target.rotationChange) > Math.abs(rotationChange)) {
|
||||
rotationChange = target.rotationChange;
|
||||
}
|
||||
@@ -1248,8 +1248,8 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
/**
|
||||
* Returns view on launcher that corresponds to the closing app in the list of app targets
|
||||
*/
|
||||
private @Nullable View findLauncherView(RemoteAnimationTargetCompat[] appTargets) {
|
||||
for (RemoteAnimationTargetCompat appTarget : appTargets) {
|
||||
private @Nullable View findLauncherView(RemoteAnimationTarget[] appTargets) {
|
||||
for (RemoteAnimationTarget appTarget : appTargets) {
|
||||
if (appTarget.mode == MODE_CLOSING) {
|
||||
View launcherView = findLauncherView(appTarget);
|
||||
if (launcherView != null) {
|
||||
@@ -1263,7 +1263,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
/**
|
||||
* Returns view on launcher that corresponds to the {@param runningTaskTarget}.
|
||||
*/
|
||||
private @Nullable View findLauncherView(RemoteAnimationTargetCompat runningTaskTarget) {
|
||||
private @Nullable View findLauncherView(RemoteAnimationTarget runningTaskTarget) {
|
||||
if (runningTaskTarget == null || runningTaskTarget.taskInfo == null) {
|
||||
return null;
|
||||
}
|
||||
@@ -1324,15 +1324,15 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
* Closing animator that animates the window into its final location on the workspace.
|
||||
*/
|
||||
private RectFSpringAnim getClosingWindowAnimators(AnimatorSet animation,
|
||||
RemoteAnimationTargetCompat[] targets, View launcherView, PointF velocityPxPerS,
|
||||
RemoteAnimationTarget[] targets, View launcherView, PointF velocityPxPerS,
|
||||
RectF closingWindowStartRect, float startWindowCornerRadius) {
|
||||
FloatingIconView floatingIconView = null;
|
||||
FloatingWidgetView floatingWidget = null;
|
||||
RectF targetRect = new RectF();
|
||||
|
||||
RemoteAnimationTargetCompat runningTaskTarget = null;
|
||||
RemoteAnimationTarget runningTaskTarget = null;
|
||||
boolean isTransluscent = false;
|
||||
for (RemoteAnimationTargetCompat target : targets) {
|
||||
for (RemoteAnimationTarget target : targets) {
|
||||
if (target.mode == MODE_CLOSING) {
|
||||
runningTaskTarget = target;
|
||||
isTransluscent = runningTaskTarget.isTranslucent;
|
||||
@@ -1426,7 +1426,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
/**
|
||||
* Closing window animator that moves the window down and offscreen.
|
||||
*/
|
||||
private Animator getFallbackClosingWindowAnimators(RemoteAnimationTargetCompat[] appTargets) {
|
||||
private Animator getFallbackClosingWindowAnimators(RemoteAnimationTarget[] appTargets) {
|
||||
final int rotationChange = getRotationChange(appTargets);
|
||||
SurfaceTransactionApplier surfaceApplier = new SurfaceTransactionApplier(mDragLayer);
|
||||
Matrix matrix = new Matrix();
|
||||
@@ -1449,7 +1449,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
public void onUpdate(float percent, boolean initOnly) {
|
||||
SurfaceTransaction transaction = new SurfaceTransaction();
|
||||
for (int i = appTargets.length - 1; i >= 0; i--) {
|
||||
RemoteAnimationTargetCompat target = appTargets[i];
|
||||
RemoteAnimationTarget target = appTargets[i];
|
||||
SurfaceProperties builder = transaction.forSurface(target.leash);
|
||||
|
||||
if (target.localBounds != null) {
|
||||
@@ -1548,8 +1548,8 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
* the transition.
|
||||
*/
|
||||
public Pair<RectFSpringAnim, AnimatorSet> createWallpaperOpenAnimations(
|
||||
RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets,
|
||||
boolean fromUnlock,
|
||||
RectF startRect,
|
||||
float startWindowCornerRadius) {
|
||||
@@ -1658,9 +1658,9 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
|
||||
@Override
|
||||
public void onCreateAnimation(int transit,
|
||||
RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
RemoteAnimationTargetCompat[] nonAppTargets,
|
||||
RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets,
|
||||
RemoteAnimationTarget[] nonAppTargets,
|
||||
LauncherAnimationRunner.AnimationResult result) {
|
||||
if (mLauncher.isDestroyed()) {
|
||||
AnimatorSet anim = new AnimatorSet();
|
||||
@@ -1699,9 +1699,9 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
|
||||
@Override
|
||||
public void onCreateAnimation(int transit,
|
||||
RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
RemoteAnimationTargetCompat[] nonAppTargets,
|
||||
RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets,
|
||||
RemoteAnimationTarget[] nonAppTargets,
|
||||
LauncherAnimationRunner.AnimationResult result) {
|
||||
AnimatorSet anim = new AnimatorSet();
|
||||
boolean launcherClosing =
|
||||
@@ -1828,7 +1828,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
* RectFSpringAnim update listener to be used for app to home animation.
|
||||
*/
|
||||
private class SpringAnimRunner implements RectFSpringAnim.OnUpdateListener {
|
||||
private final RemoteAnimationTargetCompat[] mAppTargets;
|
||||
private final RemoteAnimationTarget[] mAppTargets;
|
||||
private final Matrix mMatrix = new Matrix();
|
||||
private final Point mTmpPos = new Point();
|
||||
private final Rect mCurrentRect = new Rect();
|
||||
@@ -1839,7 +1839,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
|
||||
private final Rect mTmpRect = new Rect();
|
||||
|
||||
SpringAnimRunner(RemoteAnimationTargetCompat[] appTargets, RectF targetRect,
|
||||
SpringAnimRunner(RemoteAnimationTarget[] appTargets, RectF targetRect,
|
||||
Rect windowTargetBounds, float startWindowCornerRadius) {
|
||||
mAppTargets = appTargets;
|
||||
mStartRadius = startWindowCornerRadius;
|
||||
@@ -1856,7 +1856,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
public void onUpdate(RectF currentRectF, float progress) {
|
||||
SurfaceTransaction transaction = new SurfaceTransaction();
|
||||
for (int i = mAppTargets.length - 1; i >= 0; i--) {
|
||||
RemoteAnimationTargetCompat target = mAppTargets[i];
|
||||
RemoteAnimationTarget target = mAppTargets[i];
|
||||
SurfaceProperties builder = transaction.forSurface(target.leash);
|
||||
|
||||
if (target.localBounds != null) {
|
||||
|
||||
@@ -65,6 +65,7 @@ import android.os.IBinder;
|
||||
import android.os.SystemProperties;
|
||||
import android.view.Display;
|
||||
import android.view.HapticFeedbackConstants;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.View;
|
||||
import android.view.WindowManagerGlobal;
|
||||
import android.window.SplashScreen;
|
||||
@@ -140,7 +141,6 @@ import com.android.quickstep.views.OverviewActionsView;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
import com.android.quickstep.views.TaskView;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
import com.android.systemui.unfold.UnfoldSharedComponent;
|
||||
import com.android.systemui.unfold.UnfoldTransitionFactory;
|
||||
import com.android.systemui.unfold.UnfoldTransitionProgressProvider;
|
||||
@@ -768,8 +768,8 @@ public class QuickstepLauncher extends Launcher {
|
||||
QuickstepTransitionManager appTransitionManager = getAppTransitionManager();
|
||||
appTransitionManager.setRemoteAnimationProvider(new RemoteAnimationProvider() {
|
||||
@Override
|
||||
public AnimatorSet createWindowAnimation(RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets) {
|
||||
public AnimatorSet createWindowAnimation(RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets) {
|
||||
|
||||
// On the first call clear the reference.
|
||||
signal.cancel();
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.android.quickstep;
|
||||
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
|
||||
import static android.view.Surface.ROTATION_0;
|
||||
import static android.view.Surface.ROTATION_270;
|
||||
import static android.view.Surface.ROTATION_90;
|
||||
@@ -52,7 +53,6 @@ import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent
|
||||
import static com.android.quickstep.util.VibratorWrapper.OVERVIEW_HAPTIC;
|
||||
import static com.android.quickstep.views.RecentsView.UPDATE_SYSUI_FLAGS_THRESHOLD;
|
||||
import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
|
||||
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
@@ -73,6 +73,7 @@ import android.os.IBinder;
|
||||
import android.os.SystemClock;
|
||||
import android.util.Log;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.View;
|
||||
import android.view.View.OnApplyWindowInsetsListener;
|
||||
import android.view.ViewGroup;
|
||||
@@ -128,7 +129,6 @@ import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.InputConsumerController;
|
||||
import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListener;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListeners;
|
||||
import com.android.wm.shell.common.TransactionPool;
|
||||
@@ -683,7 +683,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
if (!mDeviceState.isFullyGesturalNavMode() || mRecentsView == null) {
|
||||
return;
|
||||
}
|
||||
RemoteAnimationTargetCompat runningTaskTarget = mRecentsAnimationTargets != null
|
||||
RemoteAnimationTarget runningTaskTarget = mRecentsAnimationTargets != null
|
||||
? mRecentsAnimationTargets.findTask(mGestureState.getRunningTaskId())
|
||||
: null;
|
||||
final boolean recentsAttachedToAppWindow;
|
||||
@@ -867,7 +867,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
// Only initialize the device profile, if it has not been initialized before, as in some
|
||||
// configurations targets.homeContentInsets may not be correct.
|
||||
if (mActivity == null) {
|
||||
RemoteAnimationTargetCompat primaryTaskTarget = targets.apps[0];
|
||||
RemoteAnimationTarget primaryTaskTarget = targets.apps[0];
|
||||
// orientation state is independent of which remote target handle we use since both
|
||||
// should be pointing to the same one. Just choose index 0 for now since that works for
|
||||
// both split and non-split
|
||||
@@ -1076,7 +1076,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
}
|
||||
|
||||
/** @return Whether this was the task we were waiting to appear, and thus handled it. */
|
||||
protected boolean handleTaskAppeared(RemoteAnimationTargetCompat[] appearedTaskTarget) {
|
||||
protected boolean handleTaskAppeared(RemoteAnimationTarget[] appearedTaskTarget) {
|
||||
if (mStateCallback.hasStates(STATE_HANDLER_INVALIDATED)) {
|
||||
return false;
|
||||
}
|
||||
@@ -1315,7 +1315,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
|
||||
protected abstract HomeAnimationFactory createHomeAnimationFactory(
|
||||
ArrayList<IBinder> launchCookies, long duration, boolean isTargetTranslucent,
|
||||
boolean appCanEnterPip, RemoteAnimationTargetCompat runningTaskTarget);
|
||||
boolean appCanEnterPip, RemoteAnimationTarget runningTaskTarget);
|
||||
|
||||
private final TaskStackChangeListener mActivityRestartListener = new TaskStackChangeListener() {
|
||||
@Override
|
||||
@@ -1362,7 +1362,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
|
||||
if (mGestureState.getEndTarget() == HOME) {
|
||||
getOrientationHandler().adjustFloatingIconStartVelocity(velocityPxPerMs);
|
||||
final RemoteAnimationTargetCompat runningTaskTarget = mRecentsAnimationTargets != null
|
||||
final RemoteAnimationTarget runningTaskTarget = mRecentsAnimationTargets != null
|
||||
? mRecentsAnimationTargets.findTask(mGestureState.getRunningTaskId())
|
||||
: null;
|
||||
final ArrayList<IBinder> cookies = runningTaskTarget != null
|
||||
@@ -1472,7 +1472,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
}
|
||||
}
|
||||
|
||||
private int calculateWindowRotation(RemoteAnimationTargetCompat runningTaskTarget,
|
||||
private int calculateWindowRotation(RemoteAnimationTarget runningTaskTarget,
|
||||
RecentsOrientedState orientationState) {
|
||||
if (runningTaskTarget.rotationChange != 0
|
||||
&& TaskAnimationManager.ENABLE_SHELL_TRANSITIONS) {
|
||||
@@ -1485,7 +1485,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
|
||||
@Nullable
|
||||
private SwipePipToHomeAnimator createWindowAnimationToPip(HomeAnimationFactory homeAnimFactory,
|
||||
RemoteAnimationTargetCompat runningTaskTarget, float startProgress) {
|
||||
RemoteAnimationTarget runningTaskTarget, float startProgress) {
|
||||
// Directly animate the app to PiP (picture-in-picture) mode
|
||||
final ActivityManager.RunningTaskInfo taskInfo = runningTaskTarget.taskInfo;
|
||||
final RecentsOrientedState orientationState = mRemoteTargetHandles[0].getTaskViewSimulator()
|
||||
@@ -1965,9 +1965,9 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
reset();
|
||||
}
|
||||
|
||||
private static boolean isNotInRecents(RemoteAnimationTargetCompat app) {
|
||||
private static boolean isNotInRecents(RemoteAnimationTarget app) {
|
||||
return app.isNotInRecents
|
||||
|| app.activityType == ACTIVITY_TYPE_HOME;
|
||||
|| app.windowConfiguration.getActivityType() == ACTIVITY_TYPE_HOME;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2090,10 +2090,10 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTasksAppeared(RemoteAnimationTargetCompat[] appearedTaskTargets) {
|
||||
public void onTasksAppeared(RemoteAnimationTarget[] appearedTaskTargets) {
|
||||
if (mRecentsAnimationController != null) {
|
||||
if (handleTaskAppeared(appearedTaskTargets)) {
|
||||
Optional<RemoteAnimationTargetCompat> taskTargetOptional =
|
||||
Optional<RemoteAnimationTarget> taskTargetOptional =
|
||||
Arrays.stream(appearedTaskTargets)
|
||||
.filter(targetCompat ->
|
||||
targetCompat.taskId == mGestureState.getLastStartedTaskId())
|
||||
@@ -2102,7 +2102,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
finishRecentsAnimationOnTasksAppeared();
|
||||
return;
|
||||
}
|
||||
RemoteAnimationTargetCompat taskTarget = taskTargetOptional.get();
|
||||
RemoteAnimationTarget taskTarget = taskTargetOptional.get();
|
||||
TaskView taskView = mRecentsView.getTaskViewByTaskId(taskTarget.taskId);
|
||||
if (taskView == null || !taskView.getThumbnail().shouldShowSplashView()) {
|
||||
finishRecentsAnimationOnTasksAppeared();
|
||||
@@ -2116,7 +2116,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
SurfaceTransactionApplier surfaceApplier =
|
||||
new SurfaceTransactionApplier(splashView);
|
||||
SurfaceTransaction transaction = new SurfaceTransaction();
|
||||
for (RemoteAnimationTargetCompat target : appearedTaskTargets) {
|
||||
for (RemoteAnimationTarget target : appearedTaskTargets) {
|
||||
transaction.forSurface(target.leash).setAlpha(1).setLayer(-1);
|
||||
}
|
||||
surfaceApplier.scheduleApply(transaction);
|
||||
|
||||
@@ -40,6 +40,7 @@ import android.graphics.Rect;
|
||||
import android.os.Build;
|
||||
import android.view.Gravity;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -63,7 +64,6 @@ import com.android.quickstep.util.ActivityInitListener;
|
||||
import com.android.quickstep.util.AnimatorControllerWithResistance;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Optional;
|
||||
@@ -168,7 +168,7 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
|
||||
public abstract boolean switchToRecentsIfVisible(Runnable onCompleteCallback);
|
||||
|
||||
public abstract Rect getOverviewWindowBounds(
|
||||
Rect homeBounds, RemoteAnimationTargetCompat target);
|
||||
Rect homeBounds, RemoteAnimationTarget target);
|
||||
|
||||
public abstract boolean allowMinimizeSplitScreen();
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ import android.animation.AnimatorSet;
|
||||
import android.content.Context;
|
||||
import android.graphics.Rect;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
@@ -38,7 +39,6 @@ import com.android.quickstep.fallback.RecentsState;
|
||||
import com.android.quickstep.util.ActivityInitListener;
|
||||
import com.android.quickstep.util.AnimatorControllerWithResistance;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Predicate;
|
||||
@@ -132,7 +132,7 @@ public final class FallbackActivityInterface extends
|
||||
}
|
||||
|
||||
@Override
|
||||
public Rect getOverviewWindowBounds(Rect homeBounds, RemoteAnimationTargetCompat target) {
|
||||
public Rect getOverviewWindowBounds(Rect homeBounds, RemoteAnimationTarget target) {
|
||||
// TODO: Remove this once b/77875376 is fixed
|
||||
return target.screenSpaceBounds;
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.android.quickstep;
|
||||
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
|
||||
import static android.content.Intent.EXTRA_COMPONENT_NAME;
|
||||
import static android.content.Intent.EXTRA_USER;
|
||||
|
||||
@@ -26,7 +27,6 @@ import static com.android.launcher3.GestureNavContract.EXTRA_REMOTE_CALLBACK;
|
||||
import static com.android.launcher3.anim.AnimatorListeners.forEndCallback;
|
||||
import static com.android.launcher3.anim.Interpolators.ACCEL;
|
||||
import static com.android.quickstep.OverviewComponentObserver.startHomeIntentSafely;
|
||||
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME;
|
||||
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.annotation.TargetApi;
|
||||
@@ -48,6 +48,7 @@ import android.os.ParcelUuid;
|
||||
import android.os.RemoteException;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Log;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.Surface;
|
||||
import android.view.SurfaceControl;
|
||||
import android.view.SurfaceControl.Transaction;
|
||||
@@ -70,7 +71,6 @@ import com.android.quickstep.util.TransformParams;
|
||||
import com.android.quickstep.util.TransformParams.BuilderProxy;
|
||||
import com.android.systemui.shared.recents.model.Task.TaskKey;
|
||||
import com.android.systemui.shared.system.InputConsumerController;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
@@ -126,13 +126,13 @@ public class FallbackSwipeHandler extends
|
||||
}
|
||||
|
||||
private void updateHomeActivityTransformDuringSwipeUp(SurfaceProperties builder,
|
||||
RemoteAnimationTargetCompat app, TransformParams params) {
|
||||
RemoteAnimationTarget app, TransformParams params) {
|
||||
setHomeScaleAndAlpha(builder, app, mCurrentShift.value,
|
||||
Utilities.boundToRange(1 - mCurrentShift.value, 0, 1));
|
||||
}
|
||||
|
||||
private void setHomeScaleAndAlpha(SurfaceProperties builder,
|
||||
RemoteAnimationTargetCompat app, float verticalShift, float alpha) {
|
||||
RemoteAnimationTarget app, float verticalShift, float alpha) {
|
||||
float scale = Utilities.mapRange(verticalShift, 1, mMaxLauncherScale);
|
||||
mTmpMatrix.setScale(scale, scale,
|
||||
app.localBounds.exactCenterX(), app.localBounds.exactCenterY());
|
||||
@@ -142,7 +142,7 @@ public class FallbackSwipeHandler extends
|
||||
@Override
|
||||
protected HomeAnimationFactory createHomeAnimationFactory(ArrayList<IBinder> launchCookies,
|
||||
long duration, boolean isTargetTranslucent, boolean appCanEnterPip,
|
||||
RemoteAnimationTargetCompat runningTaskTarget) {
|
||||
RemoteAnimationTarget runningTaskTarget) {
|
||||
mAppCanEnterPip = appCanEnterPip;
|
||||
if (appCanEnterPip) {
|
||||
return new FallbackPipToHomeAnimationFactory();
|
||||
@@ -154,7 +154,7 @@ public class FallbackSwipeHandler extends
|
||||
|
||||
private void startHomeIntent(
|
||||
@Nullable FallbackHomeAnimationFactory gestureContractAnimationFactory,
|
||||
@Nullable RemoteAnimationTargetCompat runningTaskTarget) {
|
||||
@Nullable RemoteAnimationTarget runningTaskTarget) {
|
||||
ActivityOptions options = ActivityOptions.makeCustomAnimation(mContext, 0, 0);
|
||||
Intent intent = new Intent(mGestureState.getHomeIntent());
|
||||
if (gestureContractAnimationFactory != null && runningTaskTarget != null) {
|
||||
@@ -164,7 +164,7 @@ public class FallbackSwipeHandler extends
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean handleTaskAppeared(RemoteAnimationTargetCompat[] appearedTaskTarget) {
|
||||
protected boolean handleTaskAppeared(RemoteAnimationTarget[] appearedTaskTarget) {
|
||||
if (mActiveAnimationFactory != null
|
||||
&& mActiveAnimationFactory.handleHomeTaskAppeared(appearedTaskTarget)) {
|
||||
mActiveAnimationFactory = null;
|
||||
@@ -280,12 +280,12 @@ public class FallbackSwipeHandler extends
|
||||
}
|
||||
|
||||
private void updateRecentsActivityTransformDuringHomeAnim(SurfaceProperties builder,
|
||||
RemoteAnimationTargetCompat app, TransformParams params) {
|
||||
RemoteAnimationTarget app, TransformParams params) {
|
||||
builder.setAlpha(mRecentsAlpha.value);
|
||||
}
|
||||
|
||||
private void updateHomeActivityTransformDuringHomeAnim(SurfaceProperties builder,
|
||||
RemoteAnimationTargetCompat app, TransformParams params) {
|
||||
RemoteAnimationTarget app, TransformParams params) {
|
||||
setHomeScaleAndAlpha(builder, app, mVerticalShiftForScale.value, mHomeAlpha.value);
|
||||
}
|
||||
|
||||
@@ -304,12 +304,12 @@ public class FallbackSwipeHandler extends
|
||||
}
|
||||
}
|
||||
|
||||
public boolean handleHomeTaskAppeared(RemoteAnimationTargetCompat[] appearedTaskTargets) {
|
||||
RemoteAnimationTargetCompat appearedTaskTarget = appearedTaskTargets[0];
|
||||
if (appearedTaskTarget.activityType == ACTIVITY_TYPE_HOME) {
|
||||
public boolean handleHomeTaskAppeared(RemoteAnimationTarget[] appearedTaskTargets) {
|
||||
RemoteAnimationTarget appearedTaskTarget = appearedTaskTargets[0];
|
||||
if (appearedTaskTarget.windowConfiguration.getActivityType() == ACTIVITY_TYPE_HOME) {
|
||||
RemoteAnimationTargets targets = new RemoteAnimationTargets(
|
||||
new RemoteAnimationTargetCompat[] {appearedTaskTarget},
|
||||
new RemoteAnimationTargetCompat[0], new RemoteAnimationTargetCompat[0],
|
||||
new RemoteAnimationTarget[] {appearedTaskTarget},
|
||||
new RemoteAnimationTarget[0], new RemoteAnimationTarget[0],
|
||||
appearedTaskTarget.mode);
|
||||
mHomeAlphaParams.setTargetSet(targets);
|
||||
updateHomeAlpha();
|
||||
|
||||
@@ -28,6 +28,7 @@ import android.annotation.Nullable;
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
|
||||
import com.android.launcher3.statemanager.BaseState;
|
||||
import com.android.launcher3.statemanager.StatefulActivity;
|
||||
@@ -37,7 +38,6 @@ import com.android.quickstep.TopTaskTracker.CachedTaskInfo;
|
||||
import com.android.quickstep.util.ActiveGestureErrorDetector;
|
||||
import com.android.quickstep.util.ActiveGestureLog;
|
||||
import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
@@ -143,7 +143,7 @@ public class GestureState implements RecentsAnimationCallbacks.RecentsAnimationL
|
||||
|
||||
private CachedTaskInfo mRunningTask;
|
||||
private GestureEndTarget mEndTarget;
|
||||
private RemoteAnimationTargetCompat mLastAppearedTaskTarget;
|
||||
private RemoteAnimationTarget mLastAppearedTaskTarget;
|
||||
private Set<Integer> mPreviouslyAppearedTaskIds = new HashSet<>();
|
||||
private int mLastStartedTaskId = -1;
|
||||
private RecentsAnimationController mRecentsAnimationController;
|
||||
@@ -272,7 +272,7 @@ public class GestureState implements RecentsAnimationCallbacks.RecentsAnimationL
|
||||
/**
|
||||
* Updates the last task that appeared during this gesture.
|
||||
*/
|
||||
public void updateLastAppearedTaskTarget(RemoteAnimationTargetCompat lastAppearedTaskTarget) {
|
||||
public void updateLastAppearedTaskTarget(RemoteAnimationTarget lastAppearedTaskTarget) {
|
||||
mLastAppearedTaskTarget = lastAppearedTaskTarget;
|
||||
if (lastAppearedTaskTarget != null) {
|
||||
mPreviouslyAppearedTaskIds.add(lastAppearedTaskTarget.taskId);
|
||||
|
||||
@@ -28,6 +28,7 @@ import android.animation.AnimatorSet;
|
||||
import android.content.Context;
|
||||
import android.graphics.Rect;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.UiThread;
|
||||
@@ -52,7 +53,6 @@ import com.android.quickstep.util.AnimatorControllerWithResistance;
|
||||
import com.android.quickstep.util.LayoutUtils;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
import com.android.systemui.plugins.shared.LauncherOverlayManager;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Predicate;
|
||||
@@ -263,7 +263,7 @@ public final class LauncherActivityInterface extends
|
||||
}
|
||||
|
||||
@Override
|
||||
public Rect getOverviewWindowBounds(Rect homeBounds, RemoteAnimationTargetCompat target) {
|
||||
public Rect getOverviewWindowBounds(Rect homeBounds, RemoteAnimationTarget target) {
|
||||
return homeBounds;
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,6 @@ import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.uioverrides.QuickstepLauncher;
|
||||
import com.android.quickstep.util.RectFSpringAnim;
|
||||
import com.android.systemui.shared.system.QuickStepContract;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
/**
|
||||
* Controls the animation of swiping back and returning to launcher.
|
||||
@@ -84,7 +83,7 @@ public class LauncherBackAnimationController {
|
||||
private final Interpolator mCancelInterpolator;
|
||||
private final PointF mInitialTouchPos = new PointF();
|
||||
|
||||
private RemoteAnimationTargetCompat mBackTarget;
|
||||
private RemoteAnimationTarget mBackTarget;
|
||||
private SurfaceControl.Transaction mTransaction = new SurfaceControl.Transaction();
|
||||
private boolean mSpringAnimationInProgress = false;
|
||||
private boolean mAnimatorSetInProgress = false;
|
||||
@@ -196,7 +195,7 @@ public class LauncherBackAnimationController {
|
||||
|
||||
mTransaction.show(appTarget.leash).apply();
|
||||
mTransaction.setAnimationTransaction();
|
||||
mBackTarget = new RemoteAnimationTargetCompat(appTarget);
|
||||
mBackTarget = appTarget;
|
||||
mInitialTouchPos.set(backEvent.getTouchX(), backEvent.getTouchY());
|
||||
|
||||
// TODO(b/218916755): Offset start rectangle in multiwindow mode.
|
||||
@@ -286,8 +285,8 @@ public class LauncherBackAnimationController {
|
||||
mBackProgress, mWindowScaleStartCornerRadius, mWindowScaleEndCornerRadius);
|
||||
Pair<RectFSpringAnim, AnimatorSet> pair =
|
||||
mQuickstepTransitionManager.createWallpaperOpenAnimations(
|
||||
new RemoteAnimationTargetCompat[]{mBackTarget},
|
||||
new RemoteAnimationTargetCompat[]{},
|
||||
new RemoteAnimationTarget[]{mBackTarget},
|
||||
new RemoteAnimationTarget[0],
|
||||
false /* fromUnlock */,
|
||||
mCurrentRect,
|
||||
cornerRadius);
|
||||
|
||||
@@ -30,6 +30,7 @@ import android.graphics.RectF;
|
||||
import android.os.IBinder;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Size;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@@ -49,7 +50,6 @@ import com.android.quickstep.views.FloatingWidgetView;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
import com.android.quickstep.views.TaskView;
|
||||
import com.android.systemui.shared.system.InputConsumerController;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@@ -70,7 +70,7 @@ public class LauncherSwipeHandlerV2 extends
|
||||
@Override
|
||||
protected HomeAnimationFactory createHomeAnimationFactory(ArrayList<IBinder> launchCookies,
|
||||
long duration, boolean isTargetTranslucent, boolean appCanEnterPip,
|
||||
RemoteAnimationTargetCompat runningTaskTarget) {
|
||||
RemoteAnimationTarget runningTaskTarget) {
|
||||
if (mActivity == null) {
|
||||
mStateCallback.addChangeListener(STATE_LAUNCHER_PRESENT | STATE_HANDLER_INVALIDATED,
|
||||
isPresent -> mRecentsView.startHome());
|
||||
@@ -144,7 +144,7 @@ public class LauncherSwipeHandlerV2 extends
|
||||
|
||||
private HomeAnimationFactory createWidgetHomeAnimationFactory(
|
||||
LauncherAppWidgetHostView hostView, boolean isTargetTranslucent,
|
||||
RemoteAnimationTargetCompat runningTaskTarget) {
|
||||
RemoteAnimationTarget runningTaskTarget) {
|
||||
final float floatingWidgetAlpha = isTargetTranslucent ? 0 : 1;
|
||||
RectF backgroundLocation = new RectF();
|
||||
Rect crop = new Rect();
|
||||
|
||||
@@ -15,6 +15,9 @@
|
||||
*/
|
||||
package com.android.quickstep;
|
||||
|
||||
import static android.view.RemoteAnimationTarget.MODE_CLOSING;
|
||||
import static android.view.RemoteAnimationTarget.MODE_OPENING;
|
||||
|
||||
import static com.android.launcher3.QuickstepTransitionManager.RECENTS_LAUNCH_DURATION;
|
||||
import static com.android.launcher3.QuickstepTransitionManager.STATUS_BAR_TRANSITION_DURATION;
|
||||
import static com.android.launcher3.QuickstepTransitionManager.STATUS_BAR_TRANSITION_PRE_DELAY;
|
||||
@@ -23,8 +26,6 @@ import static com.android.launcher3.testing.shared.TestProtocol.OVERVIEW_STATE_O
|
||||
import static com.android.quickstep.OverviewComponentObserver.startHomeIntentSafely;
|
||||
import static com.android.quickstep.TaskUtils.taskIsATargetWithMode;
|
||||
import static com.android.quickstep.TaskViewUtils.createRecentsWindowAnimator;
|
||||
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
|
||||
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_OPENING;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
@@ -36,6 +37,7 @@ import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.view.Display;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.SurfaceControl.Transaction;
|
||||
import android.view.View;
|
||||
import android.window.SplashScreen;
|
||||
@@ -78,7 +80,6 @@ import com.android.quickstep.views.OverviewActionsView;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
import com.android.quickstep.views.TaskView;
|
||||
import com.android.systemui.shared.system.RemoteAnimationAdapterCompat;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.PrintWriter;
|
||||
@@ -238,9 +239,9 @@ public final class RecentsActivity extends StatefulActivity<RecentsState> {
|
||||
|
||||
mActivityLaunchAnimationRunner = new RemoteAnimationFactory() {
|
||||
@Override
|
||||
public void onCreateAnimation(int transit, RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
RemoteAnimationTargetCompat[] nonAppTargets, AnimationResult result) {
|
||||
public void onCreateAnimation(int transit, RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets,
|
||||
RemoteAnimationTarget[] nonAppTargets, AnimationResult result) {
|
||||
mHandler.removeCallbacks(mAnimationStartTimeoutRunnable);
|
||||
AnimatorSet anim = composeRecentsLaunchAnimator(taskView, appTargets,
|
||||
wallpaperTargets, nonAppTargets);
|
||||
@@ -279,9 +280,9 @@ public final class RecentsActivity extends StatefulActivity<RecentsState> {
|
||||
* Composes the animations for a launch from the recents list if possible.
|
||||
*/
|
||||
private AnimatorSet composeRecentsLaunchAnimator(TaskView taskView,
|
||||
RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
RemoteAnimationTargetCompat[] nonAppTargets) {
|
||||
RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets,
|
||||
RemoteAnimationTarget[] nonAppTargets) {
|
||||
AnimatorSet target = new AnimatorSet();
|
||||
boolean activityClosing = taskIsATargetWithMode(appTargets, getTaskId(), MODE_CLOSING);
|
||||
PendingAnimation pa = new PendingAnimation(RECENTS_LAUNCH_DURATION);
|
||||
@@ -412,16 +413,16 @@ public final class RecentsActivity extends StatefulActivity<RecentsState> {
|
||||
private final RemoteAnimationFactory mAnimationToHomeFactory =
|
||||
new RemoteAnimationFactory() {
|
||||
@Override
|
||||
public void onCreateAnimation(int transit, RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
RemoteAnimationTargetCompat[] nonAppTargets, AnimationResult result) {
|
||||
public void onCreateAnimation(int transit, RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets,
|
||||
RemoteAnimationTarget[] nonAppTargets, AnimationResult result) {
|
||||
AnimatorPlaybackController controller = getStateManager()
|
||||
.createAnimationToNewWorkspace(RecentsState.BG_LAUNCHER, HOME_APPEAR_DURATION);
|
||||
controller.dispatchOnStart();
|
||||
|
||||
RemoteAnimationTargets targets = new RemoteAnimationTargets(
|
||||
appTargets, wallpaperTargets, nonAppTargets, MODE_OPENING);
|
||||
for (RemoteAnimationTargetCompat app : targets.apps) {
|
||||
for (RemoteAnimationTarget app : targets.apps) {
|
||||
new Transaction().setAlpha(app.leash, 1).apply();
|
||||
}
|
||||
AnimatorSet anim = new AnimatorSet();
|
||||
|
||||
@@ -33,9 +33,7 @@ import com.android.quickstep.util.ActiveGestureErrorDetector;
|
||||
import com.android.quickstep.util.ActiveGestureLog;
|
||||
import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.system.RecentsAnimationControllerCompat;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -88,17 +86,17 @@ public class RecentsAnimationCallbacks implements
|
||||
@BinderThread
|
||||
@Deprecated
|
||||
public final void onAnimationStart(RecentsAnimationControllerCompat controller,
|
||||
RemoteAnimationTargetCompat[] appTargets, Rect homeContentInsets,
|
||||
RemoteAnimationTarget[] appTargets, Rect homeContentInsets,
|
||||
Rect minimizedHomeBounds) {
|
||||
onAnimationStart(controller, appTargets, new RemoteAnimationTargetCompat[0],
|
||||
onAnimationStart(controller, appTargets, new RemoteAnimationTarget[0],
|
||||
homeContentInsets, minimizedHomeBounds);
|
||||
}
|
||||
|
||||
// Called only in R+ platform
|
||||
@BinderThread
|
||||
public final void onAnimationStart(RecentsAnimationControllerCompat animationController,
|
||||
RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets,
|
||||
Rect homeContentInsets, Rect minimizedHomeBounds) {
|
||||
mController = new RecentsAnimationController(animationController,
|
||||
mAllowMinimizeSplitScreen, this::onAnimationFinished);
|
||||
@@ -107,12 +105,13 @@ public class RecentsAnimationCallbacks implements
|
||||
Utilities.postAsyncCallback(MAIN_EXECUTOR.getHandler(),
|
||||
mController::finishAnimationToApp);
|
||||
} else {
|
||||
final RemoteAnimationTarget[] nonAppTargets = mSystemUiProxy.onGoingToRecentsLegacy(
|
||||
Arrays.stream(appTargets).map(RemoteAnimationTargetCompat::unwrap)
|
||||
.toArray(RemoteAnimationTarget[]::new));
|
||||
RemoteAnimationTarget[] nonAppTargets =
|
||||
mSystemUiProxy.onGoingToRecentsLegacy(appTargets);
|
||||
if (nonAppTargets == null) {
|
||||
nonAppTargets = new RemoteAnimationTarget[0];
|
||||
}
|
||||
final RecentsAnimationTargets targets = new RecentsAnimationTargets(appTargets,
|
||||
wallpaperTargets, RemoteAnimationTargetCompat.wrap(nonAppTargets),
|
||||
homeContentInsets, minimizedHomeBounds);
|
||||
wallpaperTargets, nonAppTargets, homeContentInsets, minimizedHomeBounds);
|
||||
|
||||
Utilities.postAsyncCallback(MAIN_EXECUTOR.getHandler(), () -> {
|
||||
ActiveGestureLog.INSTANCE.addLog(
|
||||
@@ -141,7 +140,7 @@ public class RecentsAnimationCallbacks implements
|
||||
|
||||
@BinderThread
|
||||
@Override
|
||||
public void onTasksAppeared(RemoteAnimationTargetCompat[] apps) {
|
||||
public void onTasksAppeared(RemoteAnimationTarget[] apps) {
|
||||
Utilities.postAsyncCallback(MAIN_EXECUTOR.getHandler(), () -> {
|
||||
ActiveGestureLog.INSTANCE.addLog("onTasksAppeared",
|
||||
ActiveGestureErrorDetector.GestureEvent.TASK_APPEARED);
|
||||
@@ -197,7 +196,7 @@ public class RecentsAnimationCallbacks implements
|
||||
/**
|
||||
* Callback made when a task started from the recents is ready for an app transition.
|
||||
*/
|
||||
default void onTasksAppeared(@NonNull RemoteAnimationTargetCompat[] appearedTaskTarget) {}
|
||||
default void onTasksAppeared(@NonNull RemoteAnimationTarget[] appearedTaskTarget) {}
|
||||
|
||||
/**
|
||||
* @return whether this will call onFinished or not (onFinished should only be called once).
|
||||
|
||||
@@ -23,6 +23,7 @@ import android.content.Context;
|
||||
import android.os.RemoteException;
|
||||
import android.util.Log;
|
||||
import android.view.IRecentsAnimationController;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.SurfaceControl;
|
||||
import android.view.WindowManagerGlobal;
|
||||
import android.window.PictureInPictureSurfaceTransaction;
|
||||
@@ -37,7 +38,6 @@ import com.android.quickstep.util.ActiveGestureLog;
|
||||
import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
|
||||
import com.android.systemui.shared.system.RecentsAnimationControllerCompat;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@@ -114,7 +114,7 @@ public class RecentsAnimationController {
|
||||
* {@link RecentsAnimationCallbacks#onTasksAppeared}}.
|
||||
*/
|
||||
@UiThread
|
||||
public void removeTaskTarget(@NonNull RemoteAnimationTargetCompat target) {
|
||||
public void removeTaskTarget(@NonNull RemoteAnimationTarget target) {
|
||||
UI_HELPER_EXECUTOR.execute(() -> mController.removeTask(target.taskId));
|
||||
}
|
||||
|
||||
|
||||
@@ -15,11 +15,10 @@
|
||||
*/
|
||||
package com.android.quickstep;
|
||||
|
||||
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
|
||||
import static android.view.RemoteAnimationTarget.MODE_CLOSING;
|
||||
|
||||
import android.graphics.Rect;
|
||||
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
|
||||
/**
|
||||
* Extension of {@link RemoteAnimationTargets} with additional information about swipe
|
||||
@@ -30,8 +29,8 @@ public class RecentsAnimationTargets extends RemoteAnimationTargets {
|
||||
public final Rect homeContentInsets;
|
||||
public final Rect minimizedHomeBounds;
|
||||
|
||||
public RecentsAnimationTargets(RemoteAnimationTargetCompat[] apps,
|
||||
RemoteAnimationTargetCompat[] wallpapers, RemoteAnimationTargetCompat[] nonApps,
|
||||
public RecentsAnimationTargets(RemoteAnimationTarget[] apps,
|
||||
RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps,
|
||||
Rect homeContentInsets, Rect minimizedHomeBounds) {
|
||||
super(apps, wallpapers, nonApps, MODE_CLOSING);
|
||||
this.homeContentInsets = homeContentInsets;
|
||||
|
||||
@@ -15,9 +15,11 @@
|
||||
*/
|
||||
package com.android.quickstep;
|
||||
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR;
|
||||
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
@@ -29,41 +31,40 @@ public class RemoteAnimationTargets {
|
||||
|
||||
private final CopyOnWriteArrayList<ReleaseCheck> mReleaseChecks = new CopyOnWriteArrayList<>();
|
||||
|
||||
public final RemoteAnimationTargetCompat[] unfilteredApps;
|
||||
public final RemoteAnimationTargetCompat[] apps;
|
||||
public final RemoteAnimationTargetCompat[] wallpapers;
|
||||
public final RemoteAnimationTargetCompat[] nonApps;
|
||||
public final RemoteAnimationTarget[] unfilteredApps;
|
||||
public final RemoteAnimationTarget[] apps;
|
||||
public final RemoteAnimationTarget[] wallpapers;
|
||||
public final RemoteAnimationTarget[] nonApps;
|
||||
public final int targetMode;
|
||||
public final boolean hasRecents;
|
||||
|
||||
private boolean mReleased = false;
|
||||
|
||||
public RemoteAnimationTargets(RemoteAnimationTargetCompat[] apps,
|
||||
RemoteAnimationTargetCompat[] wallpapers, RemoteAnimationTargetCompat[] nonApps,
|
||||
public RemoteAnimationTargets(RemoteAnimationTarget[] apps,
|
||||
RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps,
|
||||
int targetMode) {
|
||||
ArrayList<RemoteAnimationTargetCompat> filteredApps = new ArrayList<>();
|
||||
ArrayList<RemoteAnimationTarget> filteredApps = new ArrayList<>();
|
||||
boolean hasRecents = false;
|
||||
if (apps != null) {
|
||||
for (RemoteAnimationTargetCompat target : apps) {
|
||||
for (RemoteAnimationTarget target : apps) {
|
||||
if (target.mode == targetMode) {
|
||||
filteredApps.add(target);
|
||||
}
|
||||
|
||||
hasRecents |= target.activityType ==
|
||||
RemoteAnimationTargetCompat.ACTIVITY_TYPE_RECENTS;
|
||||
hasRecents |= target.windowConfiguration.getActivityType() == ACTIVITY_TYPE_RECENTS;
|
||||
}
|
||||
}
|
||||
|
||||
this.unfilteredApps = apps;
|
||||
this.apps = filteredApps.toArray(new RemoteAnimationTargetCompat[filteredApps.size()]);
|
||||
this.apps = filteredApps.toArray(new RemoteAnimationTarget[filteredApps.size()]);
|
||||
this.wallpapers = wallpapers;
|
||||
this.targetMode = targetMode;
|
||||
this.hasRecents = hasRecents;
|
||||
this.nonApps = nonApps;
|
||||
}
|
||||
|
||||
public RemoteAnimationTargetCompat findTask(int taskId) {
|
||||
for (RemoteAnimationTargetCompat target : apps) {
|
||||
public RemoteAnimationTarget findTask(int taskId) {
|
||||
for (RemoteAnimationTarget target : apps) {
|
||||
if (target.taskId == taskId) {
|
||||
return target;
|
||||
}
|
||||
@@ -74,12 +75,12 @@ public class RemoteAnimationTargets {
|
||||
/**
|
||||
* Gets the navigation bar remote animation target if exists.
|
||||
*/
|
||||
public RemoteAnimationTargetCompat getNavBarRemoteAnimationTarget() {
|
||||
public RemoteAnimationTarget getNavBarRemoteAnimationTarget() {
|
||||
return getNonAppTargetOfType(TYPE_NAVIGATION_BAR);
|
||||
}
|
||||
|
||||
public RemoteAnimationTargetCompat getNonAppTargetOfType(int type) {
|
||||
for (RemoteAnimationTargetCompat target : nonApps) {
|
||||
public RemoteAnimationTarget getNonAppTargetOfType(int type) {
|
||||
for (RemoteAnimationTarget target : nonApps) {
|
||||
if (target.windowType == type) {
|
||||
return target;
|
||||
}
|
||||
@@ -88,19 +89,19 @@ public class RemoteAnimationTargets {
|
||||
}
|
||||
|
||||
/** Returns the first opening app target. */
|
||||
public RemoteAnimationTargetCompat getFirstAppTarget() {
|
||||
public RemoteAnimationTarget getFirstAppTarget() {
|
||||
return apps.length > 0 ? apps[0] : null;
|
||||
}
|
||||
|
||||
/** Returns the task id of the first opening app target, or -1 if none is found. */
|
||||
public int getFirstAppTargetTaskId() {
|
||||
RemoteAnimationTargetCompat target = getFirstAppTarget();
|
||||
RemoteAnimationTarget target = getFirstAppTarget();
|
||||
return target == null ? -1 : target.taskId;
|
||||
}
|
||||
|
||||
public boolean isAnimatingHome() {
|
||||
for (RemoteAnimationTargetCompat target : unfilteredApps) {
|
||||
if (target.activityType == RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME) {
|
||||
for (RemoteAnimationTarget target : unfilteredApps) {
|
||||
if (target.windowConfiguration.getActivityType() == ACTIVITY_TYPE_HOME) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -123,15 +124,19 @@ public class RemoteAnimationTargets {
|
||||
}
|
||||
mReleaseChecks.clear();
|
||||
mReleased = true;
|
||||
release(unfilteredApps);
|
||||
release(wallpapers);
|
||||
release(nonApps);
|
||||
}
|
||||
|
||||
for (RemoteAnimationTargetCompat target : unfilteredApps) {
|
||||
target.release();
|
||||
}
|
||||
for (RemoteAnimationTargetCompat target : wallpapers) {
|
||||
target.release();
|
||||
}
|
||||
for (RemoteAnimationTargetCompat target : nonApps) {
|
||||
target.release();
|
||||
private static void release(RemoteAnimationTarget[] targets) {
|
||||
for (RemoteAnimationTarget target : targets) {
|
||||
if (target.leash != null) {
|
||||
target.leash.release();
|
||||
}
|
||||
if (target.startLeash != null) {
|
||||
target.startLeash.release();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
package com.android.quickstep;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Rect;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
@@ -24,7 +26,6 @@ import com.android.launcher3.util.SplitConfigurationOptions.SplitBounds;
|
||||
import com.android.quickstep.util.AnimatorControllerWithResistance;
|
||||
import com.android.quickstep.util.TaskViewSimulator;
|
||||
import com.android.quickstep.util.TransformParams;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@@ -75,7 +76,7 @@ public class RemoteTargetGluer {
|
||||
*/
|
||||
public RemoteTargetHandle[] assignTargets(RemoteAnimationTargets targets) {
|
||||
for (int i = 0; i < mRemoteTargetHandles.length; i++) {
|
||||
RemoteAnimationTargetCompat primaryTaskTarget = targets.apps[i];
|
||||
RemoteAnimationTarget primaryTaskTarget = targets.apps[i];
|
||||
mRemoteTargetHandles[i].mTransformParams.setTargetSet(
|
||||
createRemoteAnimationTargetsForTarget(targets, null));
|
||||
mRemoteTargetHandles[i].mTaskViewSimulator.setPreview(primaryTaskTarget, null);
|
||||
@@ -100,8 +101,8 @@ public class RemoteTargetGluer {
|
||||
*/
|
||||
public RemoteTargetHandle[] assignTargetsForSplitScreen(RemoteAnimationTargets targets,
|
||||
int[] splitIds) {
|
||||
RemoteAnimationTargetCompat topLeftTarget; // only one set if single/fullscreen task
|
||||
RemoteAnimationTargetCompat bottomRightTarget;
|
||||
RemoteAnimationTarget topLeftTarget; // only one set if single/fullscreen task
|
||||
RemoteAnimationTarget bottomRightTarget;
|
||||
if (mRemoteTargetHandles.length == 1) {
|
||||
// If we're not in split screen, the splitIds count doesn't really matter since we
|
||||
// should always hit this case.
|
||||
@@ -119,8 +120,8 @@ public class RemoteTargetGluer {
|
||||
// remoteTargetHandle[0] denotes topLeft task, so we pass in the bottomRight to exclude,
|
||||
// vice versa
|
||||
mSplitBounds = new SplitBounds(
|
||||
topLeftTarget.startScreenSpaceBounds,
|
||||
bottomRightTarget.startScreenSpaceBounds, splitIds[0], splitIds[1]);
|
||||
getStartBounds(topLeftTarget),
|
||||
getStartBounds(bottomRightTarget), splitIds[0], splitIds[1]);
|
||||
mRemoteTargetHandles[0].mTransformParams.setTargetSet(
|
||||
createRemoteAnimationTargetsForTarget(targets, bottomRightTarget));
|
||||
mRemoteTargetHandles[0].mTaskViewSimulator.setPreview(topLeftTarget,
|
||||
@@ -134,6 +135,10 @@ public class RemoteTargetGluer {
|
||||
return mRemoteTargetHandles;
|
||||
}
|
||||
|
||||
private Rect getStartBounds(RemoteAnimationTarget target) {
|
||||
return target.startBounds == null ? target.screenSpaceBounds : target.startBounds;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures that we aren't excluding ancillary targets such as home/recents
|
||||
*
|
||||
@@ -144,11 +149,10 @@ public class RemoteTargetGluer {
|
||||
*/
|
||||
private RemoteAnimationTargets createRemoteAnimationTargetsForTarget(
|
||||
RemoteAnimationTargets targets,
|
||||
RemoteAnimationTargetCompat targetToExclude) {
|
||||
ArrayList<RemoteAnimationTargetCompat> targetsWithoutExcluded =
|
||||
new ArrayList<RemoteAnimationTargetCompat>();
|
||||
RemoteAnimationTarget targetToExclude) {
|
||||
ArrayList<RemoteAnimationTarget> targetsWithoutExcluded = new ArrayList<>();
|
||||
|
||||
for (RemoteAnimationTargetCompat targetCompat : targets.unfilteredApps) {
|
||||
for (RemoteAnimationTarget targetCompat : targets.unfilteredApps) {
|
||||
if (targetCompat == targetToExclude) {
|
||||
continue;
|
||||
}
|
||||
@@ -162,9 +166,8 @@ public class RemoteTargetGluer {
|
||||
|
||||
targetsWithoutExcluded.add(targetCompat);
|
||||
}
|
||||
final RemoteAnimationTargetCompat[] filteredApps =
|
||||
targetsWithoutExcluded.toArray(
|
||||
new RemoteAnimationTargetCompat[targetsWithoutExcluded.size()]);
|
||||
final RemoteAnimationTarget[] filteredApps = targetsWithoutExcluded.toArray(
|
||||
new RemoteAnimationTarget[targetsWithoutExcluded.size()]);
|
||||
return new RemoteAnimationTargets(
|
||||
filteredApps, targets.wallpapers, targets.nonApps, targets.targetMode);
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import android.graphics.Matrix;
|
||||
import android.graphics.Matrix.ScaleToFit;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.UiThread;
|
||||
@@ -41,7 +42,6 @@ import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties;
|
||||
import com.android.quickstep.util.TaskViewSimulator;
|
||||
import com.android.quickstep.util.TransformParams;
|
||||
import com.android.quickstep.util.TransformParams.BuilderProxy;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.function.Consumer;
|
||||
@@ -335,7 +335,7 @@ public abstract class SwipeUpAnimationLogic implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBuildTargetParams(SurfaceProperties builder, RemoteAnimationTargetCompat app,
|
||||
public void onBuildTargetParams(SurfaceProperties builder, RemoteAnimationTarget app,
|
||||
TransformParams params) {
|
||||
builder.setMatrix(mMatrix)
|
||||
.setWindowCrop(mCropRect)
|
||||
|
||||
@@ -671,6 +671,7 @@ public class SystemUiProxy implements ISystemUiProxy {
|
||||
*
|
||||
* @return RemoteAnimationTargets of windows that need to animate but only exist in shell.
|
||||
*/
|
||||
@Nullable
|
||||
public RemoteAnimationTarget[] onGoingToRecentsLegacy(RemoteAnimationTarget[] apps) {
|
||||
if (mSplitScreen != null) {
|
||||
try {
|
||||
@@ -682,6 +683,7 @@ public class SystemUiProxy implements ISystemUiProxy {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public RemoteAnimationTarget[] onStartingSplitLegacy(RemoteAnimationTarget[] apps) {
|
||||
if (mSplitScreen != null) {
|
||||
try {
|
||||
|
||||
@@ -15,11 +15,12 @@
|
||||
*/
|
||||
package com.android.quickstep;
|
||||
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
|
||||
|
||||
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
|
||||
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
|
||||
import static com.android.quickstep.GestureState.STATE_RECENTS_ANIMATION_INITIALIZED;
|
||||
import static com.android.quickstep.GestureState.STATE_RECENTS_ANIMATION_STARTED;
|
||||
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME;
|
||||
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityOptions;
|
||||
@@ -38,12 +39,10 @@ import com.android.quickstep.TopTaskTracker.CachedTaskInfo;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
import com.android.systemui.shared.system.RemoteTransitionCompat;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListener;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListeners;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAnimationListener {
|
||||
@@ -57,7 +56,7 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
|
||||
private RecentsAnimationTargets mTargets;
|
||||
// Temporary until we can hook into gesture state events
|
||||
private GestureState mLastGestureState;
|
||||
private RemoteAnimationTargetCompat mLastAppearedTaskTarget;
|
||||
private RemoteAnimationTarget mLastAppearedTaskTarget;
|
||||
private Runnable mLiveTileCleanUpHandler;
|
||||
private Context mCtx;
|
||||
|
||||
@@ -151,12 +150,12 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTasksAppeared(RemoteAnimationTargetCompat[] appearedTaskTargets) {
|
||||
RemoteAnimationTargetCompat appearedTaskTarget = appearedTaskTargets[0];
|
||||
public void onTasksAppeared(RemoteAnimationTarget[] appearedTaskTargets) {
|
||||
RemoteAnimationTarget appearedTaskTarget = appearedTaskTargets[0];
|
||||
BaseActivityInterface activityInterface = mLastGestureState.getActivityInterface();
|
||||
|
||||
for (RemoteAnimationTargetCompat compat : appearedTaskTargets) {
|
||||
if (compat.activityType == ACTIVITY_TYPE_HOME
|
||||
for (RemoteAnimationTarget compat : appearedTaskTargets) {
|
||||
if (compat.windowConfiguration.getActivityType() == ACTIVITY_TYPE_HOME
|
||||
&& activityInterface.getCreatedActivity() instanceof RecentsActivity) {
|
||||
// When receive opening home activity while recents is running, enter home
|
||||
// and dismiss recents.
|
||||
@@ -165,11 +164,11 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
|
||||
}
|
||||
}
|
||||
|
||||
RemoteAnimationTarget[] nonAppTargets = SystemUiProxy.INSTANCE.getNoCreate()
|
||||
.onStartingSplitLegacy(Arrays.stream(appearedTaskTargets)
|
||||
.map(RemoteAnimationTargetCompat::unwrap)
|
||||
.toArray(RemoteAnimationTarget[]::new));
|
||||
|
||||
RemoteAnimationTarget[] nonAppTargets = SystemUiProxy.INSTANCE.get(mCtx)
|
||||
.onStartingSplitLegacy(appearedTaskTargets);
|
||||
if (nonAppTargets == null) {
|
||||
nonAppTargets = new RemoteAnimationTarget[0];
|
||||
}
|
||||
if (activityInterface.isInLiveTileMode()
|
||||
&& activityInterface.getCreatedActivity() != null) {
|
||||
RecentsView recentsView =
|
||||
@@ -177,13 +176,13 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
|
||||
if (recentsView != null) {
|
||||
recentsView.launchSideTaskInLiveTileMode(appearedTaskTarget.taskId,
|
||||
appearedTaskTargets,
|
||||
new RemoteAnimationTargetCompat[0] /* wallpaper */,
|
||||
RemoteAnimationTargetCompat.wrap(nonAppTargets) /* nonApps */);
|
||||
new RemoteAnimationTarget[0] /* wallpaper */,
|
||||
nonAppTargets /* nonApps */);
|
||||
return;
|
||||
}
|
||||
} else if (nonAppTargets != null && nonAppTargets.length > 0) {
|
||||
} else if (nonAppTargets.length > 0) {
|
||||
TaskViewUtils.createSplitAuxiliarySurfacesAnimator(
|
||||
RemoteAnimationTargetCompat.wrap(nonAppTargets) /* nonApps */,
|
||||
nonAppTargets /* nonApps */,
|
||||
true /*shown*/, dividerAnimator -> {
|
||||
dividerAnimator.start();
|
||||
dividerAnimator.end();
|
||||
|
||||
@@ -26,6 +26,7 @@ import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Log;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
@@ -34,7 +35,6 @@ import com.android.launcher3.util.ComponentKey;
|
||||
import com.android.launcher3.util.PackageManagerHelper;
|
||||
import com.android.systemui.shared.recents.model.Task;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -87,9 +87,9 @@ public final class TaskUtils {
|
||||
}
|
||||
|
||||
|
||||
public static boolean taskIsATargetWithMode(RemoteAnimationTargetCompat[] targets,
|
||||
public static boolean taskIsATargetWithMode(RemoteAnimationTarget[] targets,
|
||||
int taskId, int mode) {
|
||||
for (RemoteAnimationTargetCompat target : targets) {
|
||||
for (RemoteAnimationTarget target : targets) {
|
||||
if (target.mode == mode && target.taskId == taskId) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
package com.android.quickstep;
|
||||
|
||||
import static android.view.RemoteAnimationTarget.MODE_CLOSING;
|
||||
import static android.view.RemoteAnimationTarget.MODE_OPENING;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER;
|
||||
import static android.view.WindowManager.TRANSIT_OPEN;
|
||||
import static android.view.WindowManager.TRANSIT_TO_FRONT;
|
||||
@@ -35,8 +37,6 @@ import static com.android.launcher3.anim.Interpolators.LINEAR;
|
||||
import static com.android.launcher3.anim.Interpolators.TOUCH_RESPONSE_INTERPOLATOR;
|
||||
import static com.android.launcher3.anim.Interpolators.clampToProgress;
|
||||
import static com.android.launcher3.statehandlers.DepthController.STATE_DEPTH;
|
||||
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
|
||||
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_OPENING;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
@@ -51,6 +51,7 @@ import android.graphics.Matrix.ScaleToFit;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.os.Build;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.SurfaceControl;
|
||||
import android.view.View;
|
||||
import android.window.TransitionInfo;
|
||||
@@ -103,7 +104,7 @@ public final class TaskViewUtils {
|
||||
* opening remote target (which we don't get until onAnimationStart) will resolve to a TaskView.
|
||||
*/
|
||||
public static TaskView findTaskViewToLaunch(
|
||||
RecentsView recentsView, View v, RemoteAnimationTargetCompat[] targets) {
|
||||
RecentsView recentsView, View v, RemoteAnimationTarget[] targets) {
|
||||
if (v instanceof TaskView) {
|
||||
TaskView taskView = (TaskView) v;
|
||||
return recentsView.isTaskViewVisible(taskView) ? taskView : null;
|
||||
@@ -133,7 +134,7 @@ public final class TaskViewUtils {
|
||||
}
|
||||
// Resolve the opening task id
|
||||
int openingTaskId = -1;
|
||||
for (RemoteAnimationTargetCompat target : targets) {
|
||||
for (RemoteAnimationTarget target : targets) {
|
||||
if (target.mode == MODE_OPENING) {
|
||||
openingTaskId = target.taskId;
|
||||
break;
|
||||
@@ -156,9 +157,9 @@ public final class TaskViewUtils {
|
||||
|
||||
public static void createRecentsWindowAnimator(
|
||||
@NonNull TaskView v, boolean skipViewChanges,
|
||||
@NonNull RemoteAnimationTargetCompat[] appTargets,
|
||||
@NonNull RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
@NonNull RemoteAnimationTargetCompat[] nonAppTargets,
|
||||
@NonNull RemoteAnimationTarget[] appTargets,
|
||||
@NonNull RemoteAnimationTarget[] wallpaperTargets,
|
||||
@NonNull RemoteAnimationTarget[] nonAppTargets,
|
||||
@Nullable DepthController depthController,
|
||||
PendingAnimation out) {
|
||||
RecentsView recentsView = v.getRecentsView();
|
||||
@@ -168,7 +169,7 @@ public final class TaskViewUtils {
|
||||
final RemoteAnimationTargets targets =
|
||||
new RemoteAnimationTargets(appTargets, wallpaperTargets, nonAppTargets,
|
||||
MODE_OPENING);
|
||||
final RemoteAnimationTargetCompat navBarTarget = targets.getNavBarRemoteAnimationTarget();
|
||||
final RemoteAnimationTarget navBarTarget = targets.getNavBarRemoteAnimationTarget();
|
||||
|
||||
SurfaceTransactionApplier applier = new SurfaceTransactionApplier(v);
|
||||
targets.addReleaseCheck(applier);
|
||||
@@ -410,12 +411,12 @@ public final class TaskViewUtils {
|
||||
}
|
||||
});
|
||||
|
||||
final RemoteAnimationTargetCompat[] appTargets =
|
||||
final RemoteAnimationTarget[] appTargets =
|
||||
RemoteAnimationTargetCompat.wrapApps(transitionInfo, t, null /* leashMap */);
|
||||
final RemoteAnimationTargetCompat[] wallpaperTargets =
|
||||
final RemoteAnimationTarget[] wallpaperTargets =
|
||||
RemoteAnimationTargetCompat.wrapNonApps(
|
||||
transitionInfo, true /* wallpapers */, t, null /* leashMap */);
|
||||
final RemoteAnimationTargetCompat[] nonAppTargets =
|
||||
final RemoteAnimationTarget[] nonAppTargets =
|
||||
RemoteAnimationTargetCompat.wrapNonApps(
|
||||
transitionInfo, false /* wallpapers */, t, null /* leashMap */);
|
||||
final RecentsView recentsView = launchingTaskView.getRecentsView();
|
||||
@@ -492,9 +493,9 @@ public final class TaskViewUtils {
|
||||
public static void composeRecentsSplitLaunchAnimatorLegacy(
|
||||
@Nullable GroupedTaskView launchingTaskView, int initialTaskId,
|
||||
@Nullable PendingIntent initialTaskPendingIntent, int secondTaskId,
|
||||
@NonNull RemoteAnimationTargetCompat[] appTargets,
|
||||
@NonNull RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
@NonNull RemoteAnimationTargetCompat[] nonAppTargets,
|
||||
@NonNull RemoteAnimationTarget[] appTargets,
|
||||
@NonNull RemoteAnimationTarget[] wallpaperTargets,
|
||||
@NonNull RemoteAnimationTarget[] nonAppTargets,
|
||||
@NonNull StateManager stateManager,
|
||||
@Nullable DepthController depthController,
|
||||
@NonNull Runnable finishCallback) {
|
||||
@@ -517,7 +518,7 @@ public final class TaskViewUtils {
|
||||
|
||||
final ArrayList<SurfaceControl> openingTargets = new ArrayList<>();
|
||||
final ArrayList<SurfaceControl> closingTargets = new ArrayList<>();
|
||||
for (RemoteAnimationTargetCompat appTarget : appTargets) {
|
||||
for (RemoteAnimationTarget appTarget : appTargets) {
|
||||
final int taskId = appTarget.taskInfo != null ? appTarget.taskInfo.taskId : -1;
|
||||
final int mode = appTarget.mode;
|
||||
final SurfaceControl leash = appTarget.leash;
|
||||
@@ -572,9 +573,9 @@ public final class TaskViewUtils {
|
||||
}
|
||||
|
||||
public static void composeRecentsLaunchAnimator(@NonNull AnimatorSet anim, @NonNull View v,
|
||||
@NonNull RemoteAnimationTargetCompat[] appTargets,
|
||||
@NonNull RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
@NonNull RemoteAnimationTargetCompat[] nonAppTargets, boolean launcherClosing,
|
||||
@NonNull RemoteAnimationTarget[] appTargets,
|
||||
@NonNull RemoteAnimationTarget[] wallpaperTargets,
|
||||
@NonNull RemoteAnimationTarget[] nonAppTargets, boolean launcherClosing,
|
||||
@NonNull StateManager stateManager, @NonNull RecentsView recentsView,
|
||||
@Nullable DepthController depthController) {
|
||||
boolean skipLauncherChanges = !launcherClosing;
|
||||
@@ -666,7 +667,7 @@ public final class TaskViewUtils {
|
||||
* @return the animator animating the surfaces
|
||||
*/
|
||||
public static ValueAnimator createSplitAuxiliarySurfacesAnimator(
|
||||
RemoteAnimationTargetCompat[] nonApps, boolean shown,
|
||||
RemoteAnimationTarget[] nonApps, boolean shown,
|
||||
Consumer<ValueAnimator> animatorHandler) {
|
||||
if (nonApps == null || nonApps.length == 0) {
|
||||
return null;
|
||||
@@ -676,7 +677,7 @@ public final class TaskViewUtils {
|
||||
List<SurfaceControl> auxiliarySurfaces = new ArrayList<>(nonApps.length);
|
||||
boolean hasSurfaceToAnimate = false;
|
||||
for (int i = 0; i < nonApps.length; ++i) {
|
||||
final RemoteAnimationTargetCompat targ = nonApps[i];
|
||||
final RemoteAnimationTarget targ = nonApps[i];
|
||||
final SurfaceControl leash = targ.leash;
|
||||
if (targ.windowType == TYPE_DOCK_DIVIDER && leash != null && leash.isValid()) {
|
||||
auxiliarySurfaces.add(leash);
|
||||
|
||||
@@ -37,6 +37,7 @@ import android.graphics.Matrix;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.PointF;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.VelocityTracker;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
@@ -59,7 +60,6 @@ import com.android.quickstep.util.TransformParams.BuilderProxy;
|
||||
import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.InputMonitorCompat;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
@@ -290,7 +290,7 @@ public class DeviceLockedInputConsumer implements InputConsumer,
|
||||
|
||||
@Override
|
||||
public void onBuildTargetParams(
|
||||
SurfaceProperties builder, RemoteAnimationTargetCompat app, TransformParams params) {
|
||||
SurfaceProperties builder, RemoteAnimationTarget app, TransformParams params) {
|
||||
mMatrix.setTranslate(0, mProgress.value * mMaxTranslationY);
|
||||
builder.setMatrix(mMatrix);
|
||||
}
|
||||
|
||||
@@ -16,23 +16,22 @@
|
||||
package com.android.quickstep.util;
|
||||
|
||||
import android.animation.AnimatorSet;
|
||||
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
|
||||
public abstract class RemoteAnimationProvider {
|
||||
|
||||
public abstract AnimatorSet createWindowAnimation(RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets);
|
||||
public abstract AnimatorSet createWindowAnimation(RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets);
|
||||
|
||||
/**
|
||||
* @return the target with the lowest opaque layer for a certain app animation, or null.
|
||||
*/
|
||||
public static RemoteAnimationTargetCompat findLowestOpaqueLayerTarget(
|
||||
RemoteAnimationTargetCompat[] appTargets, int mode) {
|
||||
public static RemoteAnimationTarget findLowestOpaqueLayerTarget(
|
||||
RemoteAnimationTarget[] appTargets, int mode) {
|
||||
int lowestLayer = Integer.MAX_VALUE;
|
||||
int lowestLayerIndex = -1;
|
||||
for (int i = appTargets.length - 1; i >= 0; i--) {
|
||||
RemoteAnimationTargetCompat target = appTargets[i];
|
||||
RemoteAnimationTarget target = appTargets[i];
|
||||
if (target.mode == mode && !target.isTranslucent) {
|
||||
int layer = target.prefixOrderIndex;
|
||||
if (layer < lowestLayer) {
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
*/
|
||||
package com.android.quickstep.util;
|
||||
|
||||
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
|
||||
import static android.view.RemoteAnimationTarget.MODE_CLOSING;
|
||||
|
||||
import android.animation.ValueAnimator;
|
||||
import android.animation.ValueAnimator.AnimatorUpdateListener;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.SurfaceControl.Transaction;
|
||||
|
||||
import com.android.quickstep.RemoteAnimationTargets;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
/**
|
||||
* Animation listener which fades out the closing targets
|
||||
@@ -32,24 +32,24 @@ public class RemoteFadeOutAnimationListener implements AnimatorUpdateListener {
|
||||
private final RemoteAnimationTargets mTarget;
|
||||
private boolean mFirstFrame = true;
|
||||
|
||||
public RemoteFadeOutAnimationListener(RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets) {
|
||||
public RemoteFadeOutAnimationListener(RemoteAnimationTarget[] appTargets,
|
||||
RemoteAnimationTarget[] wallpaperTargets) {
|
||||
mTarget = new RemoteAnimationTargets(appTargets, wallpaperTargets,
|
||||
new RemoteAnimationTargetCompat[0], MODE_CLOSING);
|
||||
new RemoteAnimationTarget[0], MODE_CLOSING);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationUpdate(ValueAnimator valueAnimator) {
|
||||
Transaction t = new Transaction();
|
||||
if (mFirstFrame) {
|
||||
for (RemoteAnimationTargetCompat target : mTarget.unfilteredApps) {
|
||||
for (RemoteAnimationTarget target : mTarget.unfilteredApps) {
|
||||
t.show(target.leash);
|
||||
}
|
||||
mFirstFrame = false;
|
||||
}
|
||||
|
||||
float alpha = 1 - valueAnimator.getAnimatedFraction();
|
||||
for (RemoteAnimationTargetCompat app : mTarget.apps) {
|
||||
for (RemoteAnimationTarget app : mTarget.apps) {
|
||||
t.setAlpha(app.leash, alpha);
|
||||
}
|
||||
t.apply();
|
||||
|
||||
@@ -38,6 +38,7 @@ import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
import android.view.RemoteAnimationAdapter;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.SurfaceControl;
|
||||
import android.window.TransitionInfo;
|
||||
|
||||
@@ -61,7 +62,6 @@ import com.android.quickstep.views.TaskView;
|
||||
import com.android.systemui.shared.recents.model.Task;
|
||||
import com.android.systemui.shared.system.RemoteAnimationAdapterCompat;
|
||||
import com.android.systemui.shared.system.RemoteAnimationRunnerCompat;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
import com.android.systemui.shared.system.RemoteTransitionCompat;
|
||||
import com.android.systemui.shared.system.RemoteTransitionRunner;
|
||||
|
||||
@@ -359,8 +359,8 @@ public class SplitSelectStateController {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationStart(int transit, RemoteAnimationTargetCompat[] apps,
|
||||
RemoteAnimationTargetCompat[] wallpapers, RemoteAnimationTargetCompat[] nonApps,
|
||||
public void onAnimationStart(int transit, RemoteAnimationTarget[] apps,
|
||||
RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps,
|
||||
Runnable finishedCallback) {
|
||||
postAsyncCallback(mHandler,
|
||||
() -> TaskViewUtils.composeRecentsSplitLaunchAnimatorLegacy(
|
||||
|
||||
@@ -35,6 +35,7 @@ import android.graphics.PointF;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.util.Log;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
@@ -50,7 +51,6 @@ import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties;
|
||||
import com.android.quickstep.views.TaskView.FullscreenDrawParams;
|
||||
import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.recents.utilities.PreviewPositionHelper;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
/**
|
||||
* A utility class which emulates the layout behavior of TaskView and RecentsView
|
||||
@@ -171,8 +171,11 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy {
|
||||
/**
|
||||
* Sets the targets which the simulator will control
|
||||
*/
|
||||
public void setPreview(RemoteAnimationTargetCompat runningTarget) {
|
||||
setPreviewBounds(runningTarget.startScreenSpaceBounds, runningTarget.contentInsets);
|
||||
public void setPreview(RemoteAnimationTarget runningTarget) {
|
||||
setPreviewBounds(
|
||||
runningTarget.startBounds == null
|
||||
? runningTarget.screenSpaceBounds : runningTarget.startBounds,
|
||||
runningTarget.contentInsets);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -181,7 +184,7 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy {
|
||||
*
|
||||
* @param splitInfo set to {@code null} when not in staged split mode
|
||||
*/
|
||||
public void setPreview(RemoteAnimationTargetCompat runningTarget, SplitBounds splitInfo) {
|
||||
public void setPreview(RemoteAnimationTarget runningTarget, SplitBounds splitInfo) {
|
||||
setPreview(runningTarget);
|
||||
mSplitBounds = splitInfo;
|
||||
if (mSplitBounds == null) {
|
||||
@@ -387,7 +390,7 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy {
|
||||
|
||||
@Override
|
||||
public void onBuildTargetParams(
|
||||
SurfaceProperties builder, RemoteAnimationTargetCompat app, TransformParams params) {
|
||||
SurfaceProperties builder, RemoteAnimationTarget app, TransformParams params) {
|
||||
builder.setMatrix(mMatrix)
|
||||
.setWindowCrop(mTmpCropRect)
|
||||
.setCornerRadius(getCurrentCornerRadius());
|
||||
|
||||
@@ -15,14 +15,18 @@
|
||||
*/
|
||||
package com.android.quickstep.util;
|
||||
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
|
||||
|
||||
import android.util.FloatProperty;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.SurfaceControl;
|
||||
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.anim.Interpolators;
|
||||
import com.android.quickstep.RemoteAnimationTargets;
|
||||
import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
public class TransformParams {
|
||||
|
||||
@@ -140,16 +144,16 @@ public class TransformParams {
|
||||
mRecentsSurface = getRecentsSurface(targets);
|
||||
|
||||
for (int i = 0; i < targets.unfilteredApps.length; i++) {
|
||||
RemoteAnimationTargetCompat app = targets.unfilteredApps[i];
|
||||
RemoteAnimationTarget app = targets.unfilteredApps[i];
|
||||
SurfaceProperties builder = transaction.forSurface(app.leash);
|
||||
|
||||
if (app.mode == targets.targetMode) {
|
||||
if (app.activityType == RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME) {
|
||||
int activityType = app.windowConfiguration.getActivityType();
|
||||
if (activityType == ACTIVITY_TYPE_HOME) {
|
||||
mHomeBuilderProxy.onBuildTargetParams(builder, app, this);
|
||||
} else {
|
||||
// Fade out Assistant overlay.
|
||||
if (app.activityType == RemoteAnimationTargetCompat.ACTIVITY_TYPE_ASSISTANT
|
||||
&& app.isNotInRecents) {
|
||||
if (activityType == ACTIVITY_TYPE_ASSISTANT && app.isNotInRecents) {
|
||||
float progress = Utilities.boundToRange(getProgress(), 0, 1);
|
||||
builder.setAlpha(1 - Interpolators.DEACCEL_2_5.getInterpolation(progress));
|
||||
} else {
|
||||
@@ -166,7 +170,7 @@ public class TransformParams {
|
||||
// always put wallpaper layer to bottom.
|
||||
final int wallpaperLength = targets.wallpapers != null ? targets.wallpapers.length : 0;
|
||||
for (int i = 0; i < wallpaperLength; i++) {
|
||||
RemoteAnimationTargetCompat wallpaper = targets.wallpapers[i];
|
||||
RemoteAnimationTarget wallpaper = targets.wallpapers[i];
|
||||
transaction.forSurface(wallpaper.leash).setLayer(Integer.MIN_VALUE);
|
||||
}
|
||||
return transaction;
|
||||
@@ -174,9 +178,9 @@ public class TransformParams {
|
||||
|
||||
private static SurfaceControl getRecentsSurface(RemoteAnimationTargets targets) {
|
||||
for (int i = 0; i < targets.unfilteredApps.length; i++) {
|
||||
RemoteAnimationTargetCompat app = targets.unfilteredApps[i];
|
||||
RemoteAnimationTarget app = targets.unfilteredApps[i];
|
||||
if (app.mode == targets.targetMode) {
|
||||
if (app.activityType == RemoteAnimationTargetCompat.ACTIVITY_TYPE_RECENTS) {
|
||||
if (app.windowConfiguration.getActivityType() == ACTIVITY_TYPE_RECENTS) {
|
||||
return app.leash;
|
||||
}
|
||||
} else {
|
||||
@@ -223,6 +227,6 @@ public class TransformParams {
|
||||
BuilderProxy ALWAYS_VISIBLE = (builder, app, params) -> builder.setAlpha(1);
|
||||
|
||||
void onBuildTargetParams(SurfaceProperties builder,
|
||||
RemoteAnimationTargetCompat app, TransformParams params);
|
||||
RemoteAnimationTarget app, TransformParams params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import android.os.Build;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Size;
|
||||
import android.view.GhostView;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
|
||||
@@ -41,7 +42,6 @@ import com.android.launcher3.views.FloatingView;
|
||||
import com.android.launcher3.views.ListenerView;
|
||||
import com.android.launcher3.widget.LauncherAppWidgetHostView;
|
||||
import com.android.launcher3.widget.RoundedCornerEnforcement;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
/** A view that mimics an App Widget through a launch animation. */
|
||||
@TargetApi(Build.VERSION_CODES.S)
|
||||
@@ -304,7 +304,7 @@ public class FloatingWidgetView extends FrameLayout implements AnimatorListener,
|
||||
* context's theme background color.
|
||||
*/
|
||||
public static int getDefaultBackgroundColor(
|
||||
Context context, RemoteAnimationTargetCompat target) {
|
||||
Context context, RemoteAnimationTarget target) {
|
||||
return (target != null && target.taskInfo.taskDescription != null)
|
||||
? target.taskInfo.taskDescription.getBackgroundColor()
|
||||
: Themes.getColorBackground(context);
|
||||
|
||||
@@ -104,6 +104,7 @@ import android.view.HapticFeedbackConstants;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.View;
|
||||
import android.view.ViewDebug;
|
||||
import android.view.ViewGroup;
|
||||
@@ -192,7 +193,6 @@ import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
|
||||
import com.android.systemui.shared.system.PackageManagerWrapper;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListener;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListeners;
|
||||
import com.android.wm.shell.pip.IPipAnimationListener;
|
||||
@@ -1064,8 +1064,8 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
}
|
||||
}
|
||||
|
||||
public void launchSideTaskInLiveTileMode(int taskId, RemoteAnimationTargetCompat[] apps,
|
||||
RemoteAnimationTargetCompat[] wallpaper, RemoteAnimationTargetCompat[] nonApps) {
|
||||
public void launchSideTaskInLiveTileMode(int taskId, RemoteAnimationTarget[] apps,
|
||||
RemoteAnimationTarget[] wallpaper, RemoteAnimationTarget[] nonApps) {
|
||||
AnimatorSet anim = new AnimatorSet();
|
||||
TaskView taskView = getTaskViewByTaskId(taskId);
|
||||
if (taskView == null || !isTaskViewVisible(taskView)) {
|
||||
|
||||
@@ -53,6 +53,7 @@ import android.util.FloatProperty;
|
||||
import android.util.Log;
|
||||
import android.view.Display;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.TouchDelegate;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -101,7 +102,6 @@ import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.recents.utilities.PreviewPositionHelper;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.QuickStepContract;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.util.Arrays;
|
||||
@@ -739,14 +739,14 @@ public class TaskView extends FrameLayout implements Reusable {
|
||||
} else {
|
||||
TransformParams topLeftParams = remoteTargetHandles[0].getTransformParams();
|
||||
TransformParams rightBottomParams = remoteTargetHandles[1].getTransformParams();
|
||||
RemoteAnimationTargetCompat[] apps = Stream.concat(
|
||||
RemoteAnimationTarget[] apps = Stream.concat(
|
||||
Arrays.stream(topLeftParams.getTargetSet().apps),
|
||||
Arrays.stream(rightBottomParams.getTargetSet().apps))
|
||||
.toArray(RemoteAnimationTargetCompat[]::new);
|
||||
RemoteAnimationTargetCompat[] wallpapers = Stream.concat(
|
||||
.toArray(RemoteAnimationTarget[]::new);
|
||||
RemoteAnimationTarget[] wallpapers = Stream.concat(
|
||||
Arrays.stream(topLeftParams.getTargetSet().wallpapers),
|
||||
Arrays.stream(rightBottomParams.getTargetSet().wallpapers))
|
||||
.toArray(RemoteAnimationTargetCompat[]::new);
|
||||
.toArray(RemoteAnimationTarget[]::new);
|
||||
targets = new RemoteAnimationTargets(apps, wallpapers,
|
||||
topLeftParams.getTargetSet().nonApps,
|
||||
topLeftParams.getTargetSet().targetMode);
|
||||
|
||||
@@ -23,6 +23,7 @@ import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.util.ArrayMap;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.Surface;
|
||||
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
@@ -42,7 +43,6 @@ import com.android.launcher3.util.window.WindowManagerProxy;
|
||||
import com.android.quickstep.FallbackActivityInterface;
|
||||
import com.android.quickstep.SystemUiProxy;
|
||||
import com.android.quickstep.util.SurfaceTransaction.MockProperties;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
import org.hamcrest.Description;
|
||||
import org.hamcrest.TypeSafeMatcher;
|
||||
@@ -209,7 +209,7 @@ public class TaskViewSimulatorTest {
|
||||
public SurfaceTransaction createSurfaceParams(BuilderProxy proxy) {
|
||||
RecordingSurfaceTransaction transaction = new RecordingSurfaceTransaction();
|
||||
proxy.onBuildTargetParams(
|
||||
transaction.mockProperties, mock(RemoteAnimationTargetCompat.class), this);
|
||||
transaction.mockProperties, mock(RemoteAnimationTarget.class), this);
|
||||
return transaction;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user