Loading packages/SystemUI/animation/lib/Android.bp +4 −3 Original line number Original line Diff line number Diff line Loading @@ -25,8 +25,8 @@ package { java_library { java_library { name: "PlatformAnimationLib-server", name: "PlatformAnimationLib-server", srcs: [ srcs: [ "src/com/android/systemui/animation/server/*.java", ":PlatformAnimationLib-aidl", ":PlatformAnimationLib-aidl", "src/com/android/systemui/animation/server/*.java", ], ], static_libs: [ static_libs: [ "WindowManager-Shell-shared", "WindowManager-Shell-shared", Loading @@ -39,8 +39,8 @@ java_library { java_library { java_library { name: "PlatformAnimationLib-core", name: "PlatformAnimationLib-core", srcs: [ srcs: [ "src/com/android/systemui/animation/*.java", ":PlatformAnimationLib-aidl", ":PlatformAnimationLib-aidl", "src/com/android/systemui/animation/*.java", ], ], static_libs: [ static_libs: [ "WindowManager-Shell-shared", "WindowManager-Shell-shared", Loading @@ -50,13 +50,14 @@ java_library { filegroup { filegroup { name: "PlatformAnimationLib-client-srcs", name: "PlatformAnimationLib-client-srcs", srcs: [ srcs: [ ":PlatformAnimationLib-aidl", "src/com/android/systemui/animation/OriginRemoteTransition.java", "src/com/android/systemui/animation/OriginRemoteTransition.java", "src/com/android/systemui/animation/OriginTransitionSession.java", "src/com/android/systemui/animation/OriginTransitionSession.java", "src/com/android/systemui/animation/SurfaceUIComponent.java", "src/com/android/systemui/animation/SurfaceUIComponent.java", "src/com/android/systemui/animation/Transactions.java", "src/com/android/systemui/animation/Transactions.java", "src/com/android/systemui/animation/TransitionAnimationController.java", "src/com/android/systemui/animation/UIComponent.java", "src/com/android/systemui/animation/UIComponent.java", "src/com/android/systemui/animation/ViewUIComponent.java", "src/com/android/systemui/animation/ViewUIComponent.java", ":PlatformAnimationLib-aidl", ], ], } } Loading packages/SystemUI/animation/lib/src/com/android/systemui/animation/OriginRemoteTransition.java +42 −39 Original line number Original line Diff line number Diff line Loading @@ -18,9 +18,6 @@ package com.android.systemui.animation; import static android.view.WindowManager.TRANSIT_CHANGE; import static android.view.WindowManager.TRANSIT_CHANGE; import android.animation.Animator; import android.animation.Animator.AnimatorListener; import android.animation.ValueAnimator; import android.annotation.Nullable; import android.annotation.Nullable; import android.content.Context; import android.content.Context; import android.graphics.Rect; import android.graphics.Rect; Loading Loading @@ -51,7 +48,8 @@ import java.util.concurrent.atomic.AtomicBoolean; * * * @hide * @hide */ */ public class OriginRemoteTransition extends IRemoteTransition.Stub { public class OriginRemoteTransition extends IRemoteTransition.Stub implements TransitionAnimationController.AnimationRunnerListener { private static final String TAG = "OriginRemoteTransition"; private static final String TAG = "OriginRemoteTransition"; private static final long FINISH_ANIMATION_TIMEOUT_MS = 100; private static final long FINISH_ANIMATION_TIMEOUT_MS = 100; Loading @@ -65,9 +63,8 @@ public class OriginRemoteTransition extends IRemoteTransition.Stub { @Nullable private SurfaceControl.Transaction mStartTransaction; @Nullable private SurfaceControl.Transaction mStartTransaction; @Nullable private IRemoteTransitionFinishedCallback mFinishCallback; @Nullable private IRemoteTransitionFinishedCallback mFinishCallback; @Nullable private UIComponent.Transaction mOriginTransaction; @Nullable private UIComponent.Transaction mOriginTransaction; @Nullable private ValueAnimator mAnimator; @Nullable private TransitionAnimationController mAnimationController; @Nullable private SurfaceControl mOriginLeash; @Nullable private SurfaceControl mOriginLeash; private boolean mCancelled; OriginRemoteTransition( OriginRemoteTransition( Context context, Context context, Loading Loading @@ -146,32 +143,37 @@ public class OriginRemoteTransition extends IRemoteTransition.Stub { mOriginTransaction.commit(); mOriginTransaction.commit(); mStartTransaction.apply(); mStartTransaction.apply(); // Start the animator. // configure/start animation controller mAnimator = ValueAnimator.ofFloat(0.0f, 1.0f); mAnimationController = new TransitionAnimationController(mHandler, this); mAnimator.setDuration(mDuration); mAnimationController.addValueAnimation( mAnimator.addListener( TAG + (mIsEntry ? "-entryAnimator" : "-exitAnimator"), new AnimatorListener() { TransitionAnimationController.LINEAR_INTERPOLATOR, @Override mDuration, public void onAnimationStart(Animator a) {} 0, 0f, @Override 1f); public void onAnimationEnd(Animator a) { mAnimationController.startAnimations(); finishAnimation(/* finished= */ !mCancelled); } } /** * @param animatorId specific ID associated with a given animator, used to disambiguate. * @param canceled whether or not the animation was canceled (terminated) or ran to * completion. */ @Override @Override public void onAnimationCancel(Animator a) { public void onAnimationFinished(String animatorId, boolean canceled) { mCancelled = true; finishAnimation(/* finished= */ !canceled); } } /** * @param animatorId specific ID associated with a given animator, used to disambiguate. * @param progress representative value of the current state of progress, start to finish. * @param isFirstFrame whether or not the current update represents the drawing of the * *first* frame of the animation. */ @Override @Override public void onAnimationRepeat(Animator a) {} public void onAnimationProgressUpdate(String animatorId, float progress, boolean isFirstFrame) { }); mPlayer.onProgress(progress); mAnimator.addUpdateListener( a -> { mPlayer.onProgress((float) a.getAnimatedValue()); }); mAnimator.start(); } } private boolean prepareUIs(TransitionInfo info) { private boolean prepareUIs(TransitionInfo info) { Loading Loading @@ -304,7 +306,7 @@ public class OriginRemoteTransition extends IRemoteTransition.Stub { mHandler.removeCallbacks(timeoutRunnable); mHandler.removeCallbacks(timeoutRunnable); finishInternalRunnable.run(); finishInternalRunnable.run(); }; }; if (mAnimator == null) { if (mAnimationController == null) { // The transition didn't start. Ensure we apply the start transaction and report // The transition didn't start. Ensure we apply the start transaction and report // finish afterwards. // finish afterwards. mStartTransaction mStartTransaction Loading @@ -314,7 +316,8 @@ public class OriginRemoteTransition extends IRemoteTransition.Stub { mHandler.postDelayed(timeoutRunnable, FINISH_ANIMATION_TIMEOUT_MS); mHandler.postDelayed(timeoutRunnable, FINISH_ANIMATION_TIMEOUT_MS); return; return; } } mAnimator = null; mAnimationController = null; // Notify client that we have ended. // Notify client that we have ended. mPlayer.onEnd(finished); mPlayer.onEnd(finished); // Detach the origin from the transition leash and report finish after it's done. // Detach the origin from the transition leash and report finish after it's done. Loading Loading @@ -346,8 +349,8 @@ public class OriginRemoteTransition extends IRemoteTransition.Stub { logD("cancel()"); logD("cancel()"); mHandler.post( mHandler.post( () -> { () -> { if (mAnimator != null) { if (mAnimationController != null) { mAnimator.cancel(); mAnimationController.cancelAnimations(); } } }); }); } } Loading Loading
packages/SystemUI/animation/lib/Android.bp +4 −3 Original line number Original line Diff line number Diff line Loading @@ -25,8 +25,8 @@ package { java_library { java_library { name: "PlatformAnimationLib-server", name: "PlatformAnimationLib-server", srcs: [ srcs: [ "src/com/android/systemui/animation/server/*.java", ":PlatformAnimationLib-aidl", ":PlatformAnimationLib-aidl", "src/com/android/systemui/animation/server/*.java", ], ], static_libs: [ static_libs: [ "WindowManager-Shell-shared", "WindowManager-Shell-shared", Loading @@ -39,8 +39,8 @@ java_library { java_library { java_library { name: "PlatformAnimationLib-core", name: "PlatformAnimationLib-core", srcs: [ srcs: [ "src/com/android/systemui/animation/*.java", ":PlatformAnimationLib-aidl", ":PlatformAnimationLib-aidl", "src/com/android/systemui/animation/*.java", ], ], static_libs: [ static_libs: [ "WindowManager-Shell-shared", "WindowManager-Shell-shared", Loading @@ -50,13 +50,14 @@ java_library { filegroup { filegroup { name: "PlatformAnimationLib-client-srcs", name: "PlatformAnimationLib-client-srcs", srcs: [ srcs: [ ":PlatformAnimationLib-aidl", "src/com/android/systemui/animation/OriginRemoteTransition.java", "src/com/android/systemui/animation/OriginRemoteTransition.java", "src/com/android/systemui/animation/OriginTransitionSession.java", "src/com/android/systemui/animation/OriginTransitionSession.java", "src/com/android/systemui/animation/SurfaceUIComponent.java", "src/com/android/systemui/animation/SurfaceUIComponent.java", "src/com/android/systemui/animation/Transactions.java", "src/com/android/systemui/animation/Transactions.java", "src/com/android/systemui/animation/TransitionAnimationController.java", "src/com/android/systemui/animation/UIComponent.java", "src/com/android/systemui/animation/UIComponent.java", "src/com/android/systemui/animation/ViewUIComponent.java", "src/com/android/systemui/animation/ViewUIComponent.java", ":PlatformAnimationLib-aidl", ], ], } } Loading
packages/SystemUI/animation/lib/src/com/android/systemui/animation/OriginRemoteTransition.java +42 −39 Original line number Original line Diff line number Diff line Loading @@ -18,9 +18,6 @@ package com.android.systemui.animation; import static android.view.WindowManager.TRANSIT_CHANGE; import static android.view.WindowManager.TRANSIT_CHANGE; import android.animation.Animator; import android.animation.Animator.AnimatorListener; import android.animation.ValueAnimator; import android.annotation.Nullable; import android.annotation.Nullable; import android.content.Context; import android.content.Context; import android.graphics.Rect; import android.graphics.Rect; Loading Loading @@ -51,7 +48,8 @@ import java.util.concurrent.atomic.AtomicBoolean; * * * @hide * @hide */ */ public class OriginRemoteTransition extends IRemoteTransition.Stub { public class OriginRemoteTransition extends IRemoteTransition.Stub implements TransitionAnimationController.AnimationRunnerListener { private static final String TAG = "OriginRemoteTransition"; private static final String TAG = "OriginRemoteTransition"; private static final long FINISH_ANIMATION_TIMEOUT_MS = 100; private static final long FINISH_ANIMATION_TIMEOUT_MS = 100; Loading @@ -65,9 +63,8 @@ public class OriginRemoteTransition extends IRemoteTransition.Stub { @Nullable private SurfaceControl.Transaction mStartTransaction; @Nullable private SurfaceControl.Transaction mStartTransaction; @Nullable private IRemoteTransitionFinishedCallback mFinishCallback; @Nullable private IRemoteTransitionFinishedCallback mFinishCallback; @Nullable private UIComponent.Transaction mOriginTransaction; @Nullable private UIComponent.Transaction mOriginTransaction; @Nullable private ValueAnimator mAnimator; @Nullable private TransitionAnimationController mAnimationController; @Nullable private SurfaceControl mOriginLeash; @Nullable private SurfaceControl mOriginLeash; private boolean mCancelled; OriginRemoteTransition( OriginRemoteTransition( Context context, Context context, Loading Loading @@ -146,32 +143,37 @@ public class OriginRemoteTransition extends IRemoteTransition.Stub { mOriginTransaction.commit(); mOriginTransaction.commit(); mStartTransaction.apply(); mStartTransaction.apply(); // Start the animator. // configure/start animation controller mAnimator = ValueAnimator.ofFloat(0.0f, 1.0f); mAnimationController = new TransitionAnimationController(mHandler, this); mAnimator.setDuration(mDuration); mAnimationController.addValueAnimation( mAnimator.addListener( TAG + (mIsEntry ? "-entryAnimator" : "-exitAnimator"), new AnimatorListener() { TransitionAnimationController.LINEAR_INTERPOLATOR, @Override mDuration, public void onAnimationStart(Animator a) {} 0, 0f, @Override 1f); public void onAnimationEnd(Animator a) { mAnimationController.startAnimations(); finishAnimation(/* finished= */ !mCancelled); } } /** * @param animatorId specific ID associated with a given animator, used to disambiguate. * @param canceled whether or not the animation was canceled (terminated) or ran to * completion. */ @Override @Override public void onAnimationCancel(Animator a) { public void onAnimationFinished(String animatorId, boolean canceled) { mCancelled = true; finishAnimation(/* finished= */ !canceled); } } /** * @param animatorId specific ID associated with a given animator, used to disambiguate. * @param progress representative value of the current state of progress, start to finish. * @param isFirstFrame whether or not the current update represents the drawing of the * *first* frame of the animation. */ @Override @Override public void onAnimationRepeat(Animator a) {} public void onAnimationProgressUpdate(String animatorId, float progress, boolean isFirstFrame) { }); mPlayer.onProgress(progress); mAnimator.addUpdateListener( a -> { mPlayer.onProgress((float) a.getAnimatedValue()); }); mAnimator.start(); } } private boolean prepareUIs(TransitionInfo info) { private boolean prepareUIs(TransitionInfo info) { Loading Loading @@ -304,7 +306,7 @@ public class OriginRemoteTransition extends IRemoteTransition.Stub { mHandler.removeCallbacks(timeoutRunnable); mHandler.removeCallbacks(timeoutRunnable); finishInternalRunnable.run(); finishInternalRunnable.run(); }; }; if (mAnimator == null) { if (mAnimationController == null) { // The transition didn't start. Ensure we apply the start transaction and report // The transition didn't start. Ensure we apply the start transaction and report // finish afterwards. // finish afterwards. mStartTransaction mStartTransaction Loading @@ -314,7 +316,8 @@ public class OriginRemoteTransition extends IRemoteTransition.Stub { mHandler.postDelayed(timeoutRunnable, FINISH_ANIMATION_TIMEOUT_MS); mHandler.postDelayed(timeoutRunnable, FINISH_ANIMATION_TIMEOUT_MS); return; return; } } mAnimator = null; mAnimationController = null; // Notify client that we have ended. // Notify client that we have ended. mPlayer.onEnd(finished); mPlayer.onEnd(finished); // Detach the origin from the transition leash and report finish after it's done. // Detach the origin from the transition leash and report finish after it's done. Loading Loading @@ -346,8 +349,8 @@ public class OriginRemoteTransition extends IRemoteTransition.Stub { logD("cancel()"); logD("cancel()"); mHandler.post( mHandler.post( () -> { () -> { if (mAnimator != null) { if (mAnimationController != null) { mAnimator.cancel(); mAnimationController.cancelAnimations(); } } }); }); } } Loading