Slide 1

Slide 1 text

Glance 3分クッキング ゆつぼ(@morayl1)

Slide 2

Slide 2 text

ゆつぼ うつぼです。かわいい! 2 morayl morayl1 株式会社リクルート スタディサプリのAndroidエンジニア

Slide 3

Slide 3 text

Glanceと私 Glance = Compose を使用してアプリ ウィジェットを作成できるライブラリ。 2年半前(alpha03)に触って記事を書いた以来離れていた。 Glanceを使ってJetpackComposeでAndroidのウィジェットを開発しよう - Qiita 最近また触ったので、調べたことを共有する。 ※Glanceにフォーカスし、ウィジェットの基本は話しません 3

Slide 4

Slide 4 text

TodoListウィジェットを作ってみる 要件 ● RoomのTodoListを表示 ● スクロールできる ● Todoをタップすると消せる 用意するものは3つ 1. appwidget-provider(meta-data) 2. GlanceAppWidgetReceiver 3. GlanceAppWidget 4

Slide 5

Slide 5 text

依存関係 5

Slide 6

Slide 6 text

1. appwidget-provider(meta-data) AndroidManifestのGlanceAppWidgetReceiverのmeta-dataで参照する initialLoadingはglanceにデフォルトが 入っている Composeが表示されるまでに時間を 待つなら意味がある Flowで購読すればあまり意味はなさ そう 6

Slide 7

Slide 7 text

1. appwidget-provider(meta-data) AndroidManifestのGlanceAppWidgetReceiverのmeta-dataで参照する initialLoadingはglanceにデフォルトが 入っている Composeが表示されるまでに時間を 待つなら意味がある Flowで購読すればあまり意味はなさ そう ● xmlだが、Glanceライブラリにデフォルトが用意されている ● 端末再起動時や、Glance準備中に表示されるレイアウト ● もちろん自分で用意してもOK 7

Slide 8

Slide 8 text

2. GlanceAppWidgetReceiver これだけ! 8

Slide 9

Slide 9 text

3. GlanceAppWidget 最小構成 9

Slide 10

Slide 10 text

3. GlanceAppWidget 最小構成 見づらい 10

Slide 11

Slide 11 text

見た目を整える 11

Slide 12

Slide 12 text

見た目を整える material2 or 3のカラーを使うことが出来る 12

Slide 13

Slide 13 text

データを読み取る 13

Slide 14

Slide 14 text

データを読み取る ● provideGlanceで時間のかかる処理を実行できる ○ CoroutineWorkerとしてバックグラウンドで実行される ○ 10分以内のタスクを実行できる(provideContentを呼ぶと45秒) ○ ApiやDatastoreを使っても良い ○ ここで時間がかかるとinitial_layoutが表示される ● provideContent内でcollectAsStateでデータソースを監視する ○ update/updateAllは、provideGlanceが実行中の場合それを再起動しない 14

Slide 15

Slide 15 text

リストを表示する 15

Slide 16

Slide 16 text

リストを表示する ● LazyColumnで簡単に作れる ● Glance ≒ Compose。割と使えるが、全て同じではない。 16

Slide 17

Slide 17 text

依存性注入 17

Slide 18

Slide 18 text

依存性注入 HiltのEntryPoinAccessorsを 使って簡単に注入できる 18

Slide 19

Slide 19 text

クリック処理 19

Slide 20

Slide 20 text

クリック処理 Activity起動はこれだけ repositoryへの入力もGlance内で解決できる 20

Slide 21

Slide 21 text

まとめ ● レイアウトが≒Composeで書ける ● 簡単にThemeを適用できる ● provideGlance内でデータロード出来る ● HiltのEntryPointAccessorsで依存性を注入できる ● クリック処理も簡単 Androidアドベントカレンダーで、詳細な記事を書きます! 21

Slide 22

Slide 22 text

参考(全てAndroid Developers) ● Glance でアプリ ウィジェットを作成する ○ まずはこれ ● シンプルなウィジェットを作成する ○ ウィジェットの基本(meta-dataとかも解説) ● GlanceAppWidget provideGlance ○ リファレンスに詳細な解説とサンプルコードが載っている ● Create a widget with Glance | Android Developers ○ GlanceのCodelab ● Hilt でサポートされていないクラスに依存関係を注入する ○ AppWidgetにRepositoryをInjectするときに使った方法 22