summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Riddle Hsu <riddlehsu@google.com> 2023-06-06 17:18:57 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2023-06-06 17:18:57 +0000
commita86313f32c4a283695bcd0e22f40bc4666540faf (patch)
treec71adefe9322fece4b7c838837a83ca7d902b029
parent5ec5b7d5251c0cfb90e87885219821cf950c4a5b (diff)
parenteee875a918ea89a7241796e03c818422187a52b3 (diff)
Merge "Let default transition handler animate customized animation" into udc-dev am: bfd848999e am: eee875a918
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23563396 Change-Id: Ie53d396d5b5f00abbef85d31aaec7505f7706a4a Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java9
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java12
2 files changed, 19 insertions, 2 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java
index 7b37d5947f17..57d374b2b8f5 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java
@@ -20,6 +20,8 @@ import static android.app.ActivityOptions.ANIM_SCENE_TRANSITION;
import static android.window.TransitionInfo.FLAG_FILLS_TASK;
import static android.window.TransitionInfo.FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY;
+import static com.android.wm.shell.transition.DefaultTransitionHandler.isSupportedOverrideAnimation;
+
import static java.util.Objects.requireNonNull;
import android.content.Context;
@@ -113,8 +115,11 @@ public class ActivityEmbeddingController implements Transitions.TransitionHandle
return false;
}
final TransitionInfo.AnimationOptions options = info.getAnimationOptions();
- if (options != null && options.getType() == ANIM_SCENE_TRANSITION) {
- // Scene-transition will be handled by app side.
+ if (options != null
+ // Scene-transition will be handled by app side.
+ && (options.getType() == ANIM_SCENE_TRANSITION
+ // Use default transition handler to animate override animation.
+ || isSupportedOverrideAnimation(options))) {
return false;
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java
index 4c678a2bf29b..715f8354ea51 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java
@@ -873,6 +873,18 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler {
}
}
+ /**
+ * Returns {@code true} if the default transition handler can run the override animation.
+ * @see #loadAnimation(TransitionInfo, TransitionInfo.Change, int, boolean)
+ */
+ public static boolean isSupportedOverrideAnimation(
+ @NonNull TransitionInfo.AnimationOptions options) {
+ final int animType = options.getType();
+ return animType == ANIM_CUSTOM || animType == ANIM_SCALE_UP
+ || animType == ANIM_THUMBNAIL_SCALE_UP || animType == ANIM_THUMBNAIL_SCALE_DOWN
+ || animType == ANIM_CLIP_REVEAL || animType == ANIM_OPEN_CROSS_PROFILE_APPS;
+ }
+
private static void applyTransformation(long time, SurfaceControl.Transaction t,
SurfaceControl leash, Animation anim, Transformation transformation, float[] matrix,
Point position, float cornerRadius, @Nullable Rect immutableClipRect) {