Skip to content

Commit 47228b1

Browse files
committed
Fix wrong calcuation for the restoring position of HSVColorPalette
1 parent 126e779 commit 47228b1

File tree

6 files changed

+43
-15
lines changed

6 files changed

+43
-15
lines changed

colorpickerview/src/main/java/com/skydoves/colorpickerview/ColorHsvPalette.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
*/
3737
public class ColorHsvPalette extends BitmapDrawable {
3838

39-
private Paint huePaint;
40-
private Paint saturationPaint;
39+
private final Paint huePaint;
40+
private final Paint saturationPaint;
4141

4242
public ColorHsvPalette(Resources resources, Bitmap bitmap) {
4343
super(resources, bitmap);

colorpickerview/src/main/java/com/skydoves/colorpickerview/ColorPickerView.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,20 @@ private void onFinishInflated() {
227227

228228
if (getPreferenceName() != null) {
229229
preferenceManager.restoreColorPickerData(this);
230+
final int persisted = preferenceManager.getColor(getPreferenceName(), -1);
231+
if (palette.getDrawable() instanceof ColorHsvPalette && persisted != -1) {
232+
post(
233+
new Runnable() {
234+
@Override
235+
public void run() {
236+
try {
237+
selectByHsvColor(persisted);
238+
} catch (IllegalAccessException e) {
239+
e.printStackTrace();
240+
}
241+
}
242+
});
243+
}
230244
} else {
231245
selectCenter();
232246
}
@@ -643,8 +657,8 @@ public void setCoordinate(int x, int y) {
643657
*/
644658
public void setInitialColor(@ColorInt final int color) {
645659
if (getPreferenceName() == null
646-
|| (getPreferenceName() != null)
647-
&& preferenceManager.getColor(getPreferenceName(), -1) == -1) {
660+
|| (getPreferenceName() != null
661+
&& preferenceManager.getColor(getPreferenceName(), -1) == -1)) {
648662
post(
649663
new Runnable() {
650664
@Override
@@ -691,8 +705,12 @@ public void selectByHsvColor(@ColorInt int color) throws IllegalAccessException
691705
selectedPureColor = color;
692706
selectedColor = color;
693707
selectedPoint = new Point(mappedPoint.x, mappedPoint.y);
694-
if (getAlphaSlideBar() != null) getAlphaSlideBar().setSelectorPosition(getAlpha());
695-
if (getBrightnessSlider() != null) getBrightnessSlider().setSelectorPosition(hsv[2]);
708+
if (getAlphaSlideBar() != null) {
709+
getAlphaSlideBar().setSelectorByHalfSelectorPosition(getAlpha());
710+
}
711+
if (getBrightnessSlider() != null) {
712+
getBrightnessSlider().setSelectorByHalfSelectorPosition(hsv[2]);
713+
}
696714
setCoordinate(mappedPoint.x, mappedPoint.y);
697715
fireColorListener(getColor(), false);
698716
notifyToFlagView(selectedPoint);

colorpickerview/src/main/java/com/skydoves/colorpickerview/preference/ColorPickerPreferenceManager.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class ColorPickerPreferenceManager {
3535
protected static final String AlphaSlider = "_SLIDER_ALPHA";
3636
protected static final String BrightnessSlider = "_SLIDER_BRIGHTNESS";
3737
private static ColorPickerPreferenceManager colorPickerPreferenceManager;
38-
private SharedPreferences sharedPreferences;
38+
private final SharedPreferences sharedPreferences;
3939

4040
private ColorPickerPreferenceManager(Context context) {
4141
sharedPreferences =
@@ -49,8 +49,9 @@ private ColorPickerPreferenceManager(Context context) {
4949
* @return {@link ColorPickerPreferenceManager}.
5050
*/
5151
public static ColorPickerPreferenceManager getInstance(Context context) {
52-
if (colorPickerPreferenceManager == null)
52+
if (colorPickerPreferenceManager == null) {
5353
colorPickerPreferenceManager = new ColorPickerPreferenceManager(context);
54+
}
5455
return colorPickerPreferenceManager;
5556
}
5657

colorpickerview/src/main/java/com/skydoves/colorpickerview/sliders/AbstractSlider.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -199,19 +199,28 @@ public void updateSelectorX(int x) {
199199

200200
public void setSelectorPosition(@FloatRange(from = 0.0, to = 1.0) float selectorPosition) {
201201
this.selectorPosition = Math.min(selectorPosition, 1.0f);
202-
float x = (getMeasuredWidth() * selectorPosition) - getSelectorHalfSize() - getBorderHalfSize();
202+
float x = (getMeasuredWidth() * selectorPosition) - getSelectorSize() - getBorderHalfSize();
203+
selectedX = (int) getBoundaryX(x);
204+
selector.setX(selectedX);
205+
}
206+
207+
public void setSelectorByHalfSelectorPosition(
208+
@FloatRange(from = 0.0, to = 1.0) float selectorPosition) {
209+
this.selectorPosition = Math.min(selectorPosition, 1.0f);
210+
float x =
211+
(getMeasuredWidth() * selectorPosition) - (getSelectorSize() * 0.5f) - getBorderHalfSize();
203212
selectedX = (int) getBoundaryX(x);
204213
selector.setX(selectedX);
205214
}
206215

207216
private float getBoundaryX(float x) {
208217
int maxPos = getMeasuredWidth() - selector.getMeasuredWidth();
209218
if (x >= maxPos) return maxPos;
210-
if (x <= getSelectorHalfSize()) return 0;
211-
return x - getSelectorHalfSize();
219+
if (x <= getSelectorSize()) return 0;
220+
return x - getSelectorSize();
212221
}
213222

214-
protected int getSelectorHalfSize() {
223+
protected int getSelectorSize() {
215224
return (int) (selector.getMeasuredWidth());
216225
}
217226

colorpickerview/src/main/java/com/skydoves/colorpickerview/sliders/AlphaSlideBar.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
public class AlphaSlideBar extends AbstractSlider {
3838

3939
private Bitmap backgroundBitmap;
40-
private AlphaTileDrawable drawable = new AlphaTileDrawable();
40+
private final AlphaTileDrawable drawable = new AlphaTileDrawable();
4141

4242
public AlphaSlideBar(Context context) {
4343
super(context);
@@ -112,7 +112,7 @@ public void onInflateFinished() {
112112
updateSelectorX(
113113
ColorPickerPreferenceManager.getInstance(getContext())
114114
.getAlphaSliderPosition(getPreferenceName(), defaultPosition)
115-
+ getSelectorHalfSize());
115+
+ getSelectorSize());
116116
} else {
117117
selector.setX(defaultPosition);
118118
}

colorpickerview/src/main/java/com/skydoves/colorpickerview/sliders/BrightnessSlideBar.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public void onInflateFinished() {
9797
updateSelectorX(
9898
ColorPickerPreferenceManager.getInstance(getContext())
9999
.getBrightnessSliderPosition(getPreferenceName(), defaultPosition)
100-
+ getSelectorHalfSize());
100+
+ getSelectorSize());
101101
} else {
102102
selector.setX(defaultPosition);
103103
}

0 commit comments

Comments
 (0)