diff options
| author | 2023-06-06 17:18:57 +0000 | |
|---|---|---|
| committer | 2023-06-06 17:18:57 +0000 | |
| commit | a86313f32c4a283695bcd0e22f40bc4666540faf (patch) | |
| tree | c71adefe9322fece4b7c838837a83ca7d902b029 | |
| parent | 5ec5b7d5251c0cfb90e87885219821cf950c4a5b (diff) | |
| parent | eee875a918ea89a7241796e03c818422187a52b3 (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>
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) { |