[感想]Compose Recetteの1章〜5章を読んだ
の続編
Compose Recette アプリ開発の新スタンダードを学ぼう
を書いました
以下、感想
・remember
状態を記憶するのはremember
再描画のタイミングで状態が消えるのでそのために利用する
remember { mutableStateOf(true)}
・AlertDialog
previewが動かない
Composableの内部実装でAndroid Viewシステムを利用しているため、Androidプラットフォーム固有の処理であるためコンポーザブル用のpreviewでは動かない
エミューレーター上で実行しないといけない
・ComposableからComposableを呼ぶ
ComposableからComposableを呼べる
data class User(
val firstName: String,
val familyName: String
)
@Preview("Preview Composable for UnitItem")
@Composable
fun ParameterSample() {
val user = User(
firstName = "光秀",
familyName = "明智"
)
UserItem(user = user)
}
@Composable
fun UserItem(user: User){
Row() {
Text(text = user.familyName)
Spacer(modifier = Modifier.size(8.dp))
Text(text = user.firstName)
}
}
・PreviewParameterProvider
PreviewParameterProviderを使うとサンプルを流せる
class FakeUserProvide : PreviewParameterProvider<User> {
override val values: Sequence<User>
get() = listOf(
User(
firstName = "信長",
familyName = "織田"
),
User(
firstName = "蘭丸",
familyName = "森"
)
).asSequence()
override val count: Int
get() = values.count()
}
@Preview
@Composable
fun UserItem2(
@PreviewParameter(
provider = FakeUserProvide::class,
limit = 2
) user: User
) {
Row() {
Text(text = user.familyName)
Spacer(modifier = Modifier.size(8.dp))
Text(text = user.firstName)
}
}
・ConstraintLayout
ConstraintLayoutはXML以上に直感的じゃない
使いにくいなぁ。慣れが必要かと思う
@Preview
@Composable
fun MyLayout(modifier: Modifier = Modifier) {
ConstraintLayout(modifier) {
val (textRef, text2Ref) = createRefs()
Text(
text = "Hello",
modifier = Modifier.constrainAs(textRef) {
// centerTo(parent)
// start.linkTo(parent.start)
// top.linkTo(parent.top)
centerHorizontallyTo(parent)
}
)
Text(
text = "Hello2",
modifier = Modifier.constrainAs(text2Ref) {
// start.linkTo(textRef.end, 24.dp)
// top.linkTo(textRef.bottom)
linkTo(
top = textRef.bottom,
bottom = parent.bottom,
bias = 0.8f
)
}
)
}
}
これで本全部読みました
Composableのcodelabもやったし
後は実践していくしかないかなぁって感想
関連記事:
- Jetpack ComposeのCodeLabsをやってみた
- androidでDataBinding + ViewModel + LiveDataを使ってみた
- Android Studio 4.0のMotion Editorでアニメーションを作ってみた