Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c8361ba7 authored by Alan Viverette's avatar Alan Viverette Committed by Android Git Automerger
Browse files

am 0a310c99: Merge "Revert "Animates AbsSeekBar progress movement from key...

am 0a310c99: Merge "Revert "Animates AbsSeekBar progress movement from key presses."" into lmp-mr1-dev

* commit '0a310c99':
  Revert "Animates AbsSeekBar progress movement from key presses."
parents 30c0d5b5 0a310c99
Loading
Loading
Loading
Loading
+10 −57
Original line number Diff line number Diff line
@@ -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);
+52 −105
Original line number Diff line number Diff line
@@ -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;
@@ -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,7 +1212,6 @@ public class ProgressBar extends View {
            rd.id = id;
            rd.progress = progress;
            rd.fromUser = fromUser;
            rd.animate = animate;
            return rd;
        }
        
@@ -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;
@@ -1273,43 +1258,10 @@ public class ProgressBar extends View {
            invalidate();
        }
        
        if (id == R.id.progress) {
            if (animate) {
                onAnimatePosition(scale, fromUser);
            } else if (callBackToApp) {
        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()) {
@@ -1317,20 +1269,15 @@ public class ProgressBar extends View {
        }
    }

    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);
@@ -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();
+0 −4
Original line number Diff line number Diff line
@@ -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(),