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

This commit is contained in:
Chet Haase
2013-09-16 21:03:28 +00:00
committed by Android (Google) Code Review
3 changed files with 51 additions and 22 deletions

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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);
}
}
}