Android 启动画面拉长

Android Splash Screen stretched

我正在尝试使用 this tutorial 通过使用附加主题来创建启动画面。 这是我在 styles.xml:

中的启动器主题
    <style name="AppTheme.Launcher" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <item name="android:windowBackground">@drawable/ic_launch_screen</item>
        <item name="colorPrimaryDark">@color/color_white</item>
    </style>

这是 ic_launch_screen.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/color_white" />
    <item>
        <bitmap android:src="@drawable/ic_splash_screen" />
    </item>
</layer-list>

ic_splash_screen 文件已经是一个包含 9 个补丁的文件,如下所示:

在 Android Studio 的 9 补丁预览中显示,如果拉伸,徽标将不会调整大小并且看起来完美对齐。

然而,当我在这个组合中使用它时,启动画面在我的华为和三星上看起来被拉长了,但在 pixel 2 模拟器上却没有: Huawei Mate 10 Pro & Samsung Galaxy s9+(拉伸方式相同):

在模拟器上看起来很完美:

不是系统导航的问题。像在模拟器中一样使用三键导航,在华为上还是显得有些牵强。

我已经尝试使用 <nine-patch> 元素或 gravity:center 属性在 ic_launch_screen.xml 中玩弄,但它看起来更乱了。

我不确定为什么 9 补丁没有缩放,但我可以提出一个解决方法。您可以创建 2 个可绘制对象,第一个带有文本 pass13,另一个带有徽标。现在您可以创建以下图层列表:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/color_white" />
    <item>
        <bitmap
            android:gravity="center" 
            android:src="@drawable/drawable1" />
    </item>
    <item>
        <bitmap
            android:gravity="center|bottom" 
            android:src="@drawable/drawable2" />
    </item>
</layer-list>

现在应该可以很好地扩展了。