Изображение значка в форме круга размыто

Я создал чертежи в форме круга, которые содержат значки png. В соответствии с рекомендациями по материалам Android диаметр круга составляет 40 dp, а значок — 24 dp. Первоначально я не устанавливал никаких значений для левого, правого, верхнего и нижнего, так как предполагал, что внутренний элемент значка останется 24dp. Однако он изменяет размер. Затем я попытался использовать свойства ширины и высоты, чтобы установить его на 24dp, что, казалось, работало в предварительном просмотре в AS, но не повлияло на планшет. Наконец, я установил значения сверху, снизу, слева и справа, как показано на рисунке. Я использую 8dp как: (40-24)/2 = 8.

Проблема в том, что значок внутри круга выглядит размытым, как будто его размер был изменен, но я не знаю, как с этим справиться. Возможно, есть лучший способ разместить иконку внутри круга. В конце концов, это очень распространенная дизайнерская практика.

Я поместил фактическую иконку рядом с кругом на прикрепленном изображении для сравнения, но, к сожалению, из-за сжатия изображения трудно определить разницу в четкости, но поверьте мне на слово, изображение справа выглядит как вектор, как и один в ФАБе.

круг_сетка.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="oval">

            <solid
                android:color="@color/colorPrimary"/>

            <size
                android:width="40dp"
                android:height="40dp"/>
        </shape>
    </item>
    <item android:drawable="@drawable/ic_grid_on_white_24dp"
        android:top="8dp"
        android:bottom="8dp"
        android:left="8dp"
        android:right="8dp"
        android:gravity="center"/>
</layer-list>

фрагмент.xml

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="@dimen/screen_edge_margin"
            android:layout_marginStart="@dimen/screen_edge_margin"
            android:src="@drawable/circle_grid" />

введите здесь описание изображения


person Luke Allison    schedule 03.03.2016    source источник


Ответы (2)


Что такое группа DP для устройства, которое вы используете? Если ваше устройство как hdpi DP, то значок должен иметь размер 36 * 36 в пикселях. Если он находится в группе xhdpi, он должен иметь размер 48*48 в пикселях. Если он находится в группе xxhdpi, то он должен иметь размер 72*72. И так далее. Я считаю, что у вас есть только один размер для этого значка, поэтому он выглядит размытым.

person Niza Siwale    schedule 03.03.2016
comment
Я тестирую планшет Samsung Galaxy TM-330 с плотностью ~189. Это находится между средним и высоким. Я думал, что весь смысл загрузки zip-папки, содержащей один и тот же значок для каждой плотности, заключается в учете каждой плотности экрана. - person Luke Allison; 04.03.2016

http://www.sweet-web-design.com/wordpress/android-tricks-drawable-objects-or-how-to-draw-a-circle/2874/

Это работает без того, что когда-либо вызывало изменение масштаба изображения и пикселизацию.

person Luke Allison    schedule 04.03.2016