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

Commit c05c3628 authored by Chet Haase's avatar Chet Haase Committed by Android (Google) Code Review
Browse files

Merge "Ensure that transitions animating alpha end on a reasonable value" into klp-dev

parents 5cf86aa7 23c61f6b
Loading
Loading
Loading
Loading
+33 −1
Original line number Diff line number Diff line
@@ -91,6 +91,9 @@ public class Fade extends Visibility {
            return null;
        }
        final ObjectAnimator anim = ObjectAnimator.ofFloat(view, "alpha", startAlpha, endAlpha);
        if (DBG) {
            Log.d(LOG_TAG, "Created animator " + anim);
        }
        if (listener != null) {
            anim.addListener(listener);
            anim.addPauseListener(listener);
@@ -146,12 +149,41 @@ public class Fade extends Visibility {
        final View endView = endValues.view;
        if (DBG) {
            View startView = (startValues != null) ? startValues.view : null;
            Log.d(LOG_TAG, "Fade.onDisappear: startView, startVis, endView, endVis = " +
            Log.d(LOG_TAG, "Fade.onAppear: startView, startVis, endView, endVis = " +
                    startView + ", " + startVisibility + ", " + endView + ", " + endVisibility);
        }
        // if alpha < 1, just fade it in from the current value
        if (endView.getAlpha() == 1.0f) {
            endView.setAlpha(0);
            TransitionListener transitionListener = new TransitionListenerAdapter() {
                boolean mCanceled = false;
                float mPausedAlpha;

                @Override
                public void onTransitionCancel(Transition transition) {
                    endView.setAlpha(1);
                    mCanceled = true;
                }

                @Override
                public void onTransitionEnd(Transition transition) {
                    if (!mCanceled) {
                        endView.setAlpha(1);
                    }
                }

                @Override
                public void onTransitionPause(Transition transition) {
                    mPausedAlpha = endView.getAlpha();
                    endView.setAlpha(1);
                }

                @Override
                public void onTransitionResume(Transition transition) {
                    endView.setAlpha(mPausedAlpha);
                }
            };
            addListener(transitionListener);
        }
        return createAnimation(endView, endView.getAlpha(), 1, null);
    }
+4 −3
Original line number Diff line number Diff line
@@ -1240,12 +1240,13 @@ public abstract class Transition implements Cloneable {
                    View oldView = oldInfo.view;
                    TransitionValues newValues = mEndValues.viewValues != null ?
                            mEndValues.viewValues.get(oldView) : null;
                    if (newValues == null) {
                        newValues = mEndValues.idValues.get(oldView.getId());
                    }
                    if (oldValues != null) {
                        // if oldValues null, then transition didn't care to stash values,
                        // and won't get canceled
                        if (newValues == null) {
                            cancel = true;
                        } else {
                        if (newValues != null) {
                            for (String key : oldValues.values.keySet()) {
                                Object oldValue = oldValues.values.get(key);
                                Object newValue = newValues.values.get(key);
+14 −18
Original line number Diff line number Diff line
@@ -349,23 +349,19 @@ public class TransitionManager {
     * value of null causes the TransitionManager to use the default transition.
     */
    public static void beginDelayedTransition(final ViewGroup sceneRoot, Transition transition) {

        // TEMPORARY: disabling delayed transitions until a fix for the various ActionBar-
        // triggered artifacts is found

//        if (!sPendingTransitions.contains(sceneRoot) && sceneRoot.isLaidOut()) {
//            if (Transition.DBG) {
//                Log.d(LOG_TAG, "beginDelayedTransition: root, transition = " +
//                        sceneRoot + ", " + transition);
//            }
//            sPendingTransitions.add(sceneRoot);
//            if (transition == null) {
//                transition = sDefaultTransition;
//            }
//            final Transition transitionClone = transition.clone();
//            sceneChangeSetup(sceneRoot, transitionClone);
//            Scene.setCurrentScene(sceneRoot, null);
//            sceneChangeRunTransition(sceneRoot, transitionClone);
//        }
        if (!sPendingTransitions.contains(sceneRoot) && sceneRoot.isLaidOut()) {
            if (Transition.DBG) {
                Log.d(LOG_TAG, "beginDelayedTransition: root, transition = " +
                        sceneRoot + ", " + transition);
            }
            sPendingTransitions.add(sceneRoot);
            if (transition == null) {
                transition = sDefaultTransition;
            }
            final Transition transitionClone = transition.clone();
            sceneChangeSetup(sceneRoot, transitionClone);
            Scene.setCurrentScene(sceneRoot, null);
            sceneChangeRunTransition(sceneRoot, transitionClone);
        }
    }
}