どうもこんばんわ。
アインシュタインより愛を込めて 攻略しました。
なんか色々思うことはあるけど最後のタイトル回収とED曲で許した感ある。
あとこの子かわいい。
サブヒロインの扱い雑すぎて悲しくなっちゃった
↓
↓
↓
アインシュタインより愛を込めて APOLLOCRISIS 攻略しました。
今月のエロゲの日から無料配信されるみたいなので前作やった人は絶対やろう。やってロミちゃんを助けてあげて、、、
野上さんいい人
本題
Jetpack Compose
にもMaterial3
ライブラリがリリースされました。
ダイナミックカラーが使えるようになります。ちなみにBottomNavigationBar
の高さは56.dp
?から80.dp
と大きくなりました。
環境
なまえ | あたい |
---|
Android | 12 (ダイナミックカラー使うなら必須) |
Android Stuido | Arctic Fox 2020.3.1 Patch 3 |
targetSdk | 31 |
公式ドキュメント
導入
https://developer.android.com/jetpack/compose/themes/material#material3
Material3
https://m3.material.io/
1. 導入
app/build.gradle
に書き足すだけです。(新世界の)α版なので安定しないかもらしいです。
dependencies {
// Jetpack Compose
implementation("androidx.compose.ui:ui:1.1.0-beta01")
implementation("androidx.compose.material:material:1.1.0-beta01")
implementation("androidx.compose.ui:ui-tooling-preview:1.1.0-beta01")
androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.1.0-beta01")
debugImplementation("androidx.compose.ui:ui-tooling:1.1.0-beta01")
// ↓これ
implementation("androidx.compose.material3:material3:1.0.0-alpha01")
}
2. Theme.kt (MaterialTheme)を書き換える
次にTheme.kt
かMaterialTheme
を書き換えます。
プロジェクト作成時からComposeプロジェクト
を選んだ場合はTheme.kt
って名前でMaterialTheme
をカスタマイズしている関数があるはずです。
以下は一例です。
なんか色の扱いが変わってるので以下のサイトで色を吐き出してもらってもいいかも?
https://material-foundation.github.io/material-theme-builder/
MaterialTheme
はandroidx.compose.material3.MaterialTheme
をインポートするようにしてください。
注意点?
(androidx.compose.material.)MaterialTheme.colors
は使えなくなります。
(androidx.compose.material3.)MaterialTheme.colorScheme
を使ってください。ない場合はimport
間違えてます。
backgroundColor
はcontainerColor
に変わった模様?
3. ひたすら import androidx.compose.material
からimport androidx.compose.material3
に書き換えてく
対応しているコンポーネントは以下です。
https://developer.android.com/jetpack/androidx/releases/compose-material3
Text
、Icon
なんかもMaterial3
で用意されている方を使う必要があります。
選ぶ際はmaterial3
って書いてある方を。
以下例です。
コピペする際は、ic_android_black_24dp
をAndroid Studio
のVector Asset
から追加してください。
よーこそMaterial3の世界へ...
つまずいた点
ScaffoldにSnackbarHostが無い
Scaffold
を使うといい感じにSnackbar
を表示できるんですけど、Material3
のScaffold
にはSnackbar
を表示する機能が現状ないです。 Snackbar
をComposeで表示させるには、SnackbarHost
を追加すればいいので、Scaffold
にSnackbarHost
を追加したコンポーネントを作ります。
使う際はこんなふうに
@ExperimentalMaterial3Api vs @OptIn(ExperimentalMaterial3Api::class)
どっち使うかって話
多分こんな感じだと思う。
Material3版Surface の tonalElevation
Surface
の引数の説明見るとこうです。
カラーがColorScheme.surfaceの場合、標高が高いほどライトテーマでは色が濃くなり、ダークテーマでは色が薄くなります。
DeepL翻訳
というわけでSurface
の背景色がColorScheme.surface
の場合はtonalElevation
を考慮する必要があるわけです。え?そんなのどうでもいいだって?
NavigationBarの色にナビゲーションバーの色を設定したい
NavigationBar
の色はColorScheme.surface
な訳ですが、tonalElevation
が設定されているのでそのままでは同じ色には出来ません。
そのためにColorScheme.surfaceColorAtElevation
の実装をお借りします。
surfaceColorAtElevation
自体を使えればいいんですけどinternal
で保護されていて無理でした。
あとは書き換えて
これでナビゲーションバーの色を設定できました。
終わりに
Android 12L ってのが発表されたみたいですね。え?Android 3.0?知らないですね?(国産全盛期?)