summaryrefslogtreecommitdiffstats
path: root/core/java/android/widget
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2014-11-25 09:40:54 -0800
committerAlan Viverette <alanv@google.com>2014-11-26 00:36:26 +0000
commit5ce0ec0efd541362359bfead8e62ade80a0425ca (patch)
treeb5390baa6df5120b181018bcdfd2c16256a1fca2 /core/java/android/widget
parent59093d925decaf6ddf2e952de25e3cdd1b492d81 (diff)
downloadframeworks_base-5ce0ec0efd541362359bfead8e62ade80a0425ca.zip
frameworks_base-5ce0ec0efd541362359bfead8e62ade80a0425ca.tar.gz
frameworks_base-5ce0ec0efd541362359bfead8e62ade80a0425ca.tar.bz2
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
Diffstat (limited to 'core/java/android/widget')
-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 d39960f..4800c7f 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 887a93b..de1bbc7 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 c4a7c0a..82b490e 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(),