2021 鐵人賽 一天一腳步,30天學會 Android Compose UI!
今年的疫情蠻嚴重的,希望大家都過得安好,希望疫情快點過去,能回到一些線下技術聚會的時光~
今天目標:了解 Compose UI 上 的 animation change color 跟 gradient 可以怎麼實作。
昨天最後的程式碼執行起來會是這樣
今天的程式碼如下:
@Composable
fun ColorChangeDemo() {
val isGreen =r emember{mutableStateOf(value = true)}
val animatedColor = animateColorAsState(
if (isGreen.value) Color.Green else Color.Red
)
// 宣告 animate color 的程式碼Column( modifier = Modifier.padding(16.dp),
verticalArrangement = Arrangement.spacedBy(16.dp)){
Button( onClick =
{isGreen.value = !isGreen.value},
colors = ButtonDefaults.buttonColors(
backgroundColor = Color.Transparent)
){ Text(text = "Animate Color Change") }
Box( modifier = Modifier
.fillMaxWidth()
.height(200.dp)
.background(animatedColor.value)) val color = if (isGreen.value) Color.Green else Color.Red Box( modifier = Modifier
.fillMaxWidth()
.height(200.dp)
.background(color)
)
}
}
顯示圖如下:
設定好animate後,Compose UI就會幫我們實作動畫變色的部分,
提到顏色變化,我順便研究了如 UI 想要 漸層的話,應該怎麼做?
@Composable
fun ColorChange2Demo() {
val horizontalGradientBrush = Brush.horizontalGradient(
colors =listOf(
Color.Blue,
Color.Red,
Color.White
)
)
val horizontalGradientBrush2 = Brush.horizontalGradient(
colors =listOf(
Color.White,
Color.Red,
Color.Blue
)
) val isGreen =remember{mutableStateOf(value = true)}
val isHorizontal1 =remember{mutableStateOf(value = true)}val animatedColor =animateColorAsState(
if (isGreen.value) Color.Green else Color.Red
)Column(
modifier = Modifier.padding(16.dp),
verticalArrangement = Arrangement.spacedBy(16.dp)
){
Button(
onClick ={
isGreen.value = !isGreen.value
isHorizontal1.value = !isHorizontal1.value
},
colors = ButtonDefaults.buttonColors(
backgroundColor = Color.Transparent
)
){
Text(
text = "Animate Color Change",
modifier = Modifier.background(
brush = if(isHorizontal1.value) horizontalGradientBrush
else horizontalGradientBrush2)
)
}Box(
modifier = Modifier
.fillMaxWidth()
.height(200.dp)
.background(animatedColor.value)
) val color = if (isGreen.value) Color.Green else Color.Red
Box(
modifier = Modifier
.fillMaxWidth()
.height(200.dp)
.background(color)
)
}
}
這樣就可以囉!
顯示如下:
顯示顏色變化的部分就這樣~其實還有蠻多設定,不過就留給你們研究囉!
明天見!
參考資料:
- https://android--code.blogspot.com/2021/03/jetpack-compose-animate-color-change.html
- https://github.com/vinaygaba/Learn-Jetpack-Compose-By-Example/blob/master/app/src/main/java/com/example/jetpackcompose/animation/Animation2Activity.kt
- https://www.youtube.com/watch?v=vPOS6L2SEX0&ab_channel=Stevdza-San
本文同步發表在 iT邦幫忙 上 文章連結