Skip to content

Commit 982fd0e

Browse files
Merge pull request #5 from SimformSolutionsPvtLtd/feature/UNT-T5677_blinking_button
✨ UNT-T5677 Blinking button added.
2 parents 0f3dcdf + ee2603a commit 982fd0e

File tree

5 files changed

+298
-193
lines changed

5 files changed

+298
-193
lines changed

app/src/main/java/com/simform/ssloadingbuttonandroid/MainActivity.kt

Lines changed: 66 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -9,34 +9,28 @@ import androidx.compose.foundation.gestures.ScrollableState
99
import androidx.compose.foundation.gestures.scrollable
1010
import androidx.compose.foundation.layout.*
1111
import androidx.compose.foundation.lazy.LazyColumn
12-
import androidx.compose.foundation.shape.RoundedCornerShape
1312
import androidx.compose.material.Button
1413
import androidx.compose.material.ButtonDefaults
15-
import androidx.compose.material.Icon
1614
import androidx.compose.material.Text
1715
import androidx.compose.material.icons.Icons
18-
import androidx.compose.material.icons.filled.FavoriteBorder
19-
import androidx.compose.material.icons.filled.Person
16+
import androidx.compose.material.icons.filled.*
2017
import androidx.compose.runtime.*
2118
import androidx.compose.ui.Alignment
2219
import androidx.compose.ui.Modifier
2320
import androidx.compose.ui.graphics.Color
2421
import androidx.compose.ui.graphics.SolidColor
25-
import androidx.compose.ui.graphics.graphicsLayer
2622
import androidx.compose.ui.graphics.vector.rememberVectorPainter
2723
import androidx.compose.ui.res.colorResource
2824
import androidx.compose.ui.res.stringResource
25+
import androidx.compose.ui.text.font.FontFamily
2926
import androidx.compose.ui.text.font.FontStyle
3027
import androidx.compose.ui.tooling.preview.Preview
3128
import androidx.compose.ui.unit.dp
3229
import androidx.compose.ui.unit.sp
33-
import com.simform.ssloadingbuttonandroid.ssbutton.SSLoadingButton.ssLoadingButton
3430
import com.simform.ssloadingbuttonandroid.ssbutton.SSButtonState
3531
import com.simform.ssloadingbuttonandroid.ssbutton.SSButtonType
32+
import com.simform.ssloadingbuttonandroid.ssbutton.SSLoadingButton.ssLoadingButton
3633
import com.simform.ssloadingbuttonandroid.utils.*
37-
import com.simform.ssloadingbuttonandroid.ssbutton.Animation.ssRepeatedColorAnimation
38-
import com.simform.ssloadingbuttonandroid.ssbutton.Animation.ssRepeatedFloatAnimation
39-
4034

4135
class MainActivity : ComponentActivity() {
4236
override fun onCreate(savedInstanceState: Bundle?) {
@@ -57,9 +51,8 @@ fun Greeting() {
5751
var spiralState: SSButtonState by remember { mutableStateOf(SSButtonState.IDLE) }
5852
var ssTextButtonState: SSButtonState by remember { mutableStateOf(SSButtonState.IDLE) }
5953
var textWithRightButton: SSButtonState by remember { mutableStateOf(SSButtonState.IDLE) }
60-
var textWithIconState: SSButtonState by remember {
61-
mutableStateOf(SSButtonState.IDLE)
62-
}
54+
var textWithIconState: SSButtonState by remember { mutableStateOf(SSButtonState.IDLE) }
55+
var blinkingIcon: SSButtonState by remember { mutableStateOf(SSButtonState.IDLE) }
6356
LazyColumn(
6457
modifier = Modifier
6558
.fillMaxWidth()
@@ -72,7 +65,12 @@ fun Greeting() {
7265
horizontalAlignment = Alignment.CenterHorizontally
7366
) {
7467
item {
75-
Row() {
68+
Row(
69+
Modifier
70+
.padding(zero.dp, zero.dp, zero.dp, fourty.dp)
71+
.fillMaxWidth(),
72+
horizontalArrangement = Arrangement.SpaceEvenly
73+
) {
7674
Button(
7775
onClick = {
7876
roundedProgressState = SSButtonState.SUCCESS
@@ -84,9 +82,12 @@ fun Greeting() {
8482
ssTextButtonState = SSButtonState.SUCCESS
8583
textWithIconState = SSButtonState.SUCCESS
8684
textWithRightButton = SSButtonState.SUCCESS
85+
blinkingIcon = SSButtonState.SUCCESS
8786
},
88-
modifier = Modifier.padding(six.dp),
89-
elevation = ButtonDefaults.elevation()
87+
modifier = Modifier
88+
.padding(six.dp)
89+
.weight(oneFloat),
90+
elevation = ButtonDefaults.elevation(),
9091
) {
9192
Text(text = stringResource(id = R.string.on_success))
9293
}
@@ -101,51 +102,27 @@ fun Greeting() {
101102
ssTextButtonState = SSButtonState.FAILIURE
102103
textWithIconState = SSButtonState.FAILIURE
103104
textWithRightButton = SSButtonState.FAILIURE
105+
blinkingIcon = SSButtonState.FAILIURE
104106
},
105-
modifier = Modifier.padding(six.dp),
107+
modifier = Modifier
108+
.padding(six.dp)
109+
.weight(1f),
106110
elevation = ButtonDefaults.elevation()
107111
) {
108112
Text(text = stringResource(id = R.string.on_failure))
109113
}
110114
}
111115
}
112116
item {
113-
Button(
114-
onClick = {},
115-
modifier = Modifier
116-
.padding(10.dp)
117-
.fillMaxWidth(),
118-
shape = RoundedCornerShape(fifty)
119-
) {
120-
Icon(
121-
Icons.Default.FavoriteBorder,
122-
contentDescription = null,
123-
modifier = Modifier
124-
.graphicsLayer(
125-
scaleX = ssRepeatedFloatAnimation(
126-
oneFloat, oneHalfFloat,
127-
thousand
128-
), scaleY = ssRepeatedFloatAnimation(
129-
oneFloat, oneHalfFloat,
130-
thousand
131-
)
132-
)
133-
.padding(end = six.dp),
134-
tint = ssRepeatedColorAnimation(Color.Red, Color.White, thousand)
135-
)
136-
}
137-
//**********************************SSLoadingButton Start from here ******************************************//
138117
ssLoadingButton(
139-
assetColor = Color.White,
140-
colors = ButtonDefaults.buttonColors(backgroundColor = Color.Red),
118+
assetColor = Color.Red,
119+
colors = ButtonDefaults.buttonColors(backgroundColor = Color.White),
141120
buttonBorderStroke = BorderStroke(two.dp, SolidColor(Color.Red)),
142121
type = SSButtonType.ROUNDED_PROGRESS,
143-
onClick = {
144-
roundedProgressState = SSButtonState.LOADING
145-
},
146-
buttonState = roundedProgressState,
122+
onClick = { roundedProgressState2 = SSButtonState.LOADING },
123+
buttonState = roundedProgressState2,
147124
width = COMMON_WIDTH.dp, height = COMMON_HEIGHT.dp, padding = PaddingValues(six.dp),
148-
leftImagePainter = rememberVectorPainter(image = Icons.Default.Person)
125+
leftImagePainter = rememberVectorPainter(image = Icons.Default.Home)
149126
)
150127
ssLoadingButton(
151128
assetColor = colorResource(id = R.color.dark_green),
@@ -155,62 +132,62 @@ fun Greeting() {
155132
SolidColor(colorResource(id = R.color.dark_green))
156133
),
157134
type = SSButtonType.WHEEL,
158-
onClick = {
159-
wheelState = SSButtonState.LOADING
160-
},
135+
onClick = { wheelState = SSButtonState.LOADING },
161136
buttonState = wheelState,
162137
width = COMMON_WIDTH.dp, height = COMMON_HEIGHT.dp, padding = PaddingValues(six.dp),
163-
leftImagePainter = rememberVectorPainter(image = Icons.Default.Person)
138+
leftImagePainter = rememberVectorPainter(image = Icons.Default.Home)
164139
)
165140
ssLoadingButton(
166141
assetColor = Color.Blue,
167142
colors = ButtonDefaults.buttonColors(backgroundColor = Color.White),
168143
buttonBorderStroke = BorderStroke(two.dp, SolidColor(Color.Blue)),
169144
type = SSButtonType.ZOOM_IN_OUT_PROGRESS,
170-
onClick = {
171-
zoomInOutState = SSButtonState.LOADING
172-
},
145+
onClick = { zoomInOutState = SSButtonState.LOADING },
173146
buttonState = zoomInOutState,
174147
width = COMMON_WIDTH.dp, height = COMMON_HEIGHT.dp, padding = PaddingValues(six.dp),
175-
leftImagePainter = rememberVectorPainter(image = Icons.Default.Person)
148+
leftImagePainter = rememberVectorPainter(image = Icons.Default.Home)
176149
)
177150
ssLoadingButton(
178151
Color.Red,
179152
colors = ButtonDefaults.buttonColors(backgroundColor = Color.White),
180153
buttonBorderStroke = BorderStroke(two.dp, SolidColor(Color.Red)),
181154
type = SSButtonType.CLOCK,
182-
onClick = {
183-
clockState = SSButtonState.LOADING
184-
},
155+
onClick = { clockState = SSButtonState.LOADING },
185156
buttonState = clockState,
186157
width = COMMON_WIDTH.dp, height = COMMON_HEIGHT.dp, padding = PaddingValues(six.dp),
187-
leftImagePainter = rememberVectorPainter(image = Icons.Default.Person)
188-
)
189-
190-
ssLoadingButton(
191-
assetColor = Color.Red,
192-
colors = ButtonDefaults.buttonColors(backgroundColor = Color.White),
193-
buttonBorderStroke = BorderStroke(two.dp, SolidColor(Color.Red)),
194-
type = SSButtonType.ROUNDED_PROGRESS,
195-
onClick = {
196-
roundedProgressState2 = SSButtonState.LOADING
197-
},
198-
buttonState = roundedProgressState2,
199-
width = COMMON_WIDTH.dp, height = COMMON_HEIGHT.dp, padding = PaddingValues(six.dp),
200-
leftImagePainter = rememberVectorPainter(image = Icons.Default.Person)
158+
leftImagePainter = rememberVectorPainter(image = Icons.Default.Home)
201159
)
202160
ssLoadingButton(
203161
assetColor = Color.Blue,
204162
colors = ButtonDefaults.buttonColors(backgroundColor = Color.White),
205163
buttonBorderStroke = BorderStroke(two.dp, SolidColor(Color.Blue)),
206164
type = SSButtonType.SPIRAL,
207-
onClick = {
208-
spiralState = SSButtonState.LOADING
209-
},
165+
onClick = { spiralState = SSButtonState.LOADING },
210166
buttonState = spiralState,
211167
width = COMMON_WIDTH.dp, height = COMMON_HEIGHT.dp, padding = PaddingValues(six.dp),
168+
leftImagePainter = rememberVectorPainter(image = Icons.Default.Home)
169+
)
170+
ssLoadingButton(
171+
assetColor = Color.White,
172+
colors = ButtonDefaults.buttonColors(backgroundColor = Color.Red),
173+
type = SSButtonType.ROUNDED_PROGRESS,
174+
onClick = { roundedProgressState = SSButtonState.LOADING },
175+
buttonState = roundedProgressState,
176+
width = COMMON_WIDTH.dp, height = COMMON_HEIGHT.dp, padding = PaddingValues(six.dp),
212177
leftImagePainter = rememberVectorPainter(image = Icons.Default.Person)
213178
)
179+
ssLoadingButton(
180+
assetColor = Color.Yellow,
181+
type = SSButtonType.CLOCK,
182+
onClick = { blinkingIcon = SSButtonState.LOADING },
183+
buttonState = blinkingIcon,
184+
width = COMMON_WIDTH.dp,
185+
height = COMMON_HEIGHT.dp,
186+
blinkingIcon = true,
187+
leftImagePainter = rememberVectorPainter(image = Icons.Default.FavoriteBorder),
188+
padding = PaddingValues(six.dp),
189+
hourHandColor = Color.Red
190+
)
214191
ssLoadingButton(
215192
assetColor = Color.White,
216193
colors = ButtonDefaults.buttonColors(backgroundColor = colorResource(id = R.color.yellow)),
@@ -219,44 +196,45 @@ fun Greeting() {
219196
SolidColor(colorResource(id = R.color.yellow))
220197
),
221198
type = SSButtonType.ZOOM_IN_OUT_PROGRESS,
222-
onClick = {
223-
ssTextButtonState = SSButtonState.LOADING
224-
},
199+
onClick = { ssTextButtonState = SSButtonState.LOADING },
225200
buttonState = ssTextButtonState,
226201
width = COMMON_WIDTH.dp,
227202
height = COMMON_HEIGHT.dp,
228203
padding = PaddingValues(six.dp),
229204
text = stringResource(id = R.string.with_text),
230205
fontStyle = FontStyle.Italic,
231206
fontSize = 16.sp,
232-
textModifier = Modifier.padding(six.dp)
207+
fontFamily = FontFamily.Monospace,
208+
textModifier = Modifier.padding(six.dp),
233209
)
234210
ssLoadingButton(
235211
assetColor = Color.White,
236212
type = SSButtonType.WHEEL,
237-
onClick = {
238-
textWithIconState = SSButtonState.LOADING
239-
},
213+
onClick = { textWithIconState = SSButtonState.LOADING },
240214
buttonState = textWithIconState,
241215
width = COMMON_WIDTH.dp,
242216
height = COMMON_HEIGHT.dp,
243-
leftImagePainter = rememberVectorPainter(image = Icons.Default.Person),
244-
text = stringResource(id = R.string.left_icon)
217+
leftImagePainter = rememberVectorPainter(image = Icons.Default.Star),
218+
text = stringResource(id = R.string.left_icon),
219+
fontFamily = FontFamily.SansSerif,
220+
textModifier = Modifier.padding(six.dp),
221+
blinkingIcon = true,
222+
padding = PaddingValues(six.dp)
245223
)
246-
247224
ssLoadingButton(
248225
assetColor = Color.White,
249226
type = SSButtonType.SPIRAL,
250227
onClick = { textWithRightButton = SSButtonState.LOADING },
251228
buttonState = textWithRightButton,
252229
width = COMMON_WIDTH.dp,
253230
height = COMMON_HEIGHT.dp,
254-
rightImagePainter = rememberVectorPainter(image = Icons.Default.Person),
231+
rightImagePainter = rememberVectorPainter(image = Icons.Default.Star),
255232
text = stringResource(id = R.string.right_icon),
233+
fontFamily = FontFamily.Serif,
234+
textModifier = Modifier.padding(six.dp),
256235
padding = PaddingValues(six.dp),
257236
colors = ButtonDefaults.buttonColors(backgroundColor = colorResource(id = R.color.teal_700))
258237
)
259-
260238
}
261239
}
262240
}

app/src/main/java/com/simform/ssloadingbuttonandroid/ssbutton/ClockLoadingBar.kt

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@ import com.simform.ssloadingbuttonandroid.utils.*
1414

1515
object ClockLoadingBar {
1616
@Composable
17-
fun Clock(modifier: Modifier = Modifier, color: Color, minHeightWidth: Dp) {
17+
fun Clock(
18+
modifier: Modifier = Modifier,
19+
minuteColor: Color,
20+
hourColor: Color,
21+
minHeightWidth: Dp
22+
) {
1823
val progressRotation = ssRepeatedFloatAnimation(
1924
initialValue = zeroFloat,
2025
targetValue = oneFloat,
@@ -34,9 +39,12 @@ object ClockLoadingBar {
3439
drawLine(
3540
strokeWidth = six.dp.toPx(),
3641
cap = StrokeCap.Round,
37-
color = color,
42+
color = minuteColor,
3843
start = middle,
39-
end = Offset(size.minDimension / two, (minHeightWidth/ two - ten.dp).toPx())
44+
end = Offset(
45+
size.minDimension / two,
46+
(minHeightWidth / two - ten.dp).toPx()
47+
)
4048
)
4149
}
4250
)
@@ -47,9 +55,12 @@ object ClockLoadingBar {
4755
drawLine(
4856
strokeWidth = six.dp.toPx(),
4957
cap = StrokeCap.Round,
50-
color = Color.Black,
58+
color = hourColor,
5159
start = middle,
52-
end = Offset(size.minDimension / two, (minHeightWidth/ two - thirteen.dp).toPx())
60+
end = Offset(
61+
size.minDimension / two,
62+
(minHeightWidth / two - twelve.dp).toPx()
63+
)
5364
)
5465
}
5566
)

0 commit comments

Comments
 (0)