Разрешение экрана с проблемой изображения

Я некоторое время работал над приложением, которое создает мозаичную головоломку. Я дошел до того, что тестирую экраны разных размеров и плотности. Используя Krita, я уменьшил размер мозаичного изображения до 110 X 110 пикселей для использования в формате mdpi. Странно, но этот размер отлично работал в эмуляторе xhdpi, который я использовал для тестирования до сих пор, но созданный мною эмулятор mdpi значительно сжимает изображения. В то время как я мог бы просто создавать большие изображения для меньших плотностей экрана, это противоречит тому, что я понимаю о том, как андроид обрабатывает плотности из документации. Разве эти изображения не должны быть взорваны на более низких разрешениях? Вот часть Grid Layout файла макета:

    <GridLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:columnCount="3"
    android:rowCount="3"
    android:id="@+id/TheGrid"
    android:layout_centerInParent="true"
    android:background="@color/background_floating_material_light"
    android:animateLayoutChanges="true"
    android:layout_toRightOf="@+id/title_inflater"
    android:layout_toLeftOf="@+id/picture_inflator"
    >

    <ImageView
        android:id="@+id/TopLeft"
        android:clickable="true"
        android:layout_column="0"
        android:layout_row="0"
        android:layout_gravity="fill"
        android:src="@drawable/star_trek_federation_emblem_9pc_1"
        />
    <ImageView
        android:id="@+id/TopCenter"
        android:clickable="true"
        android:layout_gravity="fill"
        android:layout_row="0"
        android:layout_column="1"
        android:src="@drawable/star_trek_federation_emblem_9pc_1"
        />
    <ImageView
        android:id="@+id/TopRight"
        android:clickable="true"
        android:layout_gravity="fill"
        android:layout_row="0"
        android:layout_column="2"
        android:src="@drawable/star_trek_federation_emblem_9pc_1"
        />


    <ImageView
        android:id="@+id/CenterLeft"
        android:clickable="true"
        android:layout_gravity="fill"
        android:layout_row="1"
        android:layout_column="0"
        android:src="@drawable/star_trek_federation_emblem_9pc_1"
        />

    <ImageView
        android:id="@+id/CenterCenter"
        android:clickable="true"
        android:layout_gravity="fill"
        android:layout_row="1"
        android:layout_column="1"
        android:src="@drawable/star_trek_federation_emblem_9pc_1"
        />
    <ImageView
        android:id="@+id/CenterRight"
        android:clickable="true"
        android:layout_gravity="fill"
        android:layout_row="1"
        android:layout_column="2"
        android:src="@drawable/star_trek_federation_emblem_9pc_1"
        />

    <ImageView
        android:id="@+id/BottomLeft"
        android:clickable="true"
        android:layout_gravity="fill"
        android:layout_row="2"
        android:layout_column="0"
        android:src="@drawable/star_trek_federation_emblem_9pc_1"
        />
    <ImageView
        android:id="@+id/BottomCenter"
        android:clickable="true"
        android:layout_gravity="fill"
        android:layout_row="2"
        android:layout_column="1"
        android:src="@drawable/star_trek_federation_emblem_9pc_1"
        />
    <ImageView
        android:id="@+id/BottomRight"
        android:clickable="true"
        android:layout_gravity="fill"
        android:layout_row="2"
        android:layout_column="2"
        android:src="@drawable/star_trek_federation_emblem_9pc_1"
        />

    <ImageView
        android:id="@+id/mover"
        android:layout_row="2"
        android:layout_column="2"
        android:visibility="invisible"
        android:layout_gravity="fill"
        />
</GridLayout>

Вот как это выглядит в программе предварительного просмотра (как на экране xhdpi):

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

все же на экране MDDP это выглядит так:

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

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

1 ответ

1) Во-первых, вы можете создать изображения любого размера по этой ссылке https://romannurik.github.io/AndroidAssetStudio/ просто загрузите изображение на этот сайт, и вы получите изображения всех размеров для всех drawable.Это может помочь вам настроить все размеры.

или если вам не нравится с первого раза, вы можете использовать

этот второй способ Чтобы создать значок для разных плотностей, вы должны следовать коэффициенту масштабирования 2:3:4:6 между четырьмя основными плотностями (средняя, ​​высокая, x-высокая и xx-высокая соответственно).

Например, предположим, что размер значка запуска указан как 48x48 dp.

Это означает, что базовый (MDPI) актив составляет 48x48 пикселей,

и актив высокой плотности (HDPI) должен быть в 1,5 раза больше базовой линии при 72x72 пикселей,

и актив x-high density (XHDPI) должен быть в 2 раза больше базового уровня при 96x96 пикселей и т. д.

Примечание. Android также поддерживает экраны низкой плотности (LDPI) с размером активов 36x36 px, но обычно вам не нужно создавать собственные ресурсы с таким размером, поскольку Android эффективно уменьшает ваши ресурсы HDPI на 1/2, чтобы соответствовать ожидаемому размеру.,

Аналогично для XXHDPI размер актива должен составлять 144х144 пикс.

Источник: developer.android.com

Другие вопросы по тегам