web-dev-qa-db-ja.com

Android.max_aspectメタはどこで違いをもたらしますか?

最近の blog は、使用する必要があることを説明しています

<meta-data Android:name="Android.max_aspect" Android:value="2.1" />

<application>要素のAndroidManifest.xmlスーパーワイドスクリーンデバイスでの最適な表示、例えばSamsung Galaxy S8。

これをテストするために、アプリをインストールしました(max_aspect、resizeableActivityフラグなし、targetSdkVersion=22compileSdkVersion=24)Android 7.1.1。カスタム2960x1440解像度のエミュレーター。没入型を含むすべてのアクティビティは、ブログ投稿に示されているように余白なしで画面を埋めます。

明示的に追加しました

<meta-data Android:name="Android.max_aspect" Android:value="1.5" />

また、これはエミュレータに影響を与えませんでした。

したがって、質問:このメタフラグは実際のデバイスでのみチェックされるのですか、それともエミュレータで見落とした構成がありますか?

更新:引用されたブログ投稿の著者であるNeto Marinに連絡を取りました。誇りに思う Tweet] グローバルへの彼の貢献についてAndroid Devコミュニティが、彼から答えを得ることができませんでした。

24
Alex Cohn

レターボックス化は、Samsung S8、 LG G6Pixel 2 XL などのさまざまなデバイスで発生します。 Android 8、特に8.1の一部であるようです。

公式の Android 8.1の互換性定義 には次の段落が含まれています。

[C-0-1] Configuration.uiModeをUI_MODE_TYPE_NORMALに設定したデバイスの実装は、アプリを拡張する準備ができていると見なされる場合を除き、1.3333(4:3)から1.86(およそ16:9)のアスペクト比値を持たなければなりません。次の条件のいずれかを満たすことにより、より長くなります。

  • アプリは、 Android.max_aspect メタデータ値により、より大きな画面アスペクト比をサポートすると宣言しました。
  • アプリは、 Android:resizeableActivity 属性を使用してサイズ変更可能であると宣言します。
  • アプリはAPIレベル26以上をターゲットにしており、許可されるアスペクト比を制限する Android:MaxAspectRatio を宣言しません。

最初の2つの属性はアプリケーションレベルであり、後者の属性はアクティビティに属していることに注意してください。

一部のベンダーは、エンドユーザーがこれをさらに制御できるようにします。 LG has "App Scaling"メニュー ; Samsung 選択可能 "Display" Settingsの "full screen apps"。

2
Alex Cohn

Android.max_aspectは、 Android:resizeableActivity がtrueでない場合にのみ違いを生じます。アプリのターゲットAPIが24以上の場合、Android:resizeableActivityはtrueに設定されます。

注:アクティビティのAndroid:resizeableActivity属性がtrueに設定されている場合、最大アスペクト比を設定する必要はありません。アプリがAPIレベル24以上をターゲットにしている場合、この属性のデフォルトはtrueです。詳細については、マルチウィンドウモード用のアプリの構成を参照してください。

ドキュメント を参照してください。

7
yaroslav

必要に応じて、エミュレータのアスペクト比を設定する必要があります。

次の手順を試してください。

In Android Studio, open AVD Manager
Create Virtual Device
    New Hardware Profile
    Set name: "18:9 aspect ratio screen"
    Set resolution: 1080 x 2160
    Finish
Select "18:9 aspect ratio screen"
Next
Select system image Nougat (API Level 25)
Next
AVD Name: "API Level 25 Nougat 18x9 aspect ratio screen"
Finish

次に、このエミュレータで実行します。

値を設定せず、Android:resizeableActivityがtrueでない場合、最大アスペクト比はデフォルトで1.86(約16:9)になり、アプリは余分な画面スペースを利用しません。

アクティビティのAndroid:resizeableActivity属性がtrueに設定されている場合、最大アスペクト比を設定する必要はありません。アプリがAPIレベル24以上をターゲットにしている場合、この属性のデフォルトはtrueです。

2
Avijit Karmakar