From dc465e89a6d1ff9e0b067050f69914e7676eaeab Mon Sep 17 00:00:00 2001 From: seven332 Date: Sun, 9 Aug 2015 14:45:38 +0800 Subject: [PATCH] Add Slider reverse --- .../com/hippo/ehviewer/gallery/ui/Slider.java | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ui/Slider.java b/app/src/main/java/com/hippo/ehviewer/gallery/ui/Slider.java index 6f7731449..cb71e4158 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/ui/Slider.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/ui/Slider.java @@ -33,6 +33,8 @@ public class Slider extends GLView { // 0.0f to 1.0f private float mDrawProgress = 0.0f; + private boolean mReverse = false; + private int m2dp; private int m5dp; private int m6dp; @@ -75,6 +77,17 @@ public class Slider extends GLView { } } + public int getProgress() { + return mProgress; + } + + public void setReverse(boolean reverse) { + if (mReverse != reverse) { + mReverse = reverse; + invalidate(); + } + } + public void setOnSetProgressListener(OnSetProgressListener listener) { mListener = listener; } @@ -99,7 +112,8 @@ public class Slider extends GLView { canvas.fillRect(padding.left + dp6, padding.top + m5dp, width - dp6 - dp6 - padding.left - padding.right, m2dp, mColor); // Draw controllor - canvas.fillOval(padding.left + dp6 + (width - dp6 - dp6 - padding.left - padding.right) * mDrawProgress, + canvas.fillOval(padding.left + dp6 + (width - dp6 - dp6 - padding.left - padding.right) * + (mReverse ? (1.0f - mDrawProgress) : mDrawProgress), padding.top + dp6, dp6, dp6, mColor); } } @@ -113,11 +127,15 @@ public class Slider extends GLView { case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: + Rect padding = mPaddings; + int dp6 = m6dp; float x = event.getX(); int progress = Math.round(MathUtils.lerp((float) mStart, (float) mEnd, - MathUtils.clamp((x - m6dp) / (getWidth() - m6dp - m6dp), 0.0f, 1.0f))); - if (progress != mProgress) { - mDrawProgress = MathUtils.delerp(mStart, mEnd, progress); + MathUtils.clamp((mReverse ? (getWidth() - padding.right - dp6 - x) : (x - dp6 - padding.left)) / + (getWidth() - dp6 - dp6 - padding.left - padding.right), 0.0f, 1.0f))); + float oldDrawProgress = mDrawProgress; + mDrawProgress = MathUtils.delerp(mStart, mEnd, progress); + if (mDrawProgress != oldDrawProgress) { invalidate(); }