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 isVisible = remember { mutableStateOf(false) }
val isEnable = remember { mutableStateOf(true) }
val result = remember { mutableStateOf("") }
val handler = Handler(Looper.getMainLooper())
Column(
modifier = Modifier
.padding(16.dp)
.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
Button(
onClick = {
isVisible.value = true
isEnable.value = false
result.value = "File downloading...."
Thread {
Thread.sleep(10 * 1000)
handler.post {
isVisible.value = false
result.value = "Download finished."
isEnable.value = true
}
}.start()
},
enabled = isEnable.value
) {
Text(text = "Download File")
}
Spacer(modifier = Modifier.requiredHeight(16.dp))
if (isVisible.value){
LinearProgressIndicator(
modifier = Modifier.fillMaxWidth(0.8f),
)
}
Spacer(modifier = Modifier.requiredHeight(16.dp))
Text(
text = result.value,
fontSize = 20.sp
)
}
}
@Preview
@Composable
fun ComposablePreview(){
//MainContent()
}
}
- jetpack compose - How to use Slider
- jetpack compose - How to use Switch
- jetpack compose - How to use Snackbar
- jetpack compose - Indeterminate CircularProgressIndicator
- jetpack compose - LinearProgressIndicator example
- jetpack compose - CircularProgressIndicator example
- jetpack compose - How to use TopAppBar
- jetpack compose - How to use BottomAppBar
- jetpack compose - BottomAppBar with FAB example
- jetpack compose - LazyColumn selectable
- jetpack compose - Show toast message
- jetpack compose - Get context
- jetpack compose - Box background color
- jetpack compose - Box rounded corners
- jetpack compose - Box center