官方文档:
- If your app targets Android 8.0 (API level 26) or higher, it fills the entire screen, according to its layout.
- If your app targets Android 7.1 (API level 25) or lower, the system limits the size of the app's interface to a window with an aspect ratio of 16:9 (approximately 1.86). If the app runs on a device with a larger screen aspect ratio, the app appears in a 16:9 letterbox that leaves part of the screen unused.
大致翻译:
- 如果应用针对的是Android 8.0(API级别26)或更高版本,则会根据其布局填充整个屏幕。
- 如果您的应用面向Android 7.1(API级别25)或更低,系统会将应用界面的大小限制为纵横比为16:9(约1.86)的窗口。如果应用程序在较大屏幕纵横比的设备上运行,则该应用程序将显示在16:9区域中,使得部分屏幕未使用。
当应用未适配全面屏时,就会出现问题。
因此,谷歌官方建议:
If your app layout cannot adapt to arbitrarily large aspect ratios, you can explicitly enforce letterboxing on all Android OS levels by setting a maximum aspect ratio. We recommend a ratio of 2.4 (12:5).
如果app布局无法适应任意大的纵横比,则可以通过设置最大纵横比来强制显示。建议比率为2.4(12:5)。
Android 8.0 (API level 26) 或更高
<!-- Render on full screen up to screen aspect ratio of 2.4 -->
<!-- Use a letterbox on screens larger than 2.4 -->
<activity android:maxAspectRatio="2.4">
...
</activity>
Android 7.1及以下
<!-- Render on full screen up to screen aspect ratio of 2.4 -->
<!-- Use a letterbox on screens larger than 2.4 -->
<meta-data android:name="android.max_aspect" android:value="2.4" />
Tips : 如果设置最大纵横比,请不要忘记也设置 android:resizeableActivity = false。否则,最大纵横比无效。(resizeableActivity默认为false,该属性也会支持分屏显示)
个人总结
最好的做法就是将应用升级到最新版本(目前是28),这样就能自动适配全屏;但是并不意味着UI能够正常显示,UI适配仍是开发和设计需要完善的问题。
参考链接:
https://developer.android.com/guide/practices/screens_support
https://developer.huawei.com/consumer/cn/devservice/doc/50111
网友评论