Размер экрана устройства Android с поддержкой больших экранов

Я провел много исследований, но чувствую, что не совсем понял всю систему поддержки экранов разных размеров.

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

Поэтому я предположил, что хочу поддержать следующее,

нормальный размер экрана
MDPI - да HDPI - да XHDPI - да

До сих пор я предполагал следующее,

нормальный экран, MDPI - 320x480 - 160ppi нормальный экран, HDP - 480x800 - 240ppi нормальный экран, HDDP - 640x960 - 320ppi

Проблема в том, как вы определяете ресурсы для экрана? 720x1280? Использую ли я ресурсы, определенные для 640x960?

Что-то вроде S3

4 ответа

Решение

Я уже указывал здесь приложение-скелет-на-поддержку-несколько экранов с точки зрения дизайнера.

Здесь указана процентная разница экрана устройства

Ldpi- 75%
МДПи- 100%
HDI-150%
XHdpi- 200%

Но, как мы теперь знаем, большинство устройств поставляются с 480X800, поэтому я считаю, что это устройство на основе, поэтому наш новый расчет будет таким

Лдпи- 50%
Тпд- 66,67%
HDI- 100%
XHdpi - 133,33%

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

Теперь об устройствах, которые идут с высоким разрешением 720х1280, т.е. S3

у вас есть классификатор с концепцией наименьшей ширины (SW), представленный в Android V3.0 Honeycomb

вытяжка-SW??? дп

Устройства подразделяются на ширину экрана, поэтому, если мы создаем папку с именем drawable-sw360dp тогда устройства с 720dp(шириной или высотой) будут использовать ресурс из this папка.

например, чтобы найти Samsung Galaxy S3 dp к суффиксу drawable-sw?dp С учетом вычисления DP, если вы хотите поддержать свой макет или сделать его доступным для S3, тогда вычисление говорит

px= ширина устройства = 720
точек на дюйм = плотность устройства = 320

формула дана

px = dp * (dpi / 160)

меняя формулу, потому что у нас есть значение px

dp = px / (dpi / 160)

сейчас оцениваю,

 dp= 720 / (320/160);
 dp=360. 

так drawable-sw360dp сделает работу для S3

Получите конфигурацию вашего устройства от GsmArena. Таким же образом вы также можете создавать папки для разных устройств (неудобных / последних)

Вы также можете добавить суффикс к этому значению к вашей папке макета тоже layout-sw360dp

Я также согласен с другими людьми, которые разместили ссылку на " Поддержка нескольких экранов" на веб-сайте Android-разработчика, поскольку это отличный ресурс, позволяющий понять разницу между классами (маленькими, обычными, большими) экранов и разной плотностью экранов. (ldpi, mdip, hdpi).

Есть также очень интересная статья о метриках и сетках, которая мне очень помогла.

Вы также должны сохранить шкалу пикселей, чтобы погрузиться в затылок:

ldpi: 1dp = 0.75px, mdpi: 1dp = 1px, hdpi: 1dp = 1.5px а также xhdpi: 1dp = 2px

Мне лично нравится ассоциировать ldpi с разрешением около 240x320, mdpi с 320x480, hdpi с 480x800 и xhdpi с чем-либо большим, например с SGS3.

Например, ссылка на Metrics and Grids гласит, что кнопка должна быть не менее 48dp. Это означает, что если вы хотите создать кнопку с размером 48x48, что переводится как 48x48 px for mdpiВы также должны предоставить графическое изображение 96x96 px for xhdpi, 72x72 px for hdpi а также 36x36 px for ldpi,

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

Это довольно очевидно, вы должны попытаться создать графику с максимально возможным разрешением (например, xhdpi), а затем уменьшить его до hdpi, mdpi и ldpi.

Еще один совет, с которым я столкнулся, к которому у меня больше нет источника, заключается в том, чтобы использовать папку ресурсов в Android, так как это будет намного лучше для производительности, по сравнению с предоставлением только большого изображения, и позволит ОС уменьшать его масштабирование. идти ( Но в этом так посте есть несколько веских аргументов в ответах)

Вы должны попробовать что-то вроде этого: Для преобразования из displayPixels в Pixels

(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics());

и для пикселей на screenPixels

(pixels / context.getResources().getDisplayMetrics().scaledDensity);

Ты можешь использовать SVG библиотека для векторной графики и очень полезна для поддержки экранов с несколькими разрешениями, исходный код здесь

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