summaryrefslogtreecommitdiff
path: root/core/java/android/widget/ProgressBar.java
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2012-05-06 13:34:34 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-05-06 13:34:34 -0700
commit4fa22f0b4d271a41e2a459e1d927c4ce54d15847 (patch)
tree023a9be824224fda5107d0657e03dc7fbb128474 /core/java/android/widget/ProgressBar.java
parent36cade591a1bb40acbf3f271a4b414dfd894cf1d (diff)
parent95b0c45b06d9a053f9050e0f0ef1171a18ae0711 (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.java36
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 {