diff options
author | Bobby Georgescu <georgescu@google.com> | 2012-10-17 14:50:47 -0700 |
---|---|---|
committer | Bobby Georgescu <georgescu@google.com> | 2012-10-17 17:14:22 -0700 |
commit | 2ba8604e8f1a8faf0e692706c3103cc889142583 (patch) | |
tree | 6c8700c0959eeb4fefe4a829c3fbb08c27b98d22 /src/com/android/gallery3d/app/ActivityState.java | |
parent | 591ba8d027d574f1e9fedaf878d3b7b41ebe4861 (diff) | |
download | android_packages_apps_Snap-2ba8604e8f1a8faf0e692706c3103cc889142583.tar.gz android_packages_apps_Snap-2ba8604e8f1a8faf0e692706c3103cc889142583.tar.bz2 android_packages_apps_Snap-2ba8604e8f1a8faf0e692706c3103cc889142583.zip |
Big refactor, additions to state transition animations
Bug: 7362944
Refactored a lot of the state transitions code, adding
support for definable transition animations and defining
distinct outgoing and incoming animations.
Change-Id: I31a69057ea1b72dd3185cec656e59b11fdb528c1
Diffstat (limited to 'src/com/android/gallery3d/app/ActivityState.java')
-rw-r--r-- | src/com/android/gallery3d/app/ActivityState.java | 47 |
1 files changed, 29 insertions, 18 deletions
diff --git a/src/com/android/gallery3d/app/ActivityState.java b/src/com/android/gallery3d/app/ActivityState.java index fe2e89e7f..ff0b32c32 100644 --- a/src/com/android/gallery3d/app/ActivityState.java +++ b/src/com/android/gallery3d/app/ActivityState.java @@ -35,6 +35,7 @@ import android.view.Window; import android.view.WindowManager; import com.android.gallery3d.R; +import com.android.gallery3d.anim.StateTransitionAnimation; import com.android.gallery3d.ui.GLView; import com.android.gallery3d.ui.PreparePageFadeoutTexture; import com.android.gallery3d.ui.RawTexture; @@ -70,19 +71,19 @@ abstract public class ActivityState { private static final String KEY_TRANSITION_IN = "transition-in"; - private RawTexture mFadeOutTexture; + public static enum StateTransition { None, Outgoing, Incoming }; + private StateTransition mNextTransition = StateTransition.None; + private StateTransitionAnimation mIntroAnimation; private GLView mContentPane; - private boolean mWantFadeOut = false; - private boolean mTransitionIn; protected ActivityState() { } protected void setContentPane(GLView content) { mContentPane = content; - if (mTransitionIn) { - mContentPane.setFadeOutTexture(mFadeOutTexture); - mFadeOutTexture = null; + if (mNextTransition != StateTransition.None) { + mContentPane.setIntroAnimation(mIntroAnimation); + mIntroAnimation = null; } mContentPane.setBackgroundColor(getBackgroundColor()); mActivity.getGLRoot().setContentPane(mContentPane); @@ -99,9 +100,6 @@ abstract public class ActivityState { } protected void onBackPressed() { - if (mActivity.getStateManager().getStateCount() > 1) { - fadeOutOnNextPause(); - } mActivity.getStateManager().finishState(this); } @@ -175,19 +173,25 @@ abstract public class ActivityState { win.setAttributes(params); } - protected void fadeOutOnNextPause() { - mWantFadeOut = true; + protected void transitionOnNextPause(Class<? extends ActivityState> outgoing, + Class<? extends ActivityState> incoming, StateTransition hint) { + if (outgoing == PhotoPage.class && incoming == AlbumPage.class) { + mNextTransition = StateTransition.Outgoing; + } else if (outgoing == AlbumPage.class && incoming == PhotoPage.class) { + mNextTransition = StateTransition.Incoming; + } else { + mNextTransition = hint; + } } protected void onPause() { if (0 != (mFlags & FLAG_SCREEN_ON_WHEN_PLUGGED)) { ((Activity) mActivity).unregisterReceiver(mPowerIntentReceiver); } - if (mWantFadeOut) { - mWantFadeOut = false; - if (PreparePageFadeoutTexture.prepareFadeOutTexture(mActivity, mContentPane)) { - mActivity.getTransitionStore().put(KEY_TRANSITION_IN, true); - } + if (mNextTransition != StateTransition.None) { + mActivity.getTransitionStore().put(KEY_TRANSITION_IN, mNextTransition); + PreparePageFadeoutTexture.prepareFadeOutTexture(mActivity, mContentPane); + mNextTransition = StateTransition.None; } } @@ -242,9 +246,16 @@ abstract public class ActivityState { // a subclass of ActivityState should override the method to resume itself protected void onResume() { - mFadeOutTexture = mActivity.getTransitionStore().get( + RawTexture fade = mActivity.getTransitionStore().get( PreparePageFadeoutTexture.KEY_FADE_TEXTURE); - mTransitionIn = mActivity.getTransitionStore().get(KEY_TRANSITION_IN, false); + mNextTransition = mActivity.getTransitionStore().get( + KEY_TRANSITION_IN, StateTransition.None); + if (mNextTransition != StateTransition.None) { + mIntroAnimation = new StateTransitionAnimation( + (mNextTransition == StateTransition.Incoming) ? + StateTransitionAnimation.Spec.INCOMING : + StateTransitionAnimation.Spec.OUTGOING, fade); + } } protected boolean onCreateActionBar(Menu menu) { |