summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Alan Viverette <alanv@google.com> 2014-11-25 09:40:54 -0800
committer Alan Viverette <alanv@google.com> 2014-11-26 00:36:26 +0000
commit5ce0ec0efd541362359bfead8e62ade80a0425ca (patch)
treeb5390baa6df5120b181018bcdfd2c16256a1fca2
parent59093d925decaf6ddf2e952de25e3cdd1b492d81 (diff)
Revert "Animates AbsSeekBar progress movement from key presses."
Incorrect implementation that broke the Brightness dialog slider. Reverting to the previous behavior. This reverts commit c5c9d0af764f590ae0031b5470192a0a08ca42d1. BUG: 18510040 Change-Id: I201b1da46be964fcf6f041bb92ef79c335c2d23d
-rw-r--r--core/java/android/widget/AbsSeekBar.java67
-rw-r--r--core/java/android/widget/ProgressBar.java157
-rw-r--r--core/java/android/widget/RatingBar.java4
3 files changed, 62 insertions, 166 deletions
diff --git a/core/java/android/widget/AbsSeekBar.java b/core/java/android/widget/AbsSeekBar.java
index d39960f6b915..4800c7f656de 100644
--- a/core/java/android/widget/AbsSeekBar.java
+++ b/core/java/android/widget/AbsSeekBar.java
@@ -16,7 +16,6 @@
package android.widget;
-import android.animation.ObjectAnimator;
import android.annotation.Nullable;
import android.content.Context;
import android.content.res.ColorStateList;
@@ -65,9 +64,6 @@ public abstract class AbsSeekBar extends ProgressBar {
* progress.
*/
private int mKeyProgressIncrement = 1;
- private ObjectAnimator mPositionAnimator;
- private static final int PROGRESS_ANIMATION_DURATION = 250;
-
private static final int NO_ALPHA = 0xFF;
private float mDisabledAlpha;
@@ -388,14 +384,15 @@ public abstract class AbsSeekBar extends ProgressBar {
void onProgressRefresh(float scale, boolean fromUser) {
super.onProgressRefresh(scale, fromUser);
- if (!isAnimationRunning()) {
- setThumbPos(scale);
- }
- }
+ final Drawable thumb = mThumb;
+ if (thumb != null) {
+ setThumbPos(getWidth(), thumb, scale, Integer.MIN_VALUE);
- @Override
- void onAnimatePosition(float scale, boolean fromUser) {
- setThumbPos(scale);
+ // Since we draw translated, the drawable's bounds that it signals
+ // for invalidation won't be the actual bounds we want invalidated,
+ // so just invalidate this whole view.
+ invalidate();
+ }
}
@Override
@@ -440,18 +437,6 @@ public abstract class AbsSeekBar extends ProgressBar {
return max > 0 ? getProgress() / (float) max : 0;
}
- private void setThumbPos(float scale) {
- final Drawable thumb = mThumb;
- if (thumb != null) {
- setThumbPos(getWidth(), thumb, scale, Integer.MIN_VALUE);
- // Since we draw translated, the drawable's bounds that it signals
- // for invalidation won't be the actual bounds we want invalidated,
- // so just invalidate this whole view.
- invalidate();
-
- }
- }
-
/**
* Updates the thumb drawable bounds.
*
@@ -714,13 +699,13 @@ public abstract class AbsSeekBar extends ProgressBar {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
if (progress <= 0) break;
- animateSetProgress(progress - mKeyProgressIncrement);
+ setProgress(progress - mKeyProgressIncrement, true);
onKeyChange();
return true;
case KeyEvent.KEYCODE_DPAD_RIGHT:
if (progress >= getMax()) break;
- animateSetProgress(progress + mKeyProgressIncrement);
+ setProgress(progress + mKeyProgressIncrement, true);
onKeyChange();
return true;
}
@@ -729,38 +714,6 @@ public abstract class AbsSeekBar extends ProgressBar {
return super.onKeyDown(keyCode, event);
}
- boolean isAnimationRunning() {
- return mPositionAnimator != null && mPositionAnimator.isRunning();
- }
-
- /**
- * @hide
- */
- @Override
- public void setProgress(int progress, boolean fromUser) {
- if (isAnimationRunning()) {
- mPositionAnimator.cancel();
- }
- super.setProgress(progress, fromUser);
- }
-
- void animateSetProgress(int progress) {
- float curProgress = isAnimationRunning() ? getAnimationPosition() : getProgress();
-
- if (progress < 0) {
- progress = 0;
- } else if (progress > getMax()) {
- progress = getMax();
- }
- setProgressValueOnly(progress);
-
- mPositionAnimator = ObjectAnimator.ofFloat(this, "animationPosition", curProgress,
- progress);
- mPositionAnimator.setDuration(PROGRESS_ANIMATION_DURATION);
- mPositionAnimator.setAutoCancel(true);
- mPositionAnimator.start();
- }
-
@Override
public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
super.onInitializeAccessibilityEvent(event);
diff --git a/core/java/android/widget/ProgressBar.java b/core/java/android/widget/ProgressBar.java
index 887a93b8425f..de1bbc7affad 100644
--- a/core/java/android/widget/ProgressBar.java
+++ b/core/java/android/widget/ProgressBar.java
@@ -227,8 +227,6 @@ public class ProgressBar extends View {
private long mUiThreadId;
private boolean mShouldStartAnimationDrawable;
- private float mAnimationPosition;
-
private boolean mInDrawing;
private boolean mAttached;
private boolean mRefreshIsPosted;
@@ -246,7 +244,7 @@ public class ProgressBar extends View {
public ProgressBar(Context context) {
this(context, null);
}
-
+
public ProgressBar(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.progressBarStyle);
}
@@ -263,9 +261,9 @@ public class ProgressBar extends View {
final TypedArray a = context.obtainStyledAttributes(
attrs, R.styleable.ProgressBar, defStyleAttr, defStyleRes);
-
+
mNoInvalidate = true;
-
+
final Drawable progressDrawable = a.getDrawable(R.styleable.ProgressBar_progressDrawable);
if (progressDrawable != null) {
// Calling this method can set mMaxHeight, make sure the corresponding
@@ -284,11 +282,11 @@ public class ProgressBar extends View {
mBehavior = a.getInt(R.styleable.ProgressBar_indeterminateBehavior, mBehavior);
final int resID = a.getResourceId(
- com.android.internal.R.styleable.ProgressBar_interpolator,
+ com.android.internal.R.styleable.ProgressBar_interpolator,
android.R.anim.linear_interpolator); // default to linear interpolator
if (resID > 0) {
setInterpolator(context, resID);
- }
+ }
setMax(a.getInt(R.styleable.ProgressBar_max, mMax));
@@ -401,12 +399,12 @@ public class ProgressBar extends View {
* traverse layer and state list drawables.
*/
private Drawable tileify(Drawable drawable, boolean clip) {
-
+
if (drawable instanceof LayerDrawable) {
LayerDrawable background = (LayerDrawable) drawable;
final int N = background.getNumberOfLayers();
Drawable[] outDrawables = new Drawable[N];
-
+
for (int i = 0; i < N; i++) {
int id = background.getId(i);
outDrawables[i] = tileify(background.getDrawable(i),
@@ -414,13 +412,13 @@ public class ProgressBar extends View {
}
LayerDrawable newBg = new LayerDrawable(outDrawables);
-
+
for (int i = 0; i < N; i++) {
newBg.setId(i, background.getId(i));
}
-
+
return newBg;
-
+
} else if (drawable instanceof StateListDrawable) {
StateListDrawable in = (StateListDrawable) drawable;
StateListDrawable out = new StateListDrawable();
@@ -429,7 +427,7 @@ public class ProgressBar extends View {
out.addState(in.getStateSet(i), tileify(in.getStateDrawable(i), clip));
}
return out;
-
+
} else if (drawable instanceof BitmapDrawable) {
final BitmapDrawable bitmap = (BitmapDrawable) drawable;
final Bitmap tileBitmap = bitmap.getBitmap();
@@ -450,7 +448,7 @@ public class ProgressBar extends View {
return clip ? new ClipDrawable(
shapeDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL) : shapeDrawable;
}
-
+
return drawable;
}
@@ -458,7 +456,7 @@ public class ProgressBar extends View {
final float[] roundedCorners = new float[] { 5, 5, 5, 5, 5, 5, 5, 5 };
return new RoundRectShape(roundedCorners, null, null);
}
-
+
/**
* Convert a AnimationDrawable for use as a barberpole animation.
* Each frame of the animation is wrapped in a ClipDrawable and
@@ -470,7 +468,7 @@ public class ProgressBar extends View {
final int N = background.getNumberOfFrames();
AnimationDrawable newBg = new AnimationDrawable();
newBg.setOneShot(background.isOneShot());
-
+
for (int i = 0; i < N; i++) {
Drawable frame = tileify(background.getFrame(i), true);
frame.setLevel(10000);
@@ -481,7 +479,7 @@ public class ProgressBar extends View {
}
return drawable;
}
-
+
/**
* <p>
* Initialize the progress bar's default values:
@@ -522,7 +520,7 @@ public class ProgressBar extends View {
* <p>Change the indeterminate mode for this progress bar. In indeterminate
* mode, the progress is ignored and the progress bar shows an infinite
* animation instead.</p>
- *
+ *
* If this progress bar's style only supports indeterminate mode (such as the circular
* progress bars), then this will be ignored.
*
@@ -701,7 +699,7 @@ public class ProgressBar extends View {
setIndeterminateDrawable(d);
}
-
+
/**
* <p>Get the drawable used to draw the progress bar in
* progress mode.</p>
@@ -1137,7 +1135,7 @@ public class ProgressBar extends View {
setProgressDrawable(d);
}
-
+
/**
* @return The drawable currently used to draw the progress bar
*/
@@ -1188,7 +1186,7 @@ public class ProgressBar extends View {
final int count = mRefreshData.size();
for (int i = 0; i < count; i++) {
final RefreshData rd = mRefreshData.get(i);
- doRefreshProgress(rd.id, rd.progress, rd.fromUser, true, rd.animate);
+ doRefreshProgress(rd.id, rd.progress, rd.fromUser, true);
rd.recycle();
}
mRefreshData.clear();
@@ -1203,12 +1201,10 @@ public class ProgressBar extends View {
new SynchronizedPool<RefreshData>(POOL_MAX);
public int id;
- public float progress;
+ public int progress;
public boolean fromUser;
- public boolean animate;
- public static RefreshData obtain(int id, float progress, boolean fromUser,
- boolean animate) {
+ public static RefreshData obtain(int id, int progress, boolean fromUser) {
RefreshData rd = sPool.acquire();
if (rd == null) {
rd = new RefreshData();
@@ -1216,10 +1212,9 @@ public class ProgressBar extends View {
rd.id = id;
rd.progress = progress;
rd.fromUser = fromUser;
- rd.animate = animate;
return rd;
}
-
+
public void recycle() {
sPool.release(this);
}
@@ -1243,19 +1238,9 @@ public class ProgressBar extends View {
layer.setTintMode(tintMode);
}
- private float getScale(float progress) {
- return mMax > 0 ? progress / (float) mMax : 0;
- }
-
- private synchronized void doRefreshProgress(int id, float progress, boolean fromUser,
+ private synchronized void doRefreshProgress(int id, int progress, boolean fromUser,
boolean callBackToApp) {
- doRefreshProgress(id, progress, fromUser, callBackToApp, false);
- }
-
- private synchronized void doRefreshProgress(int id, float progress, boolean fromUser,
- boolean callBackToApp, boolean animate) {
- float scale = getScale(progress);
-
+ float scale = mMax > 0 ? (float) progress / (float) mMax : 0;
final Drawable d = mCurrentDrawable;
if (d != null) {
Drawable progressDrawable = null;
@@ -1272,65 +1257,27 @@ public class ProgressBar extends View {
} else {
invalidate();
}
-
- if (id == R.id.progress) {
- if (animate) {
- onAnimatePosition(scale, fromUser);
- } else if (callBackToApp) {
- onProgressRefresh(scale, fromUser);
- }
+
+ if (callBackToApp && id == R.id.progress) {
+ onProgressRefresh(scale, fromUser);
}
}
- /**
- * Called when a ProgressBar is animating its position.
- *
- * @param scale Current position/progress between 0 and 1.
- * @param fromUser True if the progress change was initiated by the user.
- */
- void onAnimatePosition(float scale, boolean fromUser) {
- }
-
- /**
- * Sets the progress value without going through the entire refresh process.
- *
- * @see #setProgress(int, boolean)
- * @param progress The new progress, between 0 and {@link #getMax()}
- */
- void setProgressValueOnly(int progress) {
- mProgress = progress;
- onProgressRefresh(getScale(progress), true);
- }
-
- void setAnimationPosition(float position) {
- mAnimationPosition = position;
- refreshProgress(R.id.progress, position, true, true);
- }
-
- float getAnimationPosition() {
- return mAnimationPosition;
- }
-
void onProgressRefresh(float scale, boolean fromUser) {
if (AccessibilityManager.getInstance(mContext).isEnabled()) {
scheduleAccessibilityEventSender();
}
}
- private synchronized void refreshProgress(int id, float progress, boolean fromUser) {
- refreshProgress(id, progress, fromUser, false);
- }
-
- private synchronized void refreshProgress(int id, float progress, boolean fromUser,
- boolean animate) {
+ private synchronized void refreshProgress(int id, int progress, boolean fromUser) {
if (mUiThreadId == Thread.currentThread().getId()) {
- doRefreshProgress(id, progress, fromUser, true, animate);
+ doRefreshProgress(id, progress, fromUser, true);
} else {
if (mRefreshProgressRunnable == null) {
mRefreshProgressRunnable = new RefreshProgressRunnable();
}
- final RefreshData rd = RefreshData.obtain(id, progress, fromUser, animate);
+ final RefreshData rd = RefreshData.obtain(id, progress, fromUser);
mRefreshData.add(rd);
if (mAttached && !mRefreshIsPosted) {
post(mRefreshProgressRunnable);
@@ -1338,7 +1285,7 @@ public class ProgressBar extends View {
}
}
}
-
+
/**
* <p>Set the current progress to the specified value. Does not do anything
* if the progress bar is in indeterminate mode.</p>
@@ -1348,13 +1295,13 @@ public class ProgressBar extends View {
* @see #setIndeterminate(boolean)
* @see #isIndeterminate()
* @see #getProgress()
- * @see #incrementProgressBy(int)
+ * @see #incrementProgressBy(int)
*/
@android.view.RemotableViewMethod
public synchronized void setProgress(int progress) {
setProgress(progress, false);
}
-
+
@android.view.RemotableViewMethod
synchronized void setProgress(int progress, boolean fromUser) {
if (mIndeterminate) {
@@ -1380,7 +1327,7 @@ public class ProgressBar extends View {
* Set the current secondary progress to the specified value. Does not do
* anything if the progress bar is in indeterminate mode.
* </p>
- *
+ *
* @param secondaryProgress the new secondary progress, between 0 and {@link #getMax()}
* @see #setIndeterminate(boolean)
* @see #isIndeterminate()
@@ -1461,8 +1408,8 @@ public class ProgressBar extends View {
* @param max the upper range of this progress bar
*
* @see #getMax()
- * @see #setProgress(int)
- * @see #setSecondaryProgress(int)
+ * @see #setProgress(int)
+ * @see #setSecondaryProgress(int)
*/
@android.view.RemotableViewMethod
public synchronized void setMax(int max) {
@@ -1479,13 +1426,13 @@ public class ProgressBar extends View {
refreshProgress(R.id.progress, mProgress, false);
}
}
-
+
/**
* <p>Increase the progress bar's progress by the specified amount.</p>
*
* @param diff the amount by which the progress must be increased
*
- * @see #setProgress(int)
+ * @see #setProgress(int)
*/
public synchronized final void incrementProgressBy(int diff) {
setProgress(mProgress + diff);
@@ -1496,7 +1443,7 @@ public class ProgressBar extends View {
*
* @param diff the amount by which the secondary progress must be increased
*
- * @see #setSecondaryProgress(int)
+ * @see #setSecondaryProgress(int)
*/
public synchronized final void incrementSecondaryProgressBy(int diff) {
setSecondaryProgress(mSecondaryProgress + diff);
@@ -1519,13 +1466,13 @@ public class ProgressBar extends View {
if (mInterpolator == null) {
mInterpolator = new LinearInterpolator();
}
-
+
if (mTransformation == null) {
mTransformation = new Transformation();
} else {
mTransformation.clear();
}
-
+
if (mAnimation == null) {
mAnimation = new AlphaAnimation(0.0f, 1.0f);
} else {
@@ -1676,7 +1623,7 @@ public class ProgressBar extends View {
}
mIndeterminateDrawable.setBounds(left, top, right, bottom);
}
-
+
if (mProgressDrawable != null) {
mProgressDrawable.setBounds(0, 0, right, bottom);
}
@@ -1746,20 +1693,20 @@ public class ProgressBar extends View {
setMeasuredDimension(resolveSizeAndState(dw, widthMeasureSpec, 0),
resolveSizeAndState(dh, heightMeasureSpec, 0));
}
-
+
@Override
protected void drawableStateChanged() {
super.drawableStateChanged();
updateDrawableState();
}
-
+
private void updateDrawableState() {
int[] state = getDrawableState();
-
+
if (mProgressDrawable != null && mProgressDrawable.isStateful()) {
mProgressDrawable.setState(state);
}
-
+
if (mIndeterminateDrawable != null && mIndeterminateDrawable.isStateful()) {
mIndeterminateDrawable.setState(state);
}
@@ -1781,14 +1728,14 @@ public class ProgressBar extends View {
static class SavedState extends BaseSavedState {
int progress;
int secondaryProgress;
-
+
/**
* Constructor called from {@link ProgressBar#onSaveInstanceState()}
*/
SavedState(Parcelable superState) {
super(superState);
}
-
+
/**
* Constructor called from {@link #CREATOR}
*/
@@ -1822,10 +1769,10 @@ public class ProgressBar extends View {
// Force our ancestor class to save its state
Parcelable superState = super.onSaveInstanceState();
SavedState ss = new SavedState(superState);
-
+
ss.progress = mProgress;
ss.secondaryProgress = mSecondaryProgress;
-
+
return ss;
}
@@ -1833,7 +1780,7 @@ public class ProgressBar extends View {
public void onRestoreInstanceState(Parcelable state) {
SavedState ss = (SavedState) state;
super.onRestoreInstanceState(ss.getSuperState());
-
+
setProgress(ss.progress);
setSecondaryProgress(ss.secondaryProgress);
}
@@ -1849,7 +1796,7 @@ public class ProgressBar extends View {
final int count = mRefreshData.size();
for (int i = 0; i < count; i++) {
final RefreshData rd = mRefreshData.get(i);
- doRefreshProgress(rd.id, rd.progress, rd.fromUser, rd.animate);
+ doRefreshProgress(rd.id, rd.progress, rd.fromUser, true);
rd.recycle();
}
mRefreshData.clear();
diff --git a/core/java/android/widget/RatingBar.java b/core/java/android/widget/RatingBar.java
index c4a7c0aa4efd..82b490ea26c2 100644
--- a/core/java/android/widget/RatingBar.java
+++ b/core/java/android/widget/RatingBar.java
@@ -314,10 +314,6 @@ public class RatingBar extends AbsSeekBar {
dispatchRatingChange(true);
}
- @Override
- void animateSetProgress(int progress) {
- }
-
void dispatchRatingChange(boolean fromUser) {
if (mOnRatingBarChangeListener != null) {
mOnRatingBarChangeListener.onRatingChanged(this, getRating(),