Android заставка растягивает логотип на весь экран - PullRequest
0 голосов
/ 12 сентября 2018

У меня простой заставка с белым фоном и логотипом в центре экрана. В современной версии Android он работает хорошо, но в «старых» версиях Android (например, API 22) мой логотип растягивается на весь экран. Как заставить заставку с логотипом выглядеть нормально на всех версиях Android (до API 19)? постскриптум Я не разработчик Android.

вытяжка / background_splash.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

  <item android:drawable="@color/white" />

  <item
    android:width="150dp"
    android:height="50dp"
    android:drawable="@mipmap/my_logo"
    android:gravity="center" />

</layer-list>

Значения / styles.xml

<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:statusBarColor">@color/white</item>
    </style>

    <style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@drawable/background_splash</item>
        <item name="android:statusBarColor">@color/white</item>
    </style>

</resources>

Ответы [ 5 ]

0 голосов
/ 12 сентября 2018

Во-первых, не используйте png, используйте векторное изображениеТаким образом, вам не нужно отдельное изображение для экрана другого размера.Используйте это, чтобы преобразовать изображение http://a -student.github.io / SvgToVectorDrawableConverter.Web /

, и теперь в представлении вашего изображения в файле XML установите тип масштаба для Center Crop или Fit XYandroid: scaleType = "centerCrop" или используйте android: scaleType = "fitxy"

0 голосов
/ 12 сентября 2018

Вместо использования простого тега <item/> используйте тег <bitmap/> внутри <item>.

С Список слоев Drawable документации :

По умолчанию все рисуемые элементы масштабируются по размеру вмещающего просмотра. [...] Чтобы избежать масштабирования элементов в списке, используйте элемент <bitmap> внутри элемента <item>, чтобы указать нарисованное и определить гравитацию для чего-то, что не масштабируется, например "center".

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/white" />

    <item>
        <bitmap
            android:src="@mipmap/my_logo"
            android:gravity="center"/>
    </item>

</layer-list>
0 голосов
/ 12 сентября 2018

Это потому, что атрибуты android:width и android:height были введены на уровне API 23. Единственное решение, о котором я могу подумать, если вы хотите показать одно и то же изображение с относительным размером в соответствии с размером экрана, это предоставить альтернативурастровые ресурсы.

Вот ссылка на Руководство разработчика Android , которая объясняет это немного подробнее.

0 голосов
/ 12 сентября 2018

Обычно я проверяю, чтобы корневой узел моего макета был RelativeLayout, а первым дочерним элементом был ImageView с centerCrop в качестве scaleType.

Вот пример:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:scaleType="centerCrop"
        android:background="@drawable/img_background"/>

    ...
0 голосов
/ 12 сентября 2018

Проблема не связана с версией Android.это должно быть связано с размером экрана устройств.

Чтобы объявить различные макеты и растровые изображения, которые вы хотите использовать для разных экранов, вы должны поместить эти альтернативные ресурсы в отдельные каталоги / папки.

Это означает, что если вы генерируете изображение 200x200 для устройств xhdpi, вам следует создать один и тот же ресурс в 150x150 для hdpi, 100x100 для mdpi и 75x75 для устройств ldpi.

Одним словом, приложения Android должны обеспечивать6 размеров изображения: ldpi (0,75x), mdpi (1,0x), hdpi (1,5x), xhdpi (2,0x), xxhdpi (3,0x) и xxxhdpi (4,0x).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...