最近的blog解释说,我们必须使用
<meta-data android:name="android.max_aspect" android:value="2.1" />
在AndroidManifest.xml的<application>
元素中,可在三星Galaxy S8等超级宽屏设备上实现最佳显示。
为了测试这一点,我在安卓7.1.1上安装了我的应用程序(没有max_aspect,没有resizeableActivity标志;targetSdkVersion=22
,compileSdkVersion=24
)。具有自定义2960x1440分辨率的仿真器。所有的活动,包括身临其境的,充满了屏幕,没有空白,如博客帖子所示。
我添加了explicit
<meta-data android:name="android.max_aspect" android:value="1.5" />
这对仿真器也没有影响。
那么,问题是:这个meta标志是只在真实设备上检查的,还是我的模拟器遗漏了一些配置?
更新:我试图联系到被引用的博客文章的作者Neto Marin。我找到了一个骄傲的tweet
关于他对全球Android Dev社区的贡献,但无法从他那里得到答案。
发布于 2018-02-07 17:04:22
信箱发生在不同的设备上,如三星S8,LG G6,Pixel 2 XL和其他一些设备。它似乎是Android 8的一部分,尤其是8.1。
官方Android 8.1 compatibility definition包含以下段落:
将Configuration.uiMode设置为UI_MODE_TYPE_NORMAL的
C-0-1设备实现必须具有介于1.3333 (4:3)和1.86 (大约16:9)之间的纵横比值,除非应用程序可以通过满足以下条件之一而被视为准备拉伸更长时间:
请注意,前两个属性是应用程序级别的,而后一个属性属于Activity。
一些供应商允许最终用户进一步控制这一点。LG在“显示”设置中有"App Scaling" menu;三星lets you choose的“全屏应用程序”。
发布于 2017-04-21 16:55:51
只有当您的android:resizeableActivity不是真的时,android.max_aspect才会有所不同。如果你的应用程序的目标API是24或更高,android:resizeableActivity设置为true。
注意:如果活动的android: true活动属性设置为true,则不需要设置最大纵横比。如果您的应用程序以API级别24或更高级别为目标,则此属性默认为true。有关更多信息,请参见将应用程序配置为多窗口模式。
请参考documentation。
发布于 2017-06-09 12:24:02
你必须根据你的需要设置模拟器的纵横比。
尝试以下步骤:
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。
https://stackoverflow.com/questions/43179314
复制相似问题