Android 12(API レベル 31)では既存の Widgets API が改善され、プラットフォームやランチャーにおけるユーザーとデベロッパーのエクスペリエンスが向上しています。このガイドでは、ウィジェットを Android 12 に対応させる方法について説明します。また、このガイドは既存のウィジェットを更新するための API のリファレンスとしてもご利用いただけます。
ウィジェットが Android 12 に対応していることを確認する
Android 12 では、ウィジェットの角が丸くなっています。Android 12 以降を搭載するデバイスでアプリ ウィジェットを使用すると、ランチャーはウィジェットの背景を自動的に識別し、角が丸くなるよう切り抜きます。
このシナリオでは、次のいずれかの状況でウィジェットが正しく表示されないことがあります。
ウィジェットの角にコンテンツが含まれている: 角にあるコンテンツの一部が切り取られる可能性があります。
ウィジェットで切り抜きにくい背景を使用している。これには、透明な背景、空のビューやレイアウトなどの、切り抜きにくい特殊な背景が含まれます。この場合、使用する背景をシステムが正しく識別できない可能性があります。
ウィジェットがこの変更の影響を受ける場合は、角が丸くなるようにウィジェットを更新し(次のセクションで説明します)、適切に表示されるようにすることをおすすめします。
サンプルを使用する
Widgets API の実際の動作については、リスト ウィジェットのサンプルをご覧ください。
角の丸みを実装する
Android 12 では、system_app_widget_background_radius
および system_app_widget_inner_radius
システム パラメータが導入され、ウィジェットの角の丸みを設定できるようになりました。
1 ウィジェットの角。
2 ウィジェット内のビューの角。
詳しくは、角の丸みを実装するをご覧ください。
デバイスのテーマを追加する
Android 12 以降のウィジェットでは、ボタンや背景などのコンポーネントにデバイスのテーマカラー(ライトテーマやダークテーマなど)を使用できます。 これにより、ウィジェット間の遷移がスムーズになり、一貫性が保持されます。
詳しくは、デバイスのテーマを追加するをご覧ください。
ウィジェットを簡単にカスタマイズできるようにする
appwidget-provider
の configure
属性を使用して設定アクティビティを指定した場合、ユーザーがアプリ ウィジェットをホーム画面に追加するとすぐに、アプリ ウィジェット ホストがそのアクティビティを起動します。
Android 12 には、ユーザーが簡単に設定できるようにするための新しいオプションが追加されています。詳しくは、ユーザーがウィジェットを設定できるようにするをご覧ください。
新しい複合ボタンを追加する
Android 12 では、以下の既存のコンポーネントを使用したステートフル動作のサポートが追加されています。
このウィジェットはまだステートレスであるため、アプリが状態を保存し、状態変化イベントを登録できるようにする必要があります。
詳しくは、ステートフル動作のサポートをご覧ください。
改良された API を使用してウィジェットのサイズとレイアウトを設定する
Android 12 以降では、ウィジェットのサイズ調整に関する追加の制約を指定したり、レスポンシブ レイアウトや正確なレイアウトを設定したりして、サイズ属性とレイアウトをきめ細かく設定できます。
詳しくは、柔軟なウィジェット レイアウトを提供するをご覧ください。
アプリのウィジェット選択ツールのエクスペリエンスを改善する
Android 12 では、動的ウィジェットのプレビューとウィジェットの説明を追加することで、アプリのウィジェット選択ツールのエクスペリエンスを改善できます。詳しくは、ウィジェット選択ツールにスケーラブルなウィジェット プレビューを追加するとウィジェットの説明を追加するをご覧ください。
スムーズな遷移を有効にする
Android 12 以降では、ユーザーがウィジェットからアプリを起動すると、ランチャーにより遷移がスムーズに行われます。詳しくは、スムーズな遷移を有効にするをご覧ください。
簡素化された RemoteViews
コレクションを使用する
Android 12 では、setRemoteAdapter(int viewId, RemoteViews.RemoteCollectionItems items)
メソッドが追加されました。このメソッドにより、アプリは ListView
の入力時にコレクションを直接渡せるようになります。以前は、ListView
を使用する場合、RemoteViewsService
を実装して宣言し、RemoteViewsFactory
を返す必要がありました。
詳しくは、RemoteViews
コレクションの使用をご覧ください。
RemoteViews
のランタイム変更を使用する
Android 12 では、RemoteViews
属性のランタイム変更を可能にするいくつかの RemoteViews
メソッドが追加されています。追加されたメソッドの完全なリストについては、RemoteViews
API リファレンスをご覧ください。
詳しくは、RemoteViews
のランタイム変更を使用するをご覧ください。