開発者コンソール

WSAとWindows 11でのAndroidアプリサイズの変更

Giovanni Laquidara Feb 15, 2023
Share:
How to Appstore on Windows 11
Blog_Header_Post_Img

重要: Windows 11向けAmazonアプリストアは、2025年3月5日をもってサービスを終了します。詳しくは、ブログをご参照ください

 

Android開発者は、アプリをWindows 11用Amazonアプリストアに移植することにより顧客ベースを拡大できます。ただし、Windows 11ではアプリウィンドウを自由にサイズ変更できることを念頭に置くことが重要であり、ビューポートウィンドウのサイズを変更するときにアプリの応答性と安定性を保つことが不可欠です。 

このガイドでは、Android™用Windowsサブシステム(WSA)でAndroidアプリのウィンドウサイズ変更を処理する際の主要な検討事項を説明します。 

画面の最小要件

ユーザーにシームレスなエクスペリエンスを確実に提供するために、Windows 11では、9インチを超えるサイズの画面で、720pの解像度(1280x720)を画面の最小要件としています。ウィンドウサイズの縦横比がデバイスの画面サイズと一致しない場合、レターボックスまたはピラーボックスが発生し、ウィンドウを中央に配置するためにウィンドウの上下、左右にバーが表示されます。

pillarboxing and letterboxing
初期起動サイズ

Windows 11でアプリを起動する場合に検討が必要な起動サイズのオプションがいくつかあります。

静的な起動範囲を使用する。アクティビティのマニフェストエントリで<layout>を使用して、「固定」の起動サイズを指定します。次に例を示します。

Copied to clipboard
<layout android:defaultHeight="500dp"
         android:defaultWidth="600dp"
         android:gravity="top|end"
         android:minHeight="450dp"
         android:minWidth="300dp" />

動的な起動範囲を使用する。新しいアクティビティを作成するときに、アクティビティでActivityOptions.setLaunchBounds(Rect)を作成して使用できます。空の四角形を指定することでアプリを最大化できます。

注: これらのオプションはルートアクティビティにのみ指定し、新しく起動するタスクでアクティビティスタックをクリアするにはスプリングボードアクティビティの使用を検討してください。

レスポンシブレイアウトによるビジュアルコントロールの向上

レスポンシブレイアウトによりさまざまな画面サイズに対応することで、画面を表示するフォームファクターに関係なく、表示レイアウトを制御できます。

動的なウィンドウサイズに関する詳細およびKotlinやJavaでアプリのユーザーインターフェイスに明確なブレークポイントを設定する方法については、Androidの各種画面サイズのサポートに関するガイドを参照してください。また、マルチウィンドウモードによってアプリをほかのアプリの隣で動作できるようにすることや、アクティビティコンテキストとアプリコンテキストの違いについても考慮してください。

ウィンドウのサイズ変更

アプリのレイアウトが新しいウィンドウサイズに適応するように設定することでユーザーエクスペリエンスを向上させることができます。これを実現するには、アクティビティクラスのonSizeChanged()メソッドを使用します。このメソッドはアプリウィンドウのサイズが変更されたときに呼び出されるため、このメソッドを使用してアプリのレイアウトを調整できます。

Windows 11では、ユーザーはアプリウィンドウの右下隅をドラッグしてウィンドウのサイズを変更できます。Viewクラスを使用する場合、ウィンドウのサイズ変更を処理する方法は2つあります。

  1. 構成の変更に動的に応答する。そのためには、onConfigurationChanged()を呼び出し、アクティビティのマニフェストにandroid:configChanges="screenSize|smallestScreenSize|orientation|screenLayout"を追加します。コードスニペットと詳細については、構成の変更に対処するを参照してください。
  2. システムによってアクティビティを再起動する。 この場合は、onSaveInstanceState()を実装し、ViewModelアーキテクチャコンポーネントを使用して以前に保存した状態を復元する必要があります。

Windows 11ではユーザーがデバイスの画面の向きを変更できるため、クラッシュすることなくアプリで画面の向きの変更を処理できることが重要です。これを実現するには、AndroidManifest.xmlファイルでアクティビティにandroid:configChanges="orientation|screenSize"を追加します。これにより、アクティビティを再起動することなく、アプリで画面の向きの変更を処理できます。

アプリでJetpack Composeを使用している場合、サイズ変更の動作はアプリウィンドウのサイズと使用しているレイアウトによって異なります。Composeのレイアウトコンポーザブル(Box、Row、Columnなど)を使用して、アプリのコンポーネントをレイアウトできます。詳細については、Composeレイアウトの基本を参照してください。

サイズ変更に関するその他の留意事項

  1. 機能とビジュアルUIの両方の問題についてアプリをテストして、ウィンドウサイズの変更が適切に処理されることを確認します。
  2. アクティビティのonDestroyメソッドでfinish()を呼び出さないでください。これにより、サイズ変更時にアプリが再起動ではなくクラッシュします。
  3. 互換性のないウィンドウタイプを使用しないでください。これには、TYPE_KEYGUARDやTYPE_APPLICATION_MEDIAなどがあります。
  4. 以前に割り当て済みのオブジェクトをキャッシュに保存することで、アクティビティの高速な再起動を実現します
  5. ユーザーによるアプリのサイズ変更を望んでいない場合は、マニフェストファイルの<application>サブクラスでandroid:resizeableActivity=falseを指定します。

まとめ

アプリの準備とテストが完了したら、お問い合わせページからアプリのWSA申請アクセスをリクエストしてください。 リクエストが承認されたら、Amazonアプリストア開発者コンソールにログインし、マイアプリの一覧からアプリを選択します。  アプリの詳細ページで、[サポート対象デバイスの数]の横にある [表示] をクリックします。[デバイスサポート] セクションで、[Windowsデバイス] タブに移動し、対象のWindowsデバイスを選択し、申請を完了します。

関連リソース

·      問題点についてコミュニティで開発者が議論する場合、不具合の報告や、機能追加のリクエストがある場合は、Android用WindowsサブシステムのGitHubリポジトリを参照してください。

·      ウィンドウのサイズ変更に関するMicrosoftのガイド

·      ウィンドウ管理に関するAndroidドキュメント

関連記事

最近の投稿

日本語版ブログの一覧は、こちらからご覧ください。

日本語の投稿の中には、英語版から翻訳されたものが含まれます。翻訳元のブログを参照したい方は、ページ下部の言語切替バーから [英語] を選択してください。