Merge "Pass background color from transition info to remote animation" into tm-dev

This commit is contained in:
Riddle Hsu
2022-04-07 08:41:17 +00:00
committed by Android (Google) Code Review
3 changed files with 15 additions and 2 deletions

View File

@@ -33,6 +33,7 @@ import static android.view.RemoteAnimationTargetProto.TASK_ID;
import static android.view.RemoteAnimationTargetProto.WINDOW_CONFIGURATION; import static android.view.RemoteAnimationTargetProto.WINDOW_CONFIGURATION;
import static android.view.WindowManager.LayoutParams.INVALID_WINDOW_TYPE; import static android.view.WindowManager.LayoutParams.INVALID_WINDOW_TYPE;
import android.annotation.ColorInt;
import android.annotation.IntDef; import android.annotation.IntDef;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.app.TaskInfo; import android.app.TaskInfo;
@@ -221,6 +222,12 @@ public class RemoteAnimationTarget implements Parcelable {
*/ */
public boolean hasAnimatingParent; public boolean hasAnimatingParent;
/**
* The background color of animation in case the task info is not available if the transition
* is activity level.
*/
public @ColorInt int backgroundColor;
public RemoteAnimationTarget(int taskId, int mode, SurfaceControl leash, boolean isTranslucent, public RemoteAnimationTarget(int taskId, int mode, SurfaceControl leash, boolean isTranslucent,
Rect clipRect, Rect contentInsets, int prefixOrderIndex, Point position, Rect clipRect, Rect contentInsets, int prefixOrderIndex, Point position,
Rect localBounds, Rect screenSpaceBounds, Rect localBounds, Rect screenSpaceBounds,
@@ -279,6 +286,7 @@ public class RemoteAnimationTarget implements Parcelable {
allowEnterPip = in.readBoolean(); allowEnterPip = in.readBoolean();
windowType = in.readInt(); windowType = in.readInt();
hasAnimatingParent = in.readBoolean(); hasAnimatingParent = in.readBoolean();
backgroundColor = in.readInt();
} }
@Override @Override
@@ -307,6 +315,7 @@ public class RemoteAnimationTarget implements Parcelable {
dest.writeBoolean(allowEnterPip); dest.writeBoolean(allowEnterPip);
dest.writeInt(windowType); dest.writeInt(windowType);
dest.writeBoolean(hasAnimatingParent); dest.writeBoolean(hasAnimatingParent);
dest.writeInt(backgroundColor);
} }
public void dump(PrintWriter pw, String prefix) { public void dump(PrintWriter pw, String prefix) {
@@ -327,6 +336,7 @@ public class RemoteAnimationTarget implements Parcelable {
pw.print(prefix); pw.print("allowEnterPip="); pw.println(allowEnterPip); pw.print(prefix); pw.print("allowEnterPip="); pw.println(allowEnterPip);
pw.print(prefix); pw.print("windowType="); pw.print(windowType); pw.print(prefix); pw.print("windowType="); pw.print(windowType);
pw.print(prefix); pw.print("hasAnimatingParent="); pw.print(hasAnimatingParent); pw.print(prefix); pw.print("hasAnimatingParent="); pw.print(hasAnimatingParent);
pw.print(prefix); pw.print("backgroundColor="); pw.print(backgroundColor);
} }
public void dumpDebug(ProtoOutputStream proto, long fieldId) { public void dumpDebug(ProtoOutputStream proto, long fieldId) {

View File

@@ -432,7 +432,8 @@ class ActivityLaunchAnimator(
right = windowBounds.right right = windowBounds.right
) )
val callback = this@ActivityLaunchAnimator.callback!! val callback = this@ActivityLaunchAnimator.callback!!
val windowBackgroundColor = callback.getBackgroundColor(window.taskInfo) val windowBackgroundColor = window.taskInfo?.let { callback.getBackgroundColor(it) }
?: window.backgroundColor
// Make sure we use the modified timings when animating a dialog into an app. // Make sure we use the modified timings when animating a dialog into an app.
val launchAnimator = if (controller.isDialogLaunch) { val launchAnimator = if (controller.isDialogLaunch) {

View File

@@ -138,7 +138,7 @@ class RemoteTransitionAdapter {
info: TransitionInfo, info: TransitionInfo,
t: SurfaceControl.Transaction t: SurfaceControl.Transaction
): RemoteAnimationTarget { ): RemoteAnimationTarget {
return RemoteAnimationTarget( val target = RemoteAnimationTarget(
/* taskId */ if (change.taskInfo != null) change.taskInfo!!.taskId else -1, /* taskId */ if (change.taskInfo != null) change.taskInfo!!.taskId else -1,
/* mode */ newModeToLegacyMode(change.mode), /* mode */ newModeToLegacyMode(change.mode),
/* leash */ createLeash(info, change, order, t), /* leash */ createLeash(info, change, order, t),
@@ -160,6 +160,8 @@ class RemoteTransitionAdapter {
/* taskInfo */ change.taskInfo, /* taskInfo */ change.taskInfo,
/* allowEnterPip */ change.allowEnterPip, /* allowEnterPip */ change.allowEnterPip,
/* windowType */ WindowManager.LayoutParams.INVALID_WINDOW_TYPE) /* windowType */ WindowManager.LayoutParams.INVALID_WINDOW_TYPE)
target.backgroundColor = change.backgroundColor
return target
} }
/** /**