Skip to content

Commit 110dc91

Browse files
fix gradient color picker update bug
1 parent 6ca89fe commit 110dc91

File tree

3 files changed

+30
-29
lines changed

3 files changed

+30
-29
lines changed

app/src/main/java/com/smarttoolfactory/composecolorpicker/demo/ColorAndGradientPickerDemo.kt

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.smarttoolfactory.composecolorpicker.demo
33
import androidx.compose.foundation.background
44
import androidx.compose.foundation.layout.*
55
import androidx.compose.foundation.rememberScrollState
6+
import androidx.compose.foundation.shape.RoundedCornerShape
67
import androidx.compose.foundation.verticalScroll
78
import androidx.compose.material.ButtonDefaults
89
import androidx.compose.material.OutlinedButton
@@ -17,6 +18,7 @@ import com.smarttoolfactory.colorpicker.dialog.ColorPickerRingDiamondGradientHSL
1718
import com.smarttoolfactory.colorpicker.model.BrushColor
1819
import com.smarttoolfactory.colorpicker.model.GradientColorState
1920
import com.smarttoolfactory.colorpicker.model.rememberGradientColorState
21+
import com.smarttoolfactory.colorpicker.widget.drawChecker
2022
import com.smarttoolfactory.composecolorpicker.ui.theme.backgroundColor
2123

2224
@Composable
@@ -44,17 +46,25 @@ fun ColorAndGradientPickerDemo() {
4446
mutableStateOf(previousBrushColor.copy())
4547
}
4648

47-
4849
Row {
4950
Box(
5051
modifier = Modifier
5152
.size(size)
52-
.background(previousBrushColor.activeBrush)
53+
.fillMaxHeight()
54+
.drawChecker(RoundedCornerShape(topStart = 8.dp, bottomStart = 8.dp))
55+
.background(
56+
previousBrushColor.activeBrush,
57+
shape = RoundedCornerShape(topStart = 8.dp, bottomStart = 8.dp)
58+
)
5359
)
5460
Box(
5561
modifier = Modifier
5662
.size(size)
57-
.background(currentBrushColor.activeBrush)
63+
.drawChecker(RoundedCornerShape(topEnd = 8.dp, bottomEnd = 8.dp))
64+
.background(
65+
currentBrushColor.activeBrush,
66+
shape = RoundedCornerShape(topEnd = 8.dp, bottomEnd = 8.dp)
67+
)
5868
)
5969
}
6070

colorpicker/src/main/java/com/smarttoolfactory/colorpicker/dialog/GradientColorPickerDialog.kt

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import com.smarttoolfactory.colorpicker.ui.Blue400
2525
@Composable
2626
fun ColorPickerRingDiamondGradientHSLDialog(
2727
initialBrushColor: BrushColor,
28-
gradientColorState: GradientColorState= rememberGradientColorState(),
28+
gradientColorState: GradientColorState = rememberGradientColorState(),
2929
ringOuterRadiusFraction: Float = .9f,
3030
ringInnerRadiusFraction: Float = .6f,
3131
ringBackgroundColor: Color = Color.Transparent,
@@ -35,34 +35,35 @@ fun ColorPickerRingDiamondGradientHSLDialog(
3535
onDismiss: (BrushColor) -> Unit
3636
) {
3737

38-
var brushColor by remember(initialBrushColor) {
39-
mutableStateOf(BrushColor(color = initialBrushColor.color.copy()))
40-
}
38+
var brushColor: BrushColor by remember { mutableStateOf(initialBrushColor.copy()) }
4139

4240
Dialog(
4341
onDismissRequest = {
4442
onDismiss(brushColor)
4543
}
4644
) {
4745
Column(horizontalAlignment = Alignment.CenterHorizontally) {
48-
4946
ColorPickerRingDiamondGradientHSL(
5047
modifier = Modifier
5148
.fillMaxWidth()
5249
.weight(1f)
5350
.background(Color(0xcc212121), shape = RoundedCornerShape(5.dp))
5451
.padding(horizontal = 10.dp, vertical = 2.dp),
55-
initialColor = brushColor.color,
52+
initialColor = initialBrushColor.color,
5653
gradientColorState = gradientColorState,
5754
ringOuterRadiusFraction = ringOuterRadiusFraction,
5855
ringInnerRadiusFraction = ringInnerRadiusFraction,
5956
ringBackgroundColor = ringBackgroundColor,
6057
ringBorderStrokeColor = ringBorderStrokeColor,
6158
ringBorderStrokeWidth = ringBorderStrokeWidth,
62-
selectionRadius = selectionRadius
63-
) {
64-
brushColor = it
65-
}
59+
selectionRadius = selectionRadius,
60+
onColorChange = {
61+
brushColor = BrushColor(color = it)
62+
},
63+
onBrushColorChange = {
64+
brushColor = BrushColor(brush = it)
65+
}
66+
)
6667

6768
FloatingActionButton(
6869
onClick = { onDismiss(brushColor) },

colorpicker/src/main/java/com/smarttoolfactory/colorpicker/picker/gradient/ColorPickerRingDimondGradientHSL.kt

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import androidx.compose.foundation.verticalScroll
66
import androidx.compose.runtime.*
77
import androidx.compose.ui.Alignment
88
import androidx.compose.ui.Modifier
9+
import androidx.compose.ui.graphics.Brush
910
import androidx.compose.ui.graphics.Color
1011
import androidx.compose.ui.unit.Dp
1112
import androidx.compose.ui.unit.dp
@@ -49,7 +50,8 @@ fun ColorPickerRingDiamondGradientHSL(
4950
ringBorderStrokeColor: Color = Color.Black,
5051
ringBorderStrokeWidth: Dp = 4.dp,
5152
selectionRadius: Dp = 8.dp,
52-
onBrushColorChange: (BrushColor) -> Unit
53+
onColorChange: (Color) -> Unit,
54+
onBrushColorChange: (Brush) -> Unit
5355
) {
5456

5557
var inputColorModel by remember { mutableStateOf(ColorModel.HSL) }
@@ -64,6 +66,8 @@ fun ColorPickerRingDiamondGradientHSL(
6466

6567
val currentColor =
6668
Color.hsl(hue = hue, saturation = saturation, lightness = lightness, alpha = alpha)
69+
gradientColorState.color = currentColor
70+
onColorChange(currentColor)
6771

6872
Column(
6973
modifier = modifier,
@@ -152,9 +156,7 @@ fun ColorPickerRingDiamondGradientHSL(
152156
color = currentColor,
153157
gradientColorState = gradientColorState
154158
) {
155-
onBrushColorChange(
156-
BrushColor(brush = it)
157-
)
159+
onBrushColorChange(it)
158160
}
159161
}
160162
}
@@ -172,18 +174,6 @@ fun ColorPickerRingDiamondGradientHSL(
172174
saturation = color.saturation
173175
lightness = color.lightness
174176
alpha = color.alpha
175-
176-
gradientColorState.color = Color.hsl(
177-
hue = hue,
178-
saturation = saturation,
179-
lightness = lightness,
180-
alpha = alpha
181-
)
182-
183-
onBrushColorChange(
184-
BrushColor(color = gradientColorState.color)
185-
)
186-
187177
}
188178
},
189179
showAlphaSlider = true,

0 commit comments

Comments
 (0)