Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e494c382 authored by Winson Chung's avatar Winson Chung
Browse files

Bug 18784289: Fix issue with transition animation callback.

This is a regression where we changed the source view for the transition
to dummy view, but since it was not yet attached, it could not get the
handler implicitly to post the onAnimationCompleted callback.  This CL
modifies these ActivityOption transitions to also take an explicit
handler to process the callback on.

Bug: 18784289

Change-Id: I73f745c33b9f8aed91f8d9cd975f37cf7e4128f1
parent e405e59e
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -384,6 +384,8 @@ public class ActivityOptions {
     * of the animation.
     * @param startX The x starting location of the bitmap, relative to <var>source</var>.
     * @param startY The y starting location of the bitmap, relative to <var>source</var>.
     * @param handler If <var>listener</var> is non-null this must be a valid
     * Handler on which to dispatch the callback; otherwise it should be null.
     * @param listener Optional OnAnimationStartedListener to find out when the
     * requested animation has started running.  If for some reason the animation
     * is not executed, the callback will happen immediately.
@@ -393,9 +395,9 @@ public class ActivityOptions {
     */
    public static ActivityOptions makeThumbnailAspectScaleUpAnimation(View source,
            Bitmap thumbnail, int startX, int startY, int targetWidth, int targetHeight,
            OnAnimationStartedListener listener) {
            Handler handler, OnAnimationStartedListener listener) {
        return makeAspectScaledThumbnailAnimation(source, thumbnail, startX, startY,
                targetWidth, targetHeight, listener, true);
                targetWidth, targetHeight, handler, listener, true);
    }

    /**
@@ -408,6 +410,8 @@ public class ActivityOptions {
     * of the animation.
     * @param startX The x end location of the bitmap, relative to <var>source</var>.
     * @param startY The y end location of the bitmap, relative to <var>source</var>.
     * @param handler If <var>listener</var> is non-null this must be a valid
     * Handler on which to dispatch the callback; otherwise it should be null.
     * @param listener Optional OnAnimationStartedListener to find out when the
     * requested animation has started running.  If for some reason the animation
     * is not executed, the callback will happen immediately.
@@ -417,14 +421,14 @@ public class ActivityOptions {
     */
    public static ActivityOptions makeThumbnailAspectScaleDownAnimation(View source,
            Bitmap thumbnail, int startX, int startY, int targetWidth, int targetHeight,
            OnAnimationStartedListener listener) {
            Handler handler, OnAnimationStartedListener listener) {
        return makeAspectScaledThumbnailAnimation(source, thumbnail, startX, startY,
                targetWidth, targetHeight, listener, false);
                targetWidth, targetHeight, handler, listener, false);
    }

    private static ActivityOptions makeAspectScaledThumbnailAnimation(View source, Bitmap thumbnail,
            int startX, int startY, int targetWidth, int targetHeight,
            OnAnimationStartedListener listener, boolean scaleUp) {
            Handler handler, OnAnimationStartedListener listener, boolean scaleUp) {
        ActivityOptions opts = new ActivityOptions();
        opts.mPackageName = source.getContext().getPackageName();
        opts.mAnimationType = scaleUp ? ANIM_THUMBNAIL_ASPECT_SCALE_UP :
@@ -436,7 +440,7 @@ public class ActivityOptions {
        opts.mStartY = pts[1] + startY;
        opts.mWidth = targetWidth;
        opts.mHeight = targetHeight;
        opts.setOnAnimationStartedListener(source.getHandler(), listener);
        opts.setOnAnimationStartedListener(handler, listener);
        return opts;
    }

+1 −1
Original line number Diff line number Diff line
@@ -594,7 +594,7 @@ public class AlternateRecentsComponent implements ActivityOptions.OnAnimationSta
            mStartAnimationTriggered = false;
            return ActivityOptions.makeThumbnailAspectScaleDownAnimation(mDummyStackView,
                    thumbnail, toTaskRect.left, toTaskRect.top, toTaskRect.width(),
                    toTaskRect.height(), this);
                    toTaskRect.height(), mHandler, this);
        }

        // If both the screenshot and thumbnail fails, then just fall back to the default transition
+1 −1
Original line number Diff line number Diff line
@@ -477,7 +477,7 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV
            }
            opts = ActivityOptions.makeThumbnailAspectScaleUpAnimation(sourceView,
                    b, offsetX, offsetY, transform.rect.width(), transform.rect.height(),
                    animStartedListener);
                    sourceView.getHandler(), animStartedListener);
        }

        final ActivityOptions launchOpts = opts;