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

时间:2019-06-12 16:16:08

标签: android react-native android-layout splash-screen

我正在使用响应本机为Android应用程序构建启动画面。初始屏幕由纯色背景和PNG格式的徽标组成。 Splashscreen在新的android版本上可以正常工作,但在android 5(api版本22)上,徽标会显示两次,一次正确,一次扭曲(在整个屏幕上拉伸)。参见最后的屏幕截图。

启动画面是使用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>标签,它仍然是相同的。我确实发现,当我将重力支柱更改为其他值时,变形的徽标也会相应移动。但是我不能摆脱它。同样,我也不明白为什么只定义一次徽标就可以看到两次。

任何帮助表示赞赏。谢谢。

bad splashscreen

1 个答案:

答案 0 :(得分:1)

您可以在ImageView内放置LinearLayout,然后将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>