Material Design
Compose旨在支持Meterial Design原则。它的许多界面都原生支持Material Design。Material Design是围绕三大要素构建的:颜色、排版、形状。
1.启用深色主题
由于支持Material Design,Jetpack Compose默认能够处理深色主题。使用Material颜色、文本和背景时,系统会自动适应深色背景。
首先把内容写进JetpackComposeTestTheme中
1 | class MainActivity : ComponentActivity() { |
查看Theme.kt,自定义深色和浅色主题的background,把深色主题的background设为灰色,浅色主题的background设为白色。
1 | private val DarkColorPalette = darkColors( |
再返回到MainActivity.kt,修改MessageCard的修饰符
1 |
|
2.列表与状态
Compose可以轻松创建列表并添加有趣的动画效果
①创建消息列表
②再展开消息时显示动画效果
案例:制作一个消息列表
先准备一个消息列表,作为列表的内容。
1 | object SampleData { |
回到MainActivity.kt再写一个Composable,作为列表
1 |
|
再修改onCreate( )
1 | class MainActivity : ComponentActivity() { |
显示效果:
对界面进行美化工作,为图片和文字设置间距,author修改颜色,body设置字体等
1 |
|
显示效果:
如果需要点击可以显示消息全部内容
需要使用remember保存一个状态值
1 | var isExpanded by remember{ mutableStateOf(false)} |
如果isExpanded为true,则展示全部内容,为false展示一行内容
1 | Text(text = msg.body, |
点击消息改变isExpanded的状态
1 | Text(text = msg.body, |
初始状态:
点击后:
3.动画
设置一个surfaceColor变量用于控制颜色的切换
1 | val surfaceColor: androidx.compose.ui.graphics.Color by animateColorAsState( |
再使用Surface包裹内容所在的Text,令Surface的color = surfaceColor
1 | Surface(color = surfaceColor) { |
点击效果:
继续美化,修改消息框为圆角,设置慢慢展开的动画效果,消息框底部设置阴影
1 | Surface(color = surfaceColor, |
完整代码已上传我的GitHub仓库:leiteorz/First-try-Compose: 第一次尝试使用Compose,简单的做了一个列表和一点点动画 (github.com)