🦋

[Google I/O 2021 メモ]Refreshing widgets

2021/05/23に公開

動画

https://youtu.be/cHv84zXZf6E

Android12に加えた主要な改善について紹介

Why Widgets?

  • Widgetは2008年、Android Cupcakeからある
  • アプリの機能を補足するもの
    • 素早く情報をみたり、タスクを完了したり、ホーム画面からインスピレーションを得たり
  • Widgetが残ってきた理由
    • 便利
      • アプリを起動しなくてもひと目で情報を把握でき、今後の予定や音楽再生に簡単にアクセスできる
      • 84%のユーザーが1つはWidgetを使用している。63%のユーザーは複数のWidgetを使用している
    • 個人的
      • iOSもAndroidユーザーもカスタマイズを楽しんでいる
      • iOSユーザーの7人に1人は、少なくとも1つはWidgetを利用している。人気のあるのはカスタマイズに焦点を当てたもの
    • 魅力的
      • 熱心なユーザーがリエンゲージする場合は特に
      • GoogleKeepのWidgetは2018に比べ3.5倍使われるようになった
      • Widgetを使うユーザーのアプリへのエンゲージメントはそうでないユーザーより高い
  • Android12ではシステムUIにここ数年で最大のアップデートが加えられ、Widgetも含まれる
    • Widget導入を通じてアプリのエンゲージメントを促進できるようにした
    • ツールとリソースを提供し、簡単に構築、メンテナンスできるようにした

What's New in Android12

  • 3つのKey factorを定めた
    • Useful
    • Discoverable
    • Beautiful

Useful

  • どうすれば便利なWidgetを簡単に作れるか
    • CheckBox,Switch,RadioButtonなどのインタラクティブな要素を追加。
    • 縦Scroll, 複数の選択可能要素などのサポートは継続
    • ホーム画面からアプリを操作できるようになる
    • デザインはマテリアルデザインが使われ、システムUIと調和する
  • Personalize
    • 以前から編集できたがほとんどのランチャーで編集する操作が見つけづらかった
    • デフォルトで良いユーザーは初期設定を飛ばせる
    • Widgetを再構成可能にするにはwidetFeatures="reonfigurable"というフラグを追加
    • 編集ボタンがウィジェットに付き、設定を変更できる

Discoverable

  • Widgetの検索と操作に役立つツールが用意されている
  • Widget Pickerの改善
    • よりリアルなプレビューや説明を表示
    • previewLayout属性にlayoutXMLを指定
    • デフォルト値を使用する実際のWidgetと同じであるのが理想
    • descriptipn属性で説明を付与できる
  • Widget候補は、Androidのオンデバイス検索、アシスタントなど、Android12の多くの場所で表示される
    • ホーム画面の外でWidgetを簡単に見つけたり参照することができる
  • Capabilities APIで検出メカニズムとコンテキストを有効にできる
    • アシスタントを使い、音声によってウィジェットの呼び出しができる。App Actions BIIでアプリにディープリンクする方法と似ている。
  • 単発の回答だけでなく複数ステップの対話も可能にする
  • Text To SpeechはWidgetHelperSDKを使って処理される
  • ダンキンドーナツで注文するデモ

Beautiful

  • システムレベルのリソースを導入して、コーナー半径やpaddingが統一されるようにする
  • システムレベルリソースを使用しない場合でもランチャーがWidgetにマスク適用し、一貫性が保たれるようになる
  • Responsible layouts
    • 大画面やフォルダブルに合わせてレスポンシブルなWidget設計をする重要性が高まっている
    • app-widget-providerにmaxResizeWidth/Heightを設定し、制限を設けることができる
    • appWidgetManagerを使ってレイアウトの調整を行う
  • Personalized Themes and Colors
    • DynamicColorAPIを追加、システムカラーを活用したり、Pixelでは壁紙から抽出した色を使える
    • WidgetレイアウトのthemeでDeviceDefaultを使う
  • Smoother Transitions
    • Widgetとアプリ間のスムーズなトランジションを実現
    • Widgetレイアウトのidに@android:id/backgroundを指定するだけ
  • 2021年版のWidgetガイドライン作成中

Jetpack Compose

  • 年内にWidget構築のためのJetpack Composeライブラリを導入する予定
  • 下位互換性のある美しいResponsiveWidgetを簡単に構築できる
  • 設計中だが、コンセプトのスニペットがある

Summary

Discussion