在早于 Android 12 的 Android 版本上,我可以轻松构建带有未裁剪图像的启动画面。例如在 Android 11 上是这样的:
然而,Android 12 引入了一个新的 Splash Screen API,我无法弄清楚如何在 Android 12 中重现上面的启动画面。它似乎总是被裁剪,结果在 Android 12 上是这样的:
这是我android/src/main/res/values/styles.xml
的旧 Android 版本(例如 Android 11):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:windowFullscreen">false</item>
</style>
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>
这是我android/src/main/res/values-v31/styles.xml
的 Android 12:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowSplashScreenAnimatedIcon">@drawable/launch_background</item>
<item name="android:windowFullscreen">false</item>
</style>
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>
两者之间的唯一区别styles.xml
是我android:windowSplashScreenAnimatedIcon
用于 Android 12 和旧 Android 版本,如新启动屏幕 API ( https://developer.android.com/guide/topics/ui/splash-screen )android:windowBackground
文档中所述.
两种styles.xml
用途@drawable/launch_background
都定义android/src/main/res/drawable/launch_background.xml
如下:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:gravity="fill" android:src="@drawable/background"/>
</item>
<item>
<bitmap android:gravity="center" android:src="@drawable/splash"/>
</item>
</layer-list>
@drawable/background
只是一个.png
白色像素 (1x1) 和splash.png
(1280x721) 是我想在启动画面中显示的不应该被裁剪的实际图像。我在这里上传了两个文件:https ://imgur.com/a/IzyYAwP
使用新的 Android 12 Splash Screen API,是否甚至可以获得与我在 Android 11 中获得的结果相同的初始屏幕(不裁剪背景图像)?如果是,那怎么可能?