Мне нужно прояснить некоторые сомнения в отношении изображений для моего приложения,
если я укажу в файле xml, что высота чего-либо [вид изображения] составляет 50 высот
какой тип экрана выбрать из папки ресурсов?
drawable, hdpi, ldpi, mdpi, xhdpi,
чтобы получить изображение высотой 50 пикселей,
и каков процент изображений большего и меньшего размера по сравнению с базовым изображением,
как и в iOS, @ 2x буквально в 2 раза превышает размер изображения, и вы программно говорите нормальный размер,
Благодарность!
Ответы:
mdpi
это эталонная плотность, то есть 1 пиксель на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
, вам следует начать с изображения 144 пикселей (192 пикселей, если вам нужны исходные ресурсы для 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/*
Поместите свой сценарий в папку, а исходные изображения - во вложенную папку, например:
Запустите сценарий оболочки в терминале:
sh createAndroidImages.sh
Чтобы скопировать созданные изображения прямо в проект Android Studio:
cp -R drawable-* ~/AndroidStudioProjects/ESCRating/app/src/main/res/
Готово! Надеюсь, это кому-то поможет!
PS Обратите внимание, что исходные изображения должны иметь как минимум в четыре раза большую ширину в пикселях, чем желаемая ширина в dpi (например, 4 (коэффициент xxxhdpi) * 30dpi => 120 пикселей) для оптимальных результатов.
источник
kcoppock проделал большую работу, объяснив плотность экрана Andorid. Я просто хотел бы добавить еще один момент по поводу исходного вопроса.
Значок средства запуска планшета Android использует одну емкость вверх.
Согласно сообщению в Google+ разработчика Google Ника Батчера
Найдите источник здесь
источник
Вот мои расчеты по масштабированию и уменьшению изображений для Android-
ldpi (120 dpi, экран с низкой плотностью) - 36 пикселей x 36 пикселей (0,19) (1)
mdpi (160 dpi, экран средней плотности) - 48 пикселей x 48 пикселей (0,25) (1,33)
hdpi (240 dpi, экран высокой плотности) - 72px x 72px (0,38) (2)
xhdpi (320 dpi, экран сверхвысокой плотности) - 96 пикселей x 96 пикселей (0,5) (2,67)
xxhdpi (480 dpi, экран сверхвысокой плотности) - 144 пикселя x 144 пикселя (0,75) (4)
xxxhdpi (640 dpi, экран с экстра-сверх-сверхвысокой плотностью) - 192 x 192 пикселя (1,0) (5,33)
Моя небольшая статья полезна для создания ресурсов изображений с помощью imagemagick, когда изображений несколько.
источник