summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/app/ActivityState.java
diff options
context:
space:
mode:
authorBobby Georgescu <georgescu@google.com>2012-10-17 14:50:47 -0700
committerBobby Georgescu <georgescu@google.com>2012-10-17 17:14:22 -0700
commit2ba8604e8f1a8faf0e692706c3103cc889142583 (patch)
tree6c8700c0959eeb4fefe4a829c3fbb08c27b98d22 /src/com/android/gallery3d/app/ActivityState.java
parent591ba8d027d574f1e9fedaf878d3b7b41ebe4861 (diff)
downloadandroid_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.java47
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) {