[感想]Compose Recetteの1章〜5章を読んだ
の続編
Compose Recette アプリ開発の新スタンダードを学ぼう
を書いました
以下、感想
・remember
状態を記憶するのはremember
再描画のタイミングで状態が消えるのでそのために利用する
remember { mutableStateOf(true)}
・AlertDialog
previewが動かない
Composableの内部実装でAndroid Viewシステムを利用しているため、Androidプラットフォーム固有の処理であるためコンポーザブル用のpreviewでは動かない
エミューレーター上で実行しないといけない
・ComposableからComposableを呼ぶ
ComposableからComposableを呼べる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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を使うとサンプルを流せる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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以上に直感的じゃない
使いにくいなぁ。慣れが必要かと思う
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | @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でアニメーションを作ってみた