Intereting Posts
Выполняет ли проводка Runnable в потоке пользовательского интерфейса, чтобы макет был закончен, когда он запущен? Получить Android View Instance Установка библиотеки Android SlidingMenu Запрос httpget с auth Доступ к ресурсам без контекста Как установить прокси-сервер в телефонах Android? Почему этот образ обработки изображений Google Renderscript работает медленнее на графическом процессоре в Nexus 5 Безопасно ли строить с помощью -fsigned-char с Android NDK? Удаление строки или разделителя между панелью действий и основным экраном в Android Как получить название AlertDialog? Android-телефон для разработки приложений Android – Как объединить и переместить текст на изображении Как установить имя для потока? Библиотека разработки Android 25.1.0 TextInputLayout Hint не отображается должным образом по сравнению с 24.2.1 Android: установите алфавитно-цифровую клавиатуру, чтобы сначала отобразить числовое значение в EditText

Создание фонового рисунка с использованием списка слоев, растяжение значка

Привет, Я пытаюсь создать фоновый drawable для моего заставки, который я буду устанавливать в самой теме. Но растровое изображение, которое можно использовать в центре, растягивается, и я не могу понять, как сохранить его в нормальном состоянии. Ниже мой код: splash_screen_bg.xml

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:angle="360" android:centerColor="@color/colorAccentXDark" android:endColor="@color/Black" android:gradientRadius="500dp" android:startColor="@color/colorAccentXDark" android:type="radial" android:useLevel="false" /> </shape> </item> <item android:bottom="50dp" android:top="50dp"> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:innerRadius="500dp" android:innerRadiusRatio="1" android:shape="oval"> <gradient android:angle="360" android:centerColor="@color/colorAccentXDark" android:endColor="@color/colorAccentXDark" android:gradientRadius="400dp" android:startColor="@color/colorAccent" android:type="radial" android:useLevel="false" /> </shape> </item> <item android:gravity="center"> <bitmap android:src="@drawable/ty_logo" /> </item> </layer-list> 

Вот код, где я устанавливаю этот drawable как фон активности:

  <style name="TYTheme" parent="SearchActivityTheme.NoActionBar"> <item name="colorPrimaryDark">@color/colorAccentXDark</item> <item name="android:alertDialogTheme">@style/AlertDialogTheme</item> <item name="android:windowBackground">@drawable/splash_screen_bg</item> </style> 

Таким образом, ty_logo – это png который растягивается в моем телефоне. Поскольку опция bitmapDrawable отсутствует с bitmapDrawable я не знаю, как ее обрабатывать.

    Добавьте gravity в растровое изображение, установленное в center .

     <item android:gravity="center"> <bitmap android:src="@drawable/ty_logo" android:gravity="center" /> </item> 

    Вы можете обернуть растровое изображение внутри ScaleDrawable <scale> и использовать ScaleDrawable внутри LayerListDrawable .

     <item android:gravity="center"> <scale android:drawable="@drawable/ty_logo" android:scaleHeight="80%" android:scaleWidth="80%" > </scale> </item> 

    Я надеюсь, что ty_logo имеет подходящие пиксели, и вы предоставили разные пиксельные изображения для различных экранов устройств (ldpi, mdpi, hdpi, xhdpi и т. Д.). Если нет, выполните этот ответ на аналогичную проблему, в которой вы оказались. https://stackoverflow.com/a/42177842/7550472

    В противном случае это можно легко решить, если ваша целевая версия предназначена для API 23, поскольку <item> имеет атрибуты ширины , высоты , гравитации, предоставленные для них.

    И если нет, следующий код должен работать, используя атрибут гравитации для растрового изображения. Опять же, это происходит из-за того, что ваш логотип не имеет больше пикселей, чем разрешение устройств.

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