Material Youのサンプルアプリを触ってみる


はじめに

こちらの記事はGoogle I/O 2021で発表された『Material You』のAndroid向けサンプルアプリについての記事になります!
そもそもMaterial Youとは? という方向けの記事も書いてますので、よろしければこちらをご覧ください

サンプルアプリの取得

動作環境

・ M1 MacBook Pro
・ Big Sur 11.4
・ Android Studio Arctic Fox
・ Pixcel 3a / Andorid12(ベータ版) 

※確認端末はエミュレータでも構いませんが、Android12が入っていることが前提になりますので、ご注意ください

GitHubからclone

material-components-androidの中にサンプルアプリ『Catalog』がありますので、そちらを取得しに行きます。
以下のコマンドをターミナルで実行してください。

git clone https://github.com/material-components/material-components-android

Android Studioでサンプルアプリをビルド

clonesしたプロジェクトをAndroidStudioで立ち上げ、実行モジュールに『Catalog』を選択して実行します。
しばらく待てば、端末あるいはエミュレータにアプリがインストールされます。

動作確認

こちらのアプリはもともとMaterial Componentsはどのようなものがあるのかを確認するためのアプリです。
Dynamic Colorsというのが、端末の背景色に合わせて自動的にアプリのテーマを変えてくれる機能です。Material Youの目玉機能になります!

テーマを変えた時の動作

Androidでは、アプリをライトテーマからダークテーマに切り替えた時、Activityが再生成されていましたが、テーマ切り替えの場合はどうなるのでしょうか?
ログを仕込んで検証してみます。
MainActivityの各ライフサイクルコールバックにログを追加して実行したところ、以下のようなログが取得できました。

// アプリを起動した時
2021-09-30 19:00:07.612 10325-10325/io.material.catalog I/LIFECYCLE: onCreate
2021-09-30 19:00:07.756 10325-10325/io.material.catalog I/LIFECYCLE: onStart
2021-09-30 19:00:07.758 10325-10325/io.material.catalog I/LIFECYCLE: onResume
// Dynamic ColorsをONにした時
2021-09-30 19:00:19.458 10325-10325/io.material.catalog I/LIFECYCLE: onPause
2021-09-30 19:00:19.480 10325-10325/io.material.catalog I/LIFECYCLE: onStop
2021-09-30 19:00:19.486 10325-10325/io.material.catalog I/LIFECYCLE: onSaveInstanceState
2021-09-30 19:00:19.506 10325-10325/io.material.catalog I/LIFECYCLE: onDestory
2021-09-30 19:00:19.538 10325-10325/io.material.catalog I/LIFECYCLE: onCreate
2021-09-30 19:00:19.711 10325-10325/io.material.catalog I/LIFECYCLE: onStart
2021-09-30 19:00:19.713 10325-10325/io.material.catalog I/LIFECYCLE: onResume

テーマ切り替え時にはやはりActivityが再生成されるみたいです。
利用する際には、ViewModel等を使ってデータの保持をしておく必要がありそうですね。
onSaveInstanceStateも通過するので、テーマ変更が押されたかやテーマを変更したかなどの行動ログを撮りたい場合には使えそうです。
ちなみにAndroid12以降の端末でなければDynamic Colorsは利用できず、デフォルトテーマのままでした。

終わりに

今回はサンプルアプリを触ってみました。
いままでアプリのテーマは各アプリごとの固有なものでしたが、Dynamic Colorsを使うことで端末に合わせたテーマに変更されます。
企業やサービスとしてテーマカラーに気を付けている場合には使わない方がいいかもしれないです(ゲームなど)。
逆にメモ、TODO、カレンダーなどについてはどんどん使っていってもいいのかななんて思います。
今後のGoogleサービスにはMaterial Youが使用されていくそうですので、今後の動きに注目ですね。