MainActivity.kt
package com.cfsuman.jetpackcompose
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.*
import androidx.compose.material.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MainContent()
}
}
@Composable
fun MainContent(){
val isEnable = remember { mutableStateOf(true) }
val result = remember { mutableStateOf("") }
val progress = remember { mutableStateOf(0.0f)}
val handler = Handler(Looper.getMainLooper())
Column(
modifier = Modifier
.padding(16.dp)
.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(16.dp)
) {
Button(
onClick = {
isEnable.value = false
result.value = "Task running...."
Thread {
while (progress.value < 1){
Thread.sleep(1 * 300)
progress.value = progress.value + 0.01F
handler.post {
val finished = (progress.value * 100).toInt()
result.value = "Done $finished of 100 tasks"
}
}
}.start()
},
enabled = isEnable.value
) {
Text(text = "Run Tasks")
}
LinearProgressIndicator(
progress = progress.value
)
Text(
text = result.value,
fontSize = 20.sp
)
}
}
@Preview
@Composable
fun ComposablePreview(){
//MainContent()
}
}
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNACAL02GK7ElZQ7D8FU3woCdGU2pZBhXJfnS9Hoo6PcNAdcCwePZoVApc4eNGaN_3MrBpPUNbiz8bCIbuEHt98l1a_aMWil1g5BYLev_S9DD24PaoZFBeiB3vE25QZdktbX-jNvxuesXc/s0/AndroidJetpackComposeLinearProgressIndicator.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDS0o25uYA-bdNS8tOT4qB9goyG8jorZGr9bLsCzudfaNRJDyebGw6hZcQAa_ldZz4Bg_Kpd_Jj0G7eE7Hh6yhrdcyH5vxrdJ9p3Gn9hrJzFSVRKEV3JxdkL6ayipUvtThk_8DtZViw-6h/s0/AndroidJetpackComposeLinearProgressIndicator2.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ8knzzMX07wbkmI4wdCjDDBN8K8f3RltU1N-gibEL13EnidQ-BHYEjnXA5_CljI5_OvgIgqdW0naRo0YqdyhmT9I0JihmzROcssRpBZf8DLWHRYAWwlo2fAGhwvt6AS7M3PdmkeDCqmQn/s0/AndroidJetpackComposeLinearProgressIndicator3.png)
- jetpack compose - How to use Slider
- jetpack compose - How to use Switch
- jetpack compose - How to use Snackbar
- jetpack compose - Indeterminate LinearProgressIndicator
- jetpack compose - Indeterminate CircularProgressIndicator
- jetpack compose - CircularProgressIndicator example
- jetpack compose - How to use TopAppBar
- jetpack compose - How to use BottomAppBar
- jetpack compose - BottomAppBar with FAB example
- jetpack compose - Image scale
- jetpack compose - Image background
- jetpack compose - Image from URL
- jetpack compose - LazyColumn scroll to position
- jetpack compose - LazyColumn alternate item color
- jetpack compose - LazyColumn sticky header