Jetpack Composeに入門するスレ
Jetpack ComposeがBetaになったので楽しくやっていくスレ。
Announcing Jetpack Compose Beta!を読んで、Android Studio Arctic Foxをダウンロード!
Codelabをやっていく記録を残していくます。
Arctic Fox、起動直後の画面UI変わってる〜いいね〜
Empty Compose Activtyで開始したらMinimum SDKが23じゃないですか… 🚀
Gradle sync failed: Invalid Gradle JDK configuration found.
が出ちゃった
久しぶりに。いろいろと問題が出てうまくいかなくなっちゃったので、File > Manage IDE Setting > Restore Default Settings...
をして解決!
気になってたテーマ周りはMaterialTheme
をベースに構築していく感じなのね、Flutterちらっと触ったときと似ているな
メモ
Android アプリで MDC ライブラリを使用している場合、MDC Compose Theme Adapter ライブラリを使用すると、既存の View ベースのテーマにおける色、タイポグラフィ、シェイプのテーマ設定を、コンポーザブルで簡単に再利用できます。
相互運用の場合はライブラリ使うといい感じにやってくれるのもある様子。
なので基本的にComposeでのテーマ管理もKotlinになるわけなのね。
@Preview
を使ったプレビューの表示は複数定義できるのか!へえ〜
基本的にはプレビュー用でどこかから呼ぶものではない感じかな、コードラボ終わったら使い方をいろんなプロジェクトでみてみよう。
プレビュー便利ね。
Deploy Preview押したらプレビューのコンポーネントだけ(?)画面に表示されたんだけど、コンポーネント単位での実際の画面で確認したい用途かな?意外と便利かも?
再利用を考えながらコンポーネントを作るの大事だけどこの感覚は普段の脳の使い方と違いそう
7. Animating your list
の選択した状態、リストをスクロールすると状態がリセットされるぽいな。
LazyColumn
だと内部状態は初期化される感じぽい?
なので、rememberSaveable
にすると値は保持される様子。
Layouts in Jetpack Compose
コードラボをゆるっとやっていくよ
MaterialTheme.colors.onSurface.copy(alpha = 0.2f)
みたいにして、マテリアルカラーの透過度とかを変更できるの、めちゃ便利だけど用法用量を正しく使う必要ありそうな気がしてる。
頻出のものとか統一したいのは、別途カラーを定義するなりスタイルにするなりしたほうがよさそう。
Most composables accept an optional modifier parameter to make them more flexible, enabling the caller to modify them.
これ大事そう。
@Composable
fun PhotographerCard(modifier: Modifier = Modifier) {
Row(modifier) { ... }
}
Slotの概念おもしろい。Codelabとかひととおりしたら試してみたい。
Scaffold
のtopBar
もSlot扱いなのか!勝手にTopAppBar
だけ入れられると思ってた…
その他の要素も、@Composable () -> Unit = {}
だから好きなコンポーザブルを入れられる。
Colmn
でもverticalScroll
を追加するとスクロールできるのね
コードサンプルにCoil
が選ばれるの時代を感じる
忘れていると時間を溶かす妖怪についても記載があってやさしい。
<uses-permission android:name="android.permission.INTERNET" />
val placeable = measurable.measure(constraints)
measure
関数の返り値はPlaceable
で、widthとかheightとかパラメータで持ってるぽい。
placeRelative
を呼び出して配置するとのこと。
Layoutでじぶんでこねこねを繰り返さないと慣れなそう。
基本の基本は
val placeable = measurable.measure(constraints)
で、Placeableを取得する。
StaggeredGrid
の場合、この取得したPlaceableの情報から自身を構築するために必要なサイズを計算してる感じなのかな。
慣れればViewGroupを拡張してのやつより簡単そう?
remember
関数はkeyを渡すことができるのか!にゃるほど。