diff options
| author | Mason Tang <masontang@google.com> | 2010-06-14 17:47:24 -0700 |
|---|---|---|
| committer | Mason Tang <masontang@google.com> | 2010-06-16 13:38:15 -0700 |
| commit | f70036bc91e93cf6834c835beb832861c0dbd9db (patch) | |
| tree | 6c437ee0a1ebd60a7fd6af9b9c20e516cc091896 /core/java/android/widget/ViewFlipper.java | |
| parent | 820c12c924ee27d7e574ce56826e9ba645fa1336 (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.java | 18 |
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 { |
