summaryrefslogtreecommitdiff
path: root/core/java/android/widget/ViewFlipper.java
diff options
context:
space:
mode:
authorMason Tang <masontang@google.com>2010-06-14 17:47:24 -0700
committerMason Tang <masontang@google.com>2010-06-16 13:38:15 -0700
commitf70036bc91e93cf6834c835beb832861c0dbd9db (patch)
tree6c437ee0a1ebd60a7fd6af9b9c20e516cc091896 /core/java/android/widget/ViewFlipper.java
parent820c12c924ee27d7e574ce56826e9ba645fa1336 (diff)
Modified first animation and visibility change behavior for ViewFlipper
- Where previously ViewAnimator only exposed inAnimation and outAnimation as XML attributes, modified to also include the animateFirstView flag so that widgets can optionally choose to omit the animation for the first child view. - Changed the behavior of ViewFlipper so that simple visibility changes do not trigger extraneous and distracting animations. Change-Id: I34b3abad33102978a94f0aed5aaab9af30ba49c7
Diffstat (limited to 'core/java/android/widget/ViewFlipper.java')
-rw-r--r--core/java/android/widget/ViewFlipper.java18
1 files changed, 15 insertions, 3 deletions
diff --git a/core/java/android/widget/ViewFlipper.java b/core/java/android/widget/ViewFlipper.java
index 8034961df50a..c6f6e81d452b 100644
--- a/core/java/android/widget/ViewFlipper.java
+++ b/core/java/android/widget/ViewFlipper.java
@@ -75,7 +75,7 @@ public class ViewFlipper extends ViewAnimator {
updateRunning();
} else if (Intent.ACTION_USER_PRESENT.equals(action)) {
mUserPresent = true;
- updateRunning();
+ updateRunning(false);
}
}
};
@@ -109,7 +109,7 @@ public class ViewFlipper extends ViewAnimator {
protected void onWindowVisibilityChanged(int visibility) {
super.onWindowVisibilityChanged(visibility);
mVisible = visibility == VISIBLE;
- updateRunning();
+ updateRunning(false);
}
/**
@@ -144,10 +144,22 @@ public class ViewFlipper extends ViewAnimator {
* on {@link #mRunning} and {@link #mVisible} state.
*/
private void updateRunning() {
+ updateRunning(true);
+ }
+
+ /**
+ * Internal method to start or stop dispatching flip {@link Message} based
+ * on {@link #mRunning} and {@link #mVisible} state.
+ *
+ * @param flipNow Determines whether or not to execute the animation now, in
+ * addition to queuing future flips. If omitted, defaults to
+ * true.
+ */
+ private void updateRunning(boolean flipNow) {
boolean running = mVisible && mStarted && mUserPresent;
if (running != mRunning) {
if (running) {
- showOnly(mWhichChild);
+ showOnly(mWhichChild, flipNow);
Message msg = mHandler.obtainMessage(FLIP_MSG);
mHandler.sendMessageDelayed(msg, mFlipInterval);
} else {