android.max_aspect meta在哪里有所不同?

时间:2017-04-03 07:54:39

标签: android android-manifest android-screen-support

最近blog解释说我们必须使用

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

AndroidManifest.xml <application>元素中,以便在超宽屏设备上实现最佳效果,例如三星Galaxy S8。

为了测试这一点,我在Android 7.1.1上安装了我的应用程序(没有max_aspect,没有resizeableActivity标志; targetSdkVersion=22compileSdkVersion=24)。仿真器具有自定义2960x1440分辨率。所有活动,包括身临其境的活动,都会填满屏幕,没有任何边距,如博客文章所示。

我添加了明确的

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

这对模拟器也没有影响。

所以,问题是:这个元标志只在真实设备上检查过,还是我的模拟器错过了一些配置?

更新:我试图联系引用博客文章的作者 Neto Marin 。我发现了一个自豪tweet ]关于他对全球Android Dev社区的贡献,但无法得到他的回答。

3 个答案:

答案 0 :(得分:7)

如果android:resizeableActivity不正确,android.max_aspect只会有所不同。 如果你的应用程序的目标API是24或更高,android:resizeableActivity设置为true。

  

注意:如果活动的android:resizeableActivity属性设置为true,则无需设置最大宽高比。如果您的应用以API级别24或更高为目标,则此属性默认为true。有关更多信息,请参阅为多窗口模式配置应用程序。

请参阅documentation

答案 1 :(得分:2)

您必须根据需要设置模拟器的宽高比。

尝试以下步骤:

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不成立,则最大宽高比默认为1.86(大约16:9),您的应用将无法利用额外的屏幕空间

如果活动的android:resizeableActivity属性设置为true,则无需设置最大宽高比。如果您的应用以API级别24或更高为目标,则此属性默认为true。

答案 2 :(得分:2)

Letterboxing发生在不同的设备上,例如Samsung S8,LG G6Pixel 2 XL以及其他一些设备。它似乎是Android 8的一部分,特别是8.1。

官方Android 8.1 compatibility definition包括以下段落:

  

[C-0-1]将Configuration.uiMode设置为的设备实现   UI_MODE_TYPE_NORMAL的宽高比值必须介于1.3333(4:3)和之间   1.86(大约16:9),除非该应用程序可以被视为已准备好延长   满足以下条件之一:

     

请注意,前两个属性是应用程序级别,而后一个属性属于Activity。

一些供应商允许最终用户进一步控制。 LG有"App Scaling" menu;三星lets you choose&#34;全屏应用&#34; on&#34;显示&#34;设置。