summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java3
-rw-r--r--services/core/java/com/android/server/wm/SnapshotStartingData.java5
-rw-r--r--services/core/java/com/android/server/wm/SplashScreenStartingData.java5
-rw-r--r--services/core/java/com/android/server/wm/StartingData.java5
-rw-r--r--services/core/java/com/android/server/wm/TaskOrganizerController.java1
5 files changed, 18 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 0ad8782cea4f..4dd8221167a9 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -2252,6 +2252,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
}
final WindowManagerPolicy.StartingSurface surface;
+ final StartingData startingData = mStartingData;
if (mStartingData != null) {
surface = mStartingSurface;
mStartingData = null;
@@ -2278,7 +2279,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
final Runnable removeSurface = () -> {
ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Removing startingView=%s", surface);
try {
- surface.remove(prepareAnimation);
+ surface.remove(prepareAnimation && startingData.needRevealAnimation());
} catch (Exception e) {
Slog.w(TAG_WM, "Exception when removing starting window", e);
}
diff --git a/services/core/java/com/android/server/wm/SnapshotStartingData.java b/services/core/java/com/android/server/wm/SnapshotStartingData.java
index 66ae0eb9b48f..b6cf91a584a9 100644
--- a/services/core/java/com/android/server/wm/SnapshotStartingData.java
+++ b/services/core/java/com/android/server/wm/SnapshotStartingData.java
@@ -41,6 +41,11 @@ class SnapshotStartingData extends StartingData {
}
@Override
+ boolean needRevealAnimation() {
+ return false;
+ }
+
+ @Override
boolean hasImeSurface() {
return mSnapshot.hasImeSurface();
}
diff --git a/services/core/java/com/android/server/wm/SplashScreenStartingData.java b/services/core/java/com/android/server/wm/SplashScreenStartingData.java
index 185a317271ff..c659c05dceda 100644
--- a/services/core/java/com/android/server/wm/SplashScreenStartingData.java
+++ b/services/core/java/com/android/server/wm/SplashScreenStartingData.java
@@ -58,4 +58,9 @@ class SplashScreenStartingData extends StartingData {
mLogo, mWindowFlags, mMergedOverrideConfiguration,
activity.getDisplayContent().getDisplayId());
}
+
+ @Override
+ boolean needRevealAnimation() {
+ return true;
+ }
}
diff --git a/services/core/java/com/android/server/wm/StartingData.java b/services/core/java/com/android/server/wm/StartingData.java
index 3f9c93bbcfbe..c671e3835abc 100644
--- a/services/core/java/com/android/server/wm/StartingData.java
+++ b/services/core/java/com/android/server/wm/StartingData.java
@@ -47,6 +47,11 @@ public abstract class StartingData {
*/
abstract StartingSurface createStartingSurface(ActivityRecord activity);
+ /**
+ * @return Whether to apply reveal animation when exiting the starting window.
+ */
+ abstract boolean needRevealAnimation();
+
/** @see android.window.TaskSnapshot#hasImeSurface() */
boolean hasImeSurface() {
return false;
diff --git a/services/core/java/com/android/server/wm/TaskOrganizerController.java b/services/core/java/com/android/server/wm/TaskOrganizerController.java
index 3a2ca80f2e12..abcb34c2e8d9 100644
--- a/services/core/java/com/android/server/wm/TaskOrganizerController.java
+++ b/services/core/java/com/android/server/wm/TaskOrganizerController.java
@@ -197,6 +197,7 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
ANIMATION_TYPE_STARTING_REVEAL);
windowAnimationLeash = adaptor.mAnimationLeash;
mainFrame = mainWindow.getRelativeFrame();
+ t.setPosition(windowAnimationLeash, mainFrame.left, mainFrame.top);
}
}
}