From 8d58f1885dc1968216cbe933394b5693cf5563a1 Mon Sep 17 00:00:00 2001 From: Jack Date: Wed, 13 Oct 2021 12:59:36 +0800 Subject: [PATCH] Fixed: AlphaSeekBar progress out of range --- .../fragment/AlphaSeekBarFragment.kt | 2 +- .../android/colorseekbar/AlphaSeekBar.java | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/rtugeek/android/colorseekbardemo/fragment/AlphaSeekBarFragment.kt b/app/src/main/java/com/rtugeek/android/colorseekbardemo/fragment/AlphaSeekBarFragment.kt index b127334..13d7585 100644 --- a/app/src/main/java/com/rtugeek/android/colorseekbardemo/fragment/AlphaSeekBarFragment.kt +++ b/app/src/main/java/com/rtugeek/android/colorseekbardemo/fragment/AlphaSeekBarFragment.kt @@ -50,6 +50,7 @@ class AlphaSeekBarFragment : Fragment() { ), 50, 50 ) + alphaSeekBar.alphaValue = 200 alphaSeekBar.borderColor = Color.BLACK alphaSeekBar.setOnAlphaChangeListener { progress, alpha -> Log.i("AlphaSeekBarFragment", "===progress:$progress-alpha:$alpha===") @@ -116,7 +117,6 @@ class AlphaSeekBarFragment : Fragment() { tv_radius.text = String.format("Bar Radius: %dpx", progress) } - override fun onStartTrackingTouch(seekBar: SeekBar) {} override fun onStopTrackingTouch(seekBar: SeekBar) {} }) diff --git a/colorseekbar/src/main/java/com/rtugeek/android/colorseekbar/AlphaSeekBar.java b/colorseekbar/src/main/java/com/rtugeek/android/colorseekbar/AlphaSeekBar.java index fe50257..e7168ed 100644 --- a/colorseekbar/src/main/java/com/rtugeek/android/colorseekbar/AlphaSeekBar.java +++ b/colorseekbar/src/main/java/com/rtugeek/android/colorseekbar/AlphaSeekBar.java @@ -184,10 +184,10 @@ protected void onDraw(Canvas canvas) { } @Override - protected void onBarTouch(int progress) { - setProgress(progress); + protected void onBarTouch(int newProgress) { + setProgress(newProgress); if (listener != null) { - listener.onAlphaChangeListener(progress, getAlphaValue()); + listener.onAlphaChangeListener(this.progress, getAlphaValue()); } } @@ -206,7 +206,17 @@ public int getAlphaValue() { } public void setAlphaValue(@IntRange(from = 0, to = 255) int alpha) { - setProgress((int) (alpha / 255f * maxProgress)); + float percent = alpha / 255f; + if (isVertical()) { + if (direction == Direction.BOTTOM_TO_TOP) { + percent = 1 - percent; + } + } else { + if (direction == Direction.RIGHT_TO_LEFT) { + percent = 1 - percent; + } + } + setProgress((int) (percent * maxProgress)); if (listener != null) { listener.onAlphaChangeListener(progress, getAlphaValue()); }