О Android изображения и размеры активов


Мне нужно прояснить некоторые сомнения в отношении активов изображения для моего приложения,

если я укажу в xml-файле, что высота чего-то [вид изображения] составляет 50 dip height

какой тип экрана выбрать из папки ресурсов?

drawable, hdpi, ldpi, mdpi, xhdpi,

чтобы иметь изображение высотой 50 пикселей,

и каков процент для больших, меньших по размеру изображений по сравнению с базовым изображением,

как в iOS, @2x, буквально в 2 раза больше размера изображение, а вы говорите программно нормальный размер,

спасибо!

4 82

4 ответа:

mdpi - это опорная плотность , то есть 1 px на mdpi дисплей равен 1 дип. Коэффициент для масштабирования активов составляет:

ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
0.75 | 1    | 1.33  | 1.5  | 2     | 3      | 4

хотя вы действительно не нужно беспокоиться о tvdpi если вы не разрабатываете специально для Google TV или оригинального Nexus 7 - но даже Google рекомендует просто использовать hdpi активы.

что это значит, если вы делаете изображение 48dip и планируете поддерживать до xxhdpi resolution, вы должны начать с 144px изображения (192px, если вы хотите собственные ресурсы для xxxhdpi) и сделать следующие изображения для плотностей:

ldpi    | mdpi    | tvdpi    | hdpi    | xhdpi     | xxhdpi    | xxxhdpi
36 x 36 | 48 x 48 | 64 x 64  | 72 x 72 | 96 x 96   | 144 x 144 | 192 x 192

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

для справки, плотности пикселей для них являются:

ldpi  | mdpi  | tvdpi  | hdpi  | xhdpi  | xxhdpi  | xxxhdpi
120   | 160   | 213    | 240   | 320    | 480     | 640

на основе kcoppockответ я создал следующий скрипт оболочки, чтобы автоматически изменять размер всех изображений до нужного размера и копировать их в соответствующие android drawable-* - папки!

создать скрипт и вставьте следующий код:

createAndroidImages.sh

#!/bin/bash

read -p "Please enter the subfolder of the original images? " folder
read -p "How many DP (width) should the image have? " dp

for i in $(find $folder/. -type f -name "*[A-Z]*"); do mv "$i" "$(echo $i | tr A-Z a-z)"; done

mkdir drawable-ldpi
mkdir drawable-mdpi
mkdir drawable-tvdpi
mkdir drawable-hdpi
mkdir drawable-xhdpi
mkdir drawable-xxhdpi
mkdir drawable-xxxhdpi

cp $folder/* drawable-ldpi/
cp $folder/* drawable-mdpi/
cp $folder/* drawable-tvdpi/
cp $folder/* drawable-hdpi/
cp $folder/* drawable-xhdpi/
cp $folder/* drawable-xxhdpi/
cp $folder/* drawable-xxxhdpi/

sips -Z $(echo $dp*3/4 | bc) drawable-ldpi/*
sips -Z $(echo $dp | bc) drawable-mdpi/*
sips -Z $(echo $dp*4/3 | bc) drawable-tvdpi/*
sips -Z $(echo $dp*3/2 | bc) drawable-hdpi/*
sips -Z $(echo $dp*2 | bc) drawable-xhdpi/*
sips -Z $(echo $dp*3 | bc) drawable-xxhdpi/*
sips -Z $(echo $dp*4 | bc) drawable-xxxhdpi/*

поместите свой скрипт в папку, а исходные изображения в подпапку, например:

/
.. createAndroidImages.sh
.. originalImages/
....a123.png
....b456.png

запустить скрипт в терминале: sh createAndroidImages.sh

чтобы скопировать созданные изображения непосредственно в ваш проект Android Studio:

cp -R drawable-* ~/AndroidStudioProjects/ESCRating/app/src/main/res/

ты молодец! Надеюсь, это кому-то поможет!

120px) для достижения оптимальных результатов.

kcoppock проделал большую работу, объясняя плотность экрана Andorid. Я просто хотел бы добавить еще один момент относительно первоначального вопроса.

Android Tablet launcher icon использует одно ведро плотности вверх.

по словам разработчика Google Ника мясника Google + post

великолепный экран на Nexus 10 попадает в ведро плотности XHDPI. На планшетах Launcher использует значки из одного ведра плотности [0] для их визуализации немного больший. Чтобы убедиться, что ваш значок запуска (возможно, ваш самый важный актив приложений) является четким, вам нужно добавить значок 144*144px в папку drawable-xxhdpi или drawable-480dpi.

найти источник здесь

вот мои расчеты для масштабирования и масштабирования изображений для android -

ldpi (120 точек на дюйм, экран низкой плотности) - 36px x 36px (0.19) (1)

mdpi (160 точек на дюйм, экран средней плотности) - 48px x 48px (0.25) (1.33)

hdpi (240 точек на дюйм, экран высокой плотности) - 72px x 72px (0.38) (2)

xhdpi (320 точек на дюйм, экран с высокой плотностью) - 96px x 96px (0,5) (2.67)

красный (480 точек на дюйм, Экстра-Экстра-высокая плотность экрана) - размером 144 х 144 пикселя (0.75) (4)

xxxhdpi (640 точек на дюйм, экран Экстра-экстра-экстра-высокой плотности) - 192px x 192px (1.0) (5.33)

моя короткая статья полезно создавать ресурсы изображений с помощью imagemagick, когда есть несколько изображений.