@@ -3,7 +3,6 @@ package com.simform.ssjetpackcomposeprogressbutton
33import android.os.Bundle
44import androidx.activity.ComponentActivity
55import androidx.activity.compose.setContent
6- import androidx.compose.foundation.BorderStroke
76import androidx.compose.foundation.gestures.Orientation
87import androidx.compose.foundation.gestures.ScrollableState
98import androidx.compose.foundation.gestures.scrollable
@@ -28,15 +27,15 @@ import androidx.compose.material3.Button
2827import androidx.compose.material3.ButtonDefaults
2928import androidx.compose.material3.Text
3029import androidx.compose.runtime.Composable
30+ import androidx.compose.runtime.getValue
3131import androidx.compose.runtime.mutableStateOf
3232import androidx.compose.runtime.remember
33- import androidx.compose.runtime.getValue
3433import androidx.compose.runtime.setValue
3534import androidx.compose.ui.Alignment
3635import androidx.compose.ui.Modifier
3736import androidx.compose.ui.graphics.Color
38- import androidx.compose.ui.graphics.SolidColor
3937import androidx.compose.ui.graphics.vector.rememberVectorPainter
38+ import androidx.compose.ui.platform.LocalContext
4039import androidx.compose.ui.res.colorResource
4140import androidx.compose.ui.res.painterResource
4241import androidx.compose.ui.res.stringResource
@@ -46,15 +45,16 @@ import androidx.compose.ui.text.font.FontWeight
4645import androidx.compose.ui.tooling.preview.Preview
4746import androidx.compose.ui.unit.dp
4847import androidx.compose.ui.unit.sp
48+ import androidx.core.content.ContextCompat
4949import com.simform.ssjetpackcomposeprogressbutton.utils.COMMON_BORDER_WIDTH
5050import com.simform.ssjetpackcomposeprogressbutton.utils.COMMON_CORNER_RADIUS
5151import com.simform.ssjetpackcomposeprogressbutton.utils.COMMON_HEIGHT
5252import com.simform.ssjetpackcomposeprogressbutton.utils.COMMON_WIDTH
5353import com.simform.ssjetpackcomposeprogressbutton.utils.FONT_SIZE
54- import com.simform.ssjetpackcomposeprogressbutton.utils.TOP_BUTTON_HEIGHT
55- import com.simform.ssjetpackcomposeprogressbutton.utils.TOP_BUTTON_RADIUS
5654import com.simform.ssjetpackcomposeprogressbutton.utils.FORTY
5755import com.simform.ssjetpackcomposeprogressbutton.utils.ONE_FLOAT
56+ import com.simform.ssjetpackcomposeprogressbutton.utils.TOP_BUTTON_HEIGHT
57+ import com.simform.ssjetpackcomposeprogressbutton.utils.TOP_BUTTON_RADIUS
5858import com.simform.ssjetpackcomposeprogressbutton.utils.TWELVE
5959import com.simform.ssjetpackcomposeprogressbutton.utils.TWO
6060import com.simform.ssjetpackcomposeprogressbutton.utils.ZERO
@@ -63,6 +63,7 @@ import com.simform.ssjetpackcomposeprogressbuttonlibrary.SSButtonState
6363import com.simform.ssjetpackcomposeprogressbuttonlibrary.SSButtonType
6464import com.simform.ssjetpackcomposeprogressbuttonlibrary.SSCustomLoadingEffect
6565import com.simform.ssjetpackcomposeprogressbuttonlibrary.SSJetPackComposeProgressButton
66+ import com.simform.ssjetpackcomposeprogressbuttonlibrary.gifPainter
6667import com.simform.ssjetpackcomposeprogressbuttonlibrary.utils.ten
6768
6869class MainActivity : ComponentActivity () {
@@ -72,6 +73,10 @@ class MainActivity : ComponentActivity() {
7273 SSLoadingButtonExample ()
7374 }
7475 }
76+
77+ companion object {
78+ const val LOADING_GIF_URL = " https://media.tenor.com/CrhrU7ebGucAAAAi/unless-you-include-this.gif"
79+ }
7580}
7681
7782@Composable
@@ -89,6 +94,7 @@ fun SSLoadingButtonExample() {
8994 var customRotationButtonState: SSButtonState by remember { mutableStateOf(SSButtonState .IDLE ) }
9095 var customZoomButtonState: SSButtonState by remember { mutableStateOf(SSButtonState .IDLE ) }
9196 var customEffectButtonState: SSButtonState by remember { mutableStateOf(SSButtonState .IDLE ) }
97+ var customGifButtonState: SSButtonState by remember { mutableStateOf(SSButtonState .IDLE ) }
9298
9399 Column {
94100 Spacer (modifier = Modifier .size((TWELVE * TWO ).dp))
@@ -113,6 +119,7 @@ fun SSLoadingButtonExample() {
113119 customRotationButtonState = SSButtonState .SUCCESS
114120 customZoomButtonState = SSButtonState .SUCCESS
115121 customEffectButtonState = SSButtonState .SUCCESS
122+ customGifButtonState = SSButtonState .SUCCESS
116123 },
117124 modifier = Modifier
118125 .padding(TWELVE .dp)
@@ -144,6 +151,7 @@ fun SSLoadingButtonExample() {
144151 customRotationButtonState = SSButtonState .FAILURE
145152 customEffectButtonState = SSButtonState .FAILURE
146153 customZoomButtonState = SSButtonState .FAILURE
154+ customGifButtonState = SSButtonState .FAILURE
147155 },
148156 modifier = Modifier
149157 .padding(TWELVE .dp)
@@ -182,10 +190,9 @@ fun SSLoadingButtonExample() {
182190 containerColor = Color .White ,
183191 disabledContainerColor = Color .White
184192 ),
185- buttonBorderStroke = BorderStroke (
186- COMMON_BORDER_WIDTH .dp,
187- SolidColor (colorResource(id = R .color.pink))
188- ),
193+ buttonBorderWidth = COMMON_BORDER_WIDTH .dp,
194+ animatedButtonBorderColor = colorResource(id = R .color.pink),
195+ buttonBorderColor = colorResource(id = R .color.pink),
189196 type = SSButtonType .CIRCLE ,
190197 onClick = { roundedProgressState2 = SSButtonState .LOADING },
191198 buttonState = roundedProgressState2,
@@ -202,9 +209,9 @@ fun SSLoadingButtonExample() {
202209 containerColor = Color .White ,
203210 disabledContainerColor = Color .White
204211 ),
205- buttonBorderStroke = BorderStroke (
206- COMMON_BORDER_WIDTH .dp, SolidColor ( colorResource(id = R .color.pink))
207- ),
212+ buttonBorderWidth = COMMON_BORDER_WIDTH .dp,
213+ animatedButtonBorderColor = colorResource(id = R .color.pink),
214+ buttonBorderColor = colorResource(id = R .color.pink ),
208215 type = SSButtonType .WHEEL ,
209216 onClick = { wheelState = SSButtonState .LOADING },
210217 buttonState = wheelState,
@@ -220,10 +227,9 @@ fun SSLoadingButtonExample() {
220227 containerColor = Color .White ,
221228 disabledContainerColor = Color .White
222229 ),
223- buttonBorderStroke = BorderStroke (
224- COMMON_BORDER_WIDTH .dp,
225- SolidColor (colorResource(id = R .color.pink))
226- ),
230+ buttonBorderWidth = COMMON_BORDER_WIDTH .dp,
231+ animatedButtonBorderColor = colorResource(id = R .color.pink),
232+ buttonBorderColor = colorResource(id = R .color.pink),
227233 type = SSButtonType .ZOOM_IN_OUT_CIRCLE ,
228234 onClick = { zoomInOutState = SSButtonState .LOADING },
229235 buttonState = zoomInOutState,
@@ -239,10 +245,9 @@ fun SSLoadingButtonExample() {
239245 containerColor = Color .White ,
240246 disabledContainerColor = Color .White
241247 ),
242- buttonBorderStroke = BorderStroke (
243- COMMON_BORDER_WIDTH .dp,
244- SolidColor (colorResource(id = R .color.pink))
245- ),
248+ buttonBorderWidth = COMMON_BORDER_WIDTH .dp,
249+ animatedButtonBorderColor = colorResource(id = R .color.pink),
250+ buttonBorderColor = colorResource(id = R .color.pink),
246251 type = SSButtonType .CLOCK ,
247252 onClick = { clockState = SSButtonState .LOADING },
248253 buttonState = clockState,
@@ -258,10 +263,9 @@ fun SSLoadingButtonExample() {
258263 containerColor = Color .White ,
259264 disabledContainerColor = Color .White
260265 ),
261- buttonBorderStroke = BorderStroke (
262- COMMON_BORDER_WIDTH .dp,
263- SolidColor (colorResource(id = R .color.pink))
264- ),
266+ buttonBorderWidth = COMMON_BORDER_WIDTH .dp,
267+ animatedButtonBorderColor = colorResource(id = R .color.pink),
268+ buttonBorderColor = colorResource(id = R .color.pink),
265269 type = SSButtonType .SPIRAL ,
266270 onClick = { spiralState = SSButtonState .LOADING },
267271 buttonState = spiralState,
@@ -390,10 +394,9 @@ fun SSLoadingButtonExample() {
390394 fontWeight = FontWeight .Bold ,
391395 fontSize = FONT_SIZE .sp,
392396 leftImagePainter = painterResource(id = drawable.simform_logo),
393- buttonBorderStroke = BorderStroke (
394- COMMON_BORDER_WIDTH .dp,
395- colorResource(id = R .color.pink)
396- )
397+ buttonBorderWidth = COMMON_BORDER_WIDTH .dp,
398+ animatedButtonBorderColor = colorResource(id = R .color.pink),
399+ buttonBorderColor = colorResource(id = R .color.pink)
397400 )
398401 SSJetPackComposeProgressButton (
399402 type = SSButtonType .CUSTOM ,
@@ -420,10 +423,9 @@ fun SSLoadingButtonExample() {
420423 fontWeight = FontWeight .Bold ,
421424 fontSize = FONT_SIZE .sp,
422425 leftImagePainter = painterResource(id = drawable.simform_logo),
423- buttonBorderStroke = BorderStroke (
424- COMMON_BORDER_WIDTH .dp,
425- colorResource(id = R .color.pink)
426- )
426+ buttonBorderWidth = COMMON_BORDER_WIDTH .dp,
427+ animatedButtonBorderColor = colorResource(id = R .color.pink),
428+ buttonBorderColor = colorResource(id = R .color.pink)
427429 )
428430 SSJetPackComposeProgressButton (
429431 type = SSButtonType .CUSTOM ,
@@ -452,13 +454,38 @@ fun SSLoadingButtonExample() {
452454 successIconColor = colorResource(id = R .color.dark_green),
453455 failureIconColor = colorResource(id = R .color.colorPrimaryDark),
454456 leftImagePainter = painterResource(id = drawable.simform_logo),
455- buttonBorderStroke = BorderStroke (
456- COMMON_BORDER_WIDTH .dp,
457- colorResource(id = R .color.pink)
457+ buttonBorderWidth = COMMON_BORDER_WIDTH .dp,
458+ animatedButtonBorderColor = colorResource(id = R .color.pink),
459+ buttonBorderColor = colorResource(id = R .color.pink)
460+ )
461+ SSJetPackComposeProgressButton (
462+ type = SSButtonType .CUSTOM ,
463+ width = COMMON_WIDTH .dp,
464+ height = COMMON_HEIGHT .dp,
465+ customLoadingEffect = SSCustomLoadingEffect (gif = true ),
466+ colors = ButtonDefaults .buttonColors(
467+ containerColor = Color .White ,
468+ disabledContainerColor = Color .White
469+ ),
470+ padding = PaddingValues (ten.dp),
471+ textModifier = Modifier .padding(ten.dp),
472+ fontWeight = FontWeight .Bold ,
473+ fontSize = FONT_SIZE .sp,
474+ onClick = { customGifButtonState = SSButtonState .LOADING },
475+ assetColor = colorResource(id = R .color.pink),
476+ buttonState = customGifButtonState,
477+ text = stringResource(id = R .string.gif_loader),
478+ buttonBorderWidth = COMMON_BORDER_WIDTH .dp,
479+ animatedButtonBorderColor = Color .Transparent ,
480+ buttonBorderColor = colorResource(id = R .color.pink),
481+ customLoadingIconPainter = gifPainter(
482+ data = MainActivity .LOADING_GIF_URL ,
483+ drawable = ContextCompat .getDrawable(
484+ LocalContext .current,
485+ drawable.simform_logo
486+ )
458487 )
459488 )
460- Spacer (modifier = Modifier .size(COMMON_WIDTH .dp))
461- Spacer (modifier = Modifier .size(COMMON_WIDTH .dp))
462489 }
463490 }
464491 }
0 commit comments