diff options
author | Adam Powell <adamp@google.com> | 2011-11-10 22:01:58 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-11-10 22:01:58 +0000 |
commit | 5d35fd79a78f9e17089ab36096f7b4f2ba7d99b3 (patch) | |
tree | b8ce932506ba4b200624278fcd7b264a0661b04f /core/java | |
parent | 5a81e795cf9ec89918d667c045cfb2aaa16c204c (diff) | |
parent | ba44080d834d23d0bc7d118a4950f837eeaca96a (diff) | |
download | frameworks_base-5d35fd79a78f9e17089ab36096f7b4f2ba7d99b3.zip frameworks_base-5d35fd79a78f9e17089ab36096f7b4f2ba7d99b3.tar.gz frameworks_base-5d35fd79a78f9e17089ab36096f7b4f2ba7d99b3.tar.bz2 |
am ba44080d: am 67121fd7: Merge "Fix bug 5581874 - Animated drawables don\'t start as expected" into ics-mr1
* commit 'ba44080d834d23d0bc7d118a4950f837eeaca96a':
Fix bug 5581874 - Animated drawables don't start as expected
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/view/View.java | 16 | ||||
-rw-r--r-- | core/java/android/widget/ImageView.java | 24 |
2 files changed, 36 insertions, 4 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index feea4ee..2095e91 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -11458,8 +11458,12 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * {@link SystemClock#uptimeMillis} timebase. */ public void scheduleDrawable(Drawable who, Runnable what, long when) { - if (verifyDrawable(who) && what != null && mAttachInfo != null) { - mAttachInfo.mHandler.postAtTime(what, who, when); + if (verifyDrawable(who) && what != null) { + if (mAttachInfo != null) { + mAttachInfo.mHandler.postAtTime(what, who, when); + } else { + ViewRootImpl.getRunQueue().postDelayed(what, when - SystemClock.uptimeMillis()); + } } } @@ -11470,8 +11474,12 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * @param what the action to cancel */ public void unscheduleDrawable(Drawable who, Runnable what) { - if (verifyDrawable(who) && what != null && mAttachInfo != null) { - mAttachInfo.mHandler.removeCallbacks(what, who); + if (verifyDrawable(who) && what != null) { + if (mAttachInfo != null) { + mAttachInfo.mHandler.removeCallbacks(what, who); + } else { + ViewRootImpl.getRunQueue().removeCallbacks(what); + } } } diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java index b24dd69..1e2d0d1 100644 --- a/core/java/android/widget/ImageView.java +++ b/core/java/android/widget/ImageView.java @@ -1035,4 +1035,28 @@ public class ImageView extends View { mDrawable.setAlpha(mAlpha * mViewAlphaScale >> 8); } } + + @Override + public void setVisibility(int visibility) { + super.setVisibility(visibility); + if (mDrawable != null) { + mDrawable.setVisible(visibility == VISIBLE, false); + } + } + + @Override + public void onAttachedToWindow() { + super.onAttachedToWindow(); + if (mDrawable != null) { + mDrawable.setVisible(getVisibility() == VISIBLE, false); + } + } + + @Override + public void onDetachedFromWindow() { + super.onDetachedFromWindow(); + if (mDrawable != null) { + mDrawable.setVisible(false, false); + } + } } |