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

Ale*_*ohn 24 android android-manifest android-screen-support

最近的博客解释说我们必须使用

<meta-data android:name="android.max_aspect" android:value="2.1" />
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml的<application>元素中,可在超宽屏设备上实现最佳显示效果,例如Samsung Galaxy S8.

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

我明确地补充道

<meta-data android:name="android.max_aspect" android:value="1.5" />
Run Code Online (Sandbox Code Playgroud)

这对模拟器也没有影响.

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

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

yar*_*lav 7

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

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

请参阅文档.


Ale*_*ohn 4

Letterboxing 发生在不同的设备上,例如 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)之间,除非应用可以被视为已准备好进行拉伸满足以下条件之一即可延长:

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

一些供应商允许最终用户进一步控制这一点。LG 有“应用程序缩放”菜单;三星允许您在“显示”设置中选择“全屏应用程序”。