Merge "Add basic home to recents anim for fallback recents" into ub-launcher3-qt-dev
This commit is contained in:
commit
695e8df526
|
@ -17,6 +17,7 @@ package com.android.quickstep;
|
|||
|
||||
import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
|
||||
import static com.android.quickstep.views.IconRecentsView.REMOTE_APP_TO_OVERVIEW_DURATION;
|
||||
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME;
|
||||
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
|
||||
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_OPENING;
|
||||
|
||||
|
@ -134,7 +135,11 @@ final class AppToOverviewAnimationProvider<T extends BaseDraggingActivity> imple
|
|||
return anim;
|
||||
}
|
||||
|
||||
mRecentsView.playRemoteAppToRecentsAnimation(anim, closingAppTarget, recentsTarget);
|
||||
if (closingAppTarget.activityType == ACTIVITY_TYPE_HOME) {
|
||||
mRecentsView.playRemoteHomeToRecentsAnimation(anim, closingAppTarget, recentsTarget);
|
||||
} else {
|
||||
mRecentsView.playRemoteAppToRecentsAnimation(anim, closingAppTarget, recentsTarget);
|
||||
}
|
||||
|
||||
return anim;
|
||||
}
|
||||
|
|
|
@ -641,6 +641,53 @@ public final class IconRecentsView extends FrameLayout implements Insettable {
|
|||
mStartedEnterAnimation = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Play remote app to recents animation when the app is the home activity. We use a simple
|
||||
* cross-fade here. Note this is only used if the home activity is a separate app than the
|
||||
* recents activity.
|
||||
*
|
||||
* @param anim animator set
|
||||
* @param homeTarget the home surface thats closing
|
||||
* @param recentsTarget the surface containing recents
|
||||
*/
|
||||
public void playRemoteHomeToRecentsAnimation(@NonNull AnimatorSet anim,
|
||||
@NonNull RemoteAnimationTargetCompat homeTarget,
|
||||
@NonNull RemoteAnimationTargetCompat recentsTarget) {
|
||||
SyncRtSurfaceTransactionApplierCompat surfaceApplier =
|
||||
new SyncRtSurfaceTransactionApplierCompat(this);
|
||||
|
||||
SurfaceParams[] params = new SurfaceParams[2];
|
||||
int boostedMode = MODE_CLOSING;
|
||||
|
||||
ValueAnimator remoteHomeAnim = ValueAnimator.ofFloat(0, 1);
|
||||
remoteHomeAnim.setDuration(REMOTE_APP_TO_OVERVIEW_DURATION);
|
||||
|
||||
remoteHomeAnim.addUpdateListener(valueAnimator -> {
|
||||
float val = (float) valueAnimator.getAnimatedValue();
|
||||
float alpha;
|
||||
RemoteAnimationTargetCompat visibleTarget;
|
||||
RemoteAnimationTargetCompat invisibleTarget;
|
||||
if (val < .5f) {
|
||||
visibleTarget = homeTarget;
|
||||
invisibleTarget = recentsTarget;
|
||||
alpha = 1 - (val * 2);
|
||||
} else {
|
||||
visibleTarget = recentsTarget;
|
||||
invisibleTarget = homeTarget;
|
||||
alpha = (val - .5f) * 2;
|
||||
}
|
||||
params[0] = new SurfaceParams(visibleTarget.leash, alpha, null /* matrix */,
|
||||
null /* windowCrop */, getLayer(visibleTarget, boostedMode),
|
||||
0 /* cornerRadius */);
|
||||
params[1] = new SurfaceParams(invisibleTarget.leash, 0.0f, null /* matrix */,
|
||||
null /* windowCrop */, getLayer(invisibleTarget, boostedMode),
|
||||
0 /* cornerRadius */);
|
||||
surfaceApplier.scheduleApply(params);
|
||||
});
|
||||
anim.play(remoteHomeAnim);
|
||||
animateFadeInLayoutAnimation();
|
||||
}
|
||||
|
||||
/**
|
||||
* Play remote animation from app to recents. This should scale the currently closing app down
|
||||
* to the recents thumbnail.
|
||||
|
|
Loading…
Reference in New Issue