PNG 徽标在 Android 5 (api v22) 的启动画面中显示两次并变形

PNG logo shown twice and disorted in splashscreen on Android 5 (api v22)

我正在为 android 使用 React Native 构建的应用程序制作闪屏。启动画面由纯色背景和 PNG 格式的徽标组成。 Splashscreen 在新 android 版本上运行良好,但在 android 5(api 版本 22)上徽标显示两次,一次正确,一次扭曲(在整个屏幕上拉伸)。截图见文末。

Splashscreen 是使用 npm 包 react-native-splash-screen 设置的,它的源代码如下所示:

res/layout/launch_screen.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/splashscreen"
    android:orientation="vertical">
</LinearLayout>

和 drawable/splashscreen 看起来像这样:

res/drawable/splashscreen.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@color/purple"/>
    <item
        android:width="257dp"
        android:height="33dp"
        android:drawable="@mipmap/logo"
        android:gravity="center" />
</layer-list>

我尝试了几乎所有不同的 android:gravityandroid:scaleTypeandroid:tileMode 组合,但都没有成功。即使我将徽标移动到项目中的 <bitmap> 标签,它仍然是一样的。我确实发现,当我将重力道具更改为某个不同的值时,扭曲的徽标会相应地移动。但我无法摆脱它。我也不明白,如果只定义一次,为什么标志会出现两次。

感谢任何帮助。谢谢。

您可以在 LinearLayout 中放置一个 ImageView,然后将 LinearLayout 背景设置为 @color/purple,将 ImageView 背景设置为 @mipmap/logo,如下图:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/purple">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@mipmap/logo"
        />

</LinearLayout>