From eb3788907132eec5724bbb78f20711c4ffe35b1b Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Thu, 12 Apr 2012 11:33:14 -0700 Subject: [PATCH] Don't wait for screen on to finish animations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OldAnimations™ would set their start time during the first frame drawn after calling View.startAnimation(). If this method was invoked while the screen was off, this would cause the animation to start playing when the screen turned back on. Change-Id: Ic45a1af2020a7f5e81c2544bd8f16a6bedbd6849 --- core/java/android/view/View.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index d62e32f323b50..d34ef3aadccf1 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -9769,7 +9769,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * @attr ref android.R.styleable#View_scrollbarSize */ public int getScrollBarSize() { - return mScrollCache == null ? ViewConfiguration.getScrollBarSize() : + return mScrollCache == null ? ViewConfiguration.get(mContext).getScaledScrollBarSize() : mScrollCache.scrollBarSize; } @@ -12948,6 +12948,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * background */ public void setBackground(Drawable background) { + //noinspection deprecation setBackgroundDrawable(background); } @@ -14273,7 +14274,15 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal */ public void setAnimation(Animation animation) { mCurrentAnimation = animation; + if (animation != null) { + // If the screen is off assume the animation start time is now instead of + // the next frame we draw. Keeping the START_ON_FIRST_FRAME start time + // would cause the animation to start when the screen turns back on + if (mAttachInfo != null && !mAttachInfo.mScreenOn && + animation.getStartTime() == Animation.START_ON_FIRST_FRAME) { + animation.setStartTime(AnimationUtils.currentAnimationTimeMillis()); + } animation.reset(); } }