diff options
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 |
commit | 5ce0ec0efd541362359bfead8e62ade80a0425ca (patch) | |
tree | b5390baa6df5120b181018bcdfd2c16256a1fca2 /core/java/android | |
parent | 59093d925decaf6ddf2e952de25e3cdd1b492d81 (diff) | |
download | frameworks_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')
-rw-r--r-- | core/java/android/widget/AbsSeekBar.java | 67 | ||||
-rw-r--r-- | core/java/android/widget/ProgressBar.java | 157 | ||||
-rw-r--r-- | core/java/android/widget/RatingBar.java | 4 |
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(), |