summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/Transition.java27
-rw-r--r--services/core/java/com/android/server/wm/WindowContainer.java28
2 files changed, 40 insertions, 15 deletions
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java
index c874747b0b5a..5ad44b326aec 100644
--- a/services/core/java/com/android/server/wm/Transition.java
+++ b/services/core/java/com/android/server/wm/Transition.java
@@ -1730,13 +1730,26 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
}
if (activityRecord != null || (taskFragment != null && taskFragment.isEmbedded())) {
- // Set background color to Task theme color for activity and embedded TaskFragment
- // in case we want to show background during the animation.
- final Task parentTask = activityRecord != null
- ? activityRecord.getTask()
- : taskFragment.getTask();
- final int backgroundColor = ColorUtils.setAlphaComponent(
- parentTask.getTaskDescription().getBackgroundColor(), 255);
+ final int backgroundColor;
+ final TaskFragment organizedTf = activityRecord != null
+ ? activityRecord.getOrganizedTaskFragment()
+ : taskFragment.getOrganizedTaskFragment();
+ if (organizedTf != null && organizedTf.getAnimationParams()
+ .getAnimationBackgroundColor() != 0) {
+ // This window is embedded and has an animation background color set on the
+ // TaskFragment. Pass this color with this window, so the handler can use it as
+ // the animation background color if needed,
+ backgroundColor = organizedTf.getAnimationParams()
+ .getAnimationBackgroundColor();
+ } else {
+ // Set background color to Task theme color for activity and embedded
+ // TaskFragment in case we want to show background during the animation.
+ final Task parentTask = activityRecord != null
+ ? activityRecord.getTask()
+ : taskFragment.getTask();
+ backgroundColor = ColorUtils.setAlphaComponent(
+ parentTask.getTaskDescription().getBackgroundColor(), 255);
+ }
change.setBackgroundColor(backgroundColor);
}
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
index cb5a4338c567..700016be62f8 100644
--- a/services/core/java/com/android/server/wm/WindowContainer.java
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -3145,14 +3145,26 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
// which if set originates from a call to overridePendingAppTransition.
backgroundColorForTransition = adapter.getBackgroundColor();
} else {
- // Otherwise default to the window's background color if provided through
- // the theme as the background color for the animation - the top most window
- // with a valid background color and showBackground set takes precedence.
- final Task parentTask = activityRecord != null
- ? activityRecord.getTask()
- : taskFragment.getTask();
- backgroundColorForTransition = ColorUtils.setAlphaComponent(
- parentTask.getTaskDescription().getBackgroundColor(), 255);
+ final TaskFragment organizedTf = activityRecord != null
+ ? activityRecord.getOrganizedTaskFragment()
+ : taskFragment.getOrganizedTaskFragment();
+ if (organizedTf != null && organizedTf.getAnimationParams()
+ .getAnimationBackgroundColor() != 0) {
+ // This window is embedded and has an animation background color set on the
+ // TaskFragment. Pass this color with this window, so the handler can use it
+ // as the animation background color if needed,
+ backgroundColorForTransition = organizedTf.getAnimationParams()
+ .getAnimationBackgroundColor();
+ } else {
+ // Otherwise default to the window's background color if provided through
+ // the theme as the background color for the animation - the top most window
+ // with a valid background color and showBackground set takes precedence.
+ final Task parentTask = activityRecord != null
+ ? activityRecord.getTask()
+ : taskFragment.getTask();
+ backgroundColorForTransition = ColorUtils.setAlphaComponent(
+ parentTask.getTaskDescription().getBackgroundColor(), 255);
+ }
}
animationRunnerBuilder.setTaskBackgroundColor(backgroundColorForTransition);
}