どうもこんばんわ。
この青空に約束を― 攻略しました。
オープニング曲聞いて気になってたのでやりました。
海己ちゃんルートを最後にとっておいてよかった。結ばれるまでのお話が好き。
静ちゃん初見時はこの子も攻略するの?とか思ってましたがエピローグの成長した姿みて反省しましたすいません。
これからやる方はWin8対応の新装版を買えばいいです。Win10で動作確認済です。DL版(Fanza)なら少し安く買える?
あと戯画はイベントモードがあるのがいいね。セーブ枠をセーブしておける←???
本題
material-components-android
が1.5.0-alpha03
からM3 (Material 3)
に対応した模様。
ついにMaterial You(動的テーマ)対応!!!
Material You #とは
iモードケータイの着せ替えツールみたいなやつ。今の所、色だけ?が自由に決められる。
Monet #とは
壁紙からMaterial Youで使う取り出すシステム?のはず。Android 12 Beta 4
からライブ壁紙でも動くそうな。
悲報?
残念ながらAndroid 11?10?にあったステータスバーのアイコン変更機能、アプリアイコンの背景の変形機能は今の所削除されたままです。
復活してほしい。
つくる
公式ドキュメント
https://github.com/material-components/material-components-android/blob/master/docs/theming/Color.md#using-dynamic-colors
環境
なまえ | あたい |
---|
Android | 12 Beta 4 |
Pixel | 3 XL |
compileSdkVersion を 31 にする
app/build.gradle
を開いて、compileSdk
を31に変更します。
次に、ライブラリを追加します。
ここから先は以下の選択ができます。
- すべての画面で動的テーマを利用する
- 指定したActivityのみに動的テーマを当てる
- 指定したFragmentのみに動的テーマを当てる
- 動的に作ったViewに動的テーマを当てる
すべての画面で動的テーマを利用する場合
まず、Application
を継承したクラスを作ります。
AndroidManifest.xml
を開き、android:theme
を@style/Theme.Material3.DayNight
(もしくは@style/Theme.Material3.DayNight
を継承したテーマ)に変更して、
android:name=".MainApplication"
を追加します
そしたら、activity_main.xml
にいくつかViewを置いて次世代のマテリアルデザインを体験しましょう。
指定したActivityのみで動的テーマを利用する
Material YouをActivityで使う。
この場合は、Application
クラスを継承したクラスを作成する手順は不要で、
AndroidManifest.xml
で、動的テーマを利用したいActivityのandroid:theme
を@style/Theme.Material3.DayNight
(もしくは@style/Theme.Material3.DayNight
を継承したテーマ)に変更します。
つぎに、動的テーマを利用したいActivityのsetContentView()
の前に、一行書き足します。
あとは、activity_main.xml
にViewを置きます。
Fragmentに動的テーマを適用する
Material YouをFragmentで使う。
Fragmentとかで部分的に使う際に便利なんだろうけど、Google曰く簡単ではないらしい。
多分こんな感じだと思う。
framgnet_main.xml
はこんな感じね。
あとは、Fragmentを置くActivityのandroid:theme
を@style/Theme.Material3.DayNight
にします。なんならsetContentView()
の前にsetTheme()
してもいいです。
AndroidManifest.xml
MainActivity.kt
activity_main.xml
動的に生成したViewに動的テーマを適用する
Material YouをViewで使う。
この場合でも、Activity
にandroid:theme
で@style/Theme.Material3.DayNight
を指定しておく必要があります。
AndroidManifest.xml
View
の第一引数に渡すContext
にDynamicColors.wrapContextIfAvailable(context)
の戻り値を指定します。
おわりに
サンプルコード置いておきますね。
https://github.com/takusan23/MaterialYouSample