Логотип PNG отображается дважды и искажается в заставке на Android 5 (api v22) - PullRequest
4 голосов
/ 12 июня 2019

Я работаю над заставкой для Android сборки приложения с реагировать родной.Заставка состоит из сплошного цветного фона и логотипа в формате 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:gravity, android:scaleType и android:tileMode безуспешно.Даже когда я перемещал логотип к тегу <bitmap> в элементе, он все еще оставался прежним.Я обнаружил, что когда я изменяю гравитационную стойку на другое значение, искаженный логотип перемещается соответственно.Но я не могу избавиться от этого.Также я не понимаю, почему логотип виден дважды, если он определен только один раз.

Любая помощь приветствуется.Спасибо.

bad splashscreen

1 Ответ

1 голос
/ 14 июня 2019

Вы можете поместить 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>
...