diff options
| author | Romain Guy <romainguy@google.com> | 2012-05-06 13:34:34 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2012-05-06 13:34:34 -0700 |
| commit | 4fa22f0b4d271a41e2a459e1d927c4ce54d15847 (patch) | |
| tree | 023a9be824224fda5107d0657e03dc7fbb128474 /core/java/android/widget/ProgressBar.java | |
| parent | 36cade591a1bb40acbf3f271a4b414dfd894cf1d (diff) | |
| parent | 95b0c45b06d9a053f9050e0f0ef1171a18ae0711 (diff) | |
am 95b0c45b: am aaa71475: Merge "Remove unnecessary framework allocations" into jb-dev
* commit '95b0c45b06d9a053f9050e0f0ef1171a18ae0711':
Remove unnecessary framework allocations
Diffstat (limited to 'core/java/android/widget/ProgressBar.java')
| -rw-r--r-- | core/java/android/widget/ProgressBar.java | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/core/java/android/widget/ProgressBar.java b/core/java/android/widget/ProgressBar.java index 0b49404d6e90..e26620f55a5d 100644 --- a/core/java/android/widget/ProgressBar.java +++ b/core/java/android/widget/ProgressBar.java @@ -211,6 +211,7 @@ public class ProgressBar extends View { private boolean mOnlyIndeterminate; private Transformation mTransformation; private AlphaAnimation mAnimation; + private boolean mHasAnimation; private Drawable mIndeterminateDrawable; private Drawable mProgressDrawable; private Drawable mCurrentDrawable; @@ -670,18 +671,14 @@ public class ProgressBar extends View { if (mUiThreadId == Thread.currentThread().getId()) { doRefreshProgress(id, progress, fromUser, true); } else { - RefreshProgressRunnable r; - if (mRefreshProgressRunnable != null) { - // Use cached RefreshProgressRunnable if available - r = mRefreshProgressRunnable; - } else { - // Make a new one - r = new RefreshProgressRunnable(); + if (mRefreshProgressRunnable == null) { + mRefreshProgressRunnable = new RefreshProgressRunnable(); } + final RefreshData rd = RefreshData.obtain(id, progress, fromUser); mRefreshData.add(rd); if (mAttached && !mRefreshIsPosted) { - post(r); + post(mRefreshProgressRunnable); mRefreshIsPosted = true; } } @@ -860,14 +857,26 @@ public class ProgressBar extends View { if (mIndeterminateDrawable instanceof Animatable) { mShouldStartAnimationDrawable = true; - mAnimation = null; + mHasAnimation = false; } else { + mHasAnimation = true; + if (mInterpolator == null) { mInterpolator = new LinearInterpolator(); } - mTransformation = new Transformation(); - mAnimation = new AlphaAnimation(0.0f, 1.0f); + if (mTransformation == null) { + mTransformation = new Transformation(); + } else { + mTransformation.clear(); + } + + if (mAnimation == null) { + mAnimation = new AlphaAnimation(0.0f, 1.0f); + } else { + mAnimation.reset(); + } + mAnimation.setRepeatMode(mBehavior); mAnimation.setRepeatCount(Animation.INFINITE); mAnimation.setDuration(mDuration); @@ -881,8 +890,7 @@ public class ProgressBar extends View { * <p>Stop the indeterminate progress animation.</p> */ void stopAnimation() { - mAnimation = null; - mTransformation = null; + mHasAnimation = false; if (mIndeterminateDrawable instanceof Animatable) { ((Animatable) mIndeterminateDrawable).stop(); mShouldStartAnimationDrawable = false; @@ -1027,7 +1035,7 @@ public class ProgressBar extends View { canvas.save(); canvas.translate(mPaddingLeft, mPaddingTop); long time = getDrawingTime(); - if (mAnimation != null) { + if (mHasAnimation) { mAnimation.getTransformation(time, mTransformation); float scale = mTransformation.getAlpha(); try { |
