1

在早于 Android 12 的 Android 版本上,我可以轻松构建带有未裁剪图像的启动画面。例如在 Android 11 上是这样的:

Android 11 上的启动画面

然而,Android 12 引入了一个新的 Splash Screen API,我无法弄清楚如何在 Android 12 中重现上面的启动画面。它似乎总是被裁剪,结果在 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 中获得的结果相同的初始屏幕(不裁剪背景图像)?如果是,那怎么可能?

4

1 回答 1

1

不,这是不可能的。新启动画面的目标是统一启动画面 UX,裁剪是设计的一部分。

于 2021-11-03T14:28:03.500 回答