О Android изображения и размеры активов
Мне нужно прояснить некоторые сомнения в отношении активов изображения для моего приложения,
если я укажу в xml-файле, что высота чего-то [вид изображения] составляет 50 dip height
какой тип экрана выбрать из папки ресурсов?
drawable, hdpi, ldpi, mdpi, xhdpi,
чтобы иметь изображение высотой 50 пикселей,
и каков процент для больших, меньших по размеру изображений по сравнению с базовым изображением,
как в iOS, @2x, буквально в 2 раза больше размера изображение, а вы говорите программно нормальный размер,
спасибо!
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, когда есть несколько изображений.