最新のAndroidウィジェット開発

Nov 26 2020

それは2020年であり、iOSがついにウィジェットのサポートを追加した後、ウィジェットは再び大流行しています。ただし、Androidウィジェットは2012年以降更新されていないようです。

Androidドキュメントから:

RemoteViewsオブジェクト(およびその結果としてApp Widget)は、次のレイアウトクラスをサポートできます。

  • FrameLayout
  • LinearLayout
  • 相対レイアウト
  • グリッドレイアウト

つまり、ConstraintLayout、RecyclerView、AndroidXはありません。ListViewの暗い時代に戻りたくありません。

Android開発者サイトのドキュメントは、今日でもAndroidウィジェットを開発するためのベストプラクティスですか?AndroidXの世界でウィジェットを作成した経験のある人はいますか?エクスペリエンスの苦痛を軽減するためのサードパーティAPIはありますか?

回答

2 CommonsWare Nov 26 2020 at 14:26

ただし、Androidウィジェットは2012年以降更新されていないようです。

正しい。

ListViewの暗い時代に戻りたくありません。

うーん...ごめんなさい?

Android開発者サイトのドキュメントは、今日でもAndroidウィジェットを開発するためのベストプラクティスですか?

アプリウィジェットは、「ベストプラクティス」ではなく、文書化されサポートされているプロトコルに関するものです。アプリウィジェットは、実際にはプロセス間通信(IPC)プロトコルであり、最終的にUIが作成されることに注意してください。アプリがUIをレンダリングしていません—ホーム画面または他のアプリウィジェットホストは、通常AppWidgetHost、関連するAPIの支援を受けています。

つまり、ConstraintLayout、RecyclerView、AndroidXはありません。

正しい。結局のところ、ホーム画面がそれらのいずれかにアクセスできるかどうか、またはそれらがどのバージョンにあるかなどはわかりません。

エクスペリエンスの苦痛を軽減するためのサードパーティAPIはありますか?

それは実際には不可能です。アプリはアプリウィジェットとはほとんど関係がありません。「重い物を持ち上げる」ことはフレームワークにあり、程度は少ないですがホーム画面にあります。サードパーティのAPIはそれを実際に変更することはできません。

私は、Googleが「アプリウィジェット」の代替形式としてスライスのサポートを開始するようにランチャー開発者を誘導し始めることを期待していました。グーグルがスライスを忘れているように見えるので、それはまだ起こっていません。おそらく、将来的には、GoogleはAndroid 11SurfaceControlViewHostをベースにしたものを提供し、あらゆる種類の可能性への扉を開きます。どちらの場合も、ランチャー開発者はこれらをサポートするために変更を加える必要があり、採用が遅くなります。

ウィジェットとコンテナーの限られたリストにあるものを超えてUIを提供するためにできる最も近いことは、独自のものをにレンダリングし、それをアプリウィジェットにBitmap表示することImageViewです。アプリウィジェットの正確なサイズがわからないため、これは注意が必要です。そしてもちろん、それは入力オプションを変更しません。