Jetpack Compose 勉強記録その3です。
今回の内容
チュートリアルの続きをやっていきます。
今回はレッスン 4:リストとアニメーションをやっていきます。
リストは必ず使うと言っても過言では無いので、気になります。
メッセージのリストを作成する
@Composable
fun MessageCard(messages: List<Message>) {
LazyColumn {
items(messages) { message ->
CardItem(message)
}
}
}
LazyColumn
LazyRow
こちらを使用する事でリストを表示する事が出来るみたいです。
LazyColumn
は縦のリストです。
LazyRow
は横のリストです。
items
に渡したデータを元にリストを作成していきます
items
に渡したitemをラムダで受け取りレイアウトを作成するComposableの関数CardItem
に渡して作成しています。
メッセージに展開アニメーションを実装する
var isExpanded by remember { mutableStateOf(false) }
Column(modifier = Modifier.clickable { isExpanded = !isExpanded })
remember
を使用しローカルの UI 状態を保存します。
mutableStateOf
に渡されているデータに変更があると自動的に再描画されるみたいです。
Text(text = message.body,
color = MaterialTheme.colors.secondaryVa
modifier = Modifier.padding(all = 4.dp),
maxLines = if (isExpanded) Int.MAX_VALUE
style = MaterialTheme.typography.body2)
maxLines = if (isExpanded) Int.MAX_VALUE
を設定しておくとタップされたセルは全文表示になります。
Surface(modifier = Modifier.animateContentSize().padding(1.dp))
先ほど設定した全文表示になる時にコンテナのサイズを滑らかにアニメーション化する事が出来るみたいです。
以上でチュートリアルは終わりになりました。
これだけでは作れるものが限られてしまう為、まだまだJetpack Composeについて調べて実装し、勉強記録を残していこうと思います。