Почему качество ImageButton размывается или ухудшается? - PullRequest
0 голосов
/ 10 сентября 2018

Мое приложение имеет ImageButton, качество которого слишком плохое.Фактические размеры изображения составляют 4176 * 4176 (4176 пикселей), что выглядит совершенно нормально при открытии отдельно.Но когда я импортирую это в android studio и назначаю для ImageButton, качество изображения ухудшается.Я пробовал несколько способов исправить это, но пока не удалось.Я совершенно новичок в программировании Android. Я захожу в res / drawable, затем щелкаю правой кнопкой мыши, чтобы создать новый актив изображения, а затем указываю место, в которое импортируется файл png.

Фактическое изображение: enter image description here Изображение внутри студии: enter image description here

Вот код в activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:gravity="center"
android:orientation="vertical">

<ImageButton
    android:id="@+id/police"
    android:layout_width="317dp"
    android:layout_height="295dp"
    android:layout_centerInParent="true"
    android:adjustViewBounds="true"
    android:scaleType="fitXY"

    android:background="@drawable/custom_button"
    />
</LinearLayout>

Код пользовательской кнопки, которая вызывает изображение:

<item
    android:state_pressed="true"
    android:drawable="@mipmap/pressed" />

<item
    android:drawable="@mipmap/defaultt" />
</selector>

Ответы [ 2 ]

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

Вы на самом деле ссылаетесь на изображение, как значок запуска в каталоге /mipmap.

Я предлагаю уменьшить размер изображения, которое вы используете только для ImageButton, и поместить его внутри /drawable с требуемым качеством или, возможно, меньше, чем текущее, вместо размещения его в каталоге /mipmap.

Кроме того, я на самом деле не вижу причины, по которой scaleType помогает в ImageButton. Вы тоже можете удалить эту строку.

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

Начну с обзора независимых пикселей по плотности на Android.Это хороший блог, посвященный этой теме: https://www.captechconsulting.com/blogs/understanding-density-independence-in-android

Основная проблема заключается в том, что ваше изображение (с очень высоким разрешением) сжимается, чтобы поместиться внутри кнопки изображения.Как правило, вы захотите включить ресурсы изображения для разных плотностей через разные каталоги ресурсов для рисования (например, drawable-hdpi, drawable-xhdpi, drawable-xxhdpi).

Однако в наши дни вы можете использовать векторные рисунки, которые уменьшат необходимость иметь несколько активов для каждого сегмента плотности, при условии, что у вас есть возможность генерировать файлы ресурсов SVG: https://developer.android.com/guide/topics/graphics/vector-drawable-resources

...