Подтвердить что ты не робот

Как работает папка mdpi, hdpi, xhdpi?

Извлечь из ссылки разработчика Android Developer выше:

320dp: обычный экран телефона (240x320 ldpi, 320x480 mdpi, 480x800 hdpi и т.д.).
480dp: таблетка для tweener, такая как Streak (480x800 mdpi).
600dp: 7-дюймовый планшет (600x1024 mdpi).
720dp: 10-дюймовый планшет (720x1280 mdpi, 800x1280 mdpi и т.д.)

Итак, я получил графику (изображения) с разрешением 320 пикселей на дюйм от дизайнера только в этих измерениях

480x800 hdpi

720x1280 mdpi

800x1280 mdpi

Я запутался, какой размер изображений следует поместить в папку mdpi, папку hdpi и папку xhdpi. Я хочу сделать одно приложение, которое может работать на большинстве телефонов и планшетов Android.

4b9b3361

Ответ 1

Вы можете создавать разные графические объекты для использования при разных значениях плотности пикселей. Android обрабатывает mdpi (160 пикселей/дюйм) в качестве базовой плотности. Итак, для устройств mdpi, 1 dp = 1 пиксель. При более высоких плотностях на пиксель больше пикселей (240 для hdpi, 320 для xhdpi). Android пытается сделать графические изображения занимают одинаковые физические размеры на экране, независимо от плотности пикселей устройства. Поэтому, если все, что он находит, является ресурсом mdpi, а устройство - hdpi, оно масштабирует графику на 240/160 = 150%, и это удвоит размер графика для xhdpi.

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

Обратите внимание, что пиксели/дюймы, которые были сохранены в файле изображения, не имеют к этому никакого отношения. Все это основано на размещении графических файлов в каталоге ресурсов для вашего проекта. Предполагается, что любая графика, помещенная в res/drawable, имеет надлежащий размер для дисплеев mdpi, а также графики, размещенные в res/drawable-mdpi. Файлы изображений, которые он находит в res/drawable-hdpi, считаются надлежащим образом подобранными для дисплеев hdpi и т.д. Когда ваша программа запускается на определенном устройстве, Android сначала ищет графику, которая соответствует плотности экрана этого устройства. Если он не найдет его, а вместо него найдет его для другой плотности, он будет использовать его и автоматически масштабирует изображение на основе вышеуказанных правил.

Ответ 2

Когда вы запрашиваете ресурс, для которого вы предоставляете альтернативы, Android выбирает, какой альтернативный ресурс использовать во время выполнения, в зависимости от текущей конфигурации устройства. Чтобы продемонстрировать, как Android выбирает альтернативный ресурс, предположим, что следующие доступные каталоги содержат разные версии одних и тех же изображений:

drawable/
drawable-en/
drawable-fr-rCA/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/

И предположим, что следующая конфигурация устройства:

Locale = en-GB 
Screen orientation = port 
Screen pixel density = hdpi 
Touchscreen type = notouch 
Primary text input method = 12key

Сравнивая конфигурацию устройства с доступными альтернативными ресурсами, Android выбирает чертежи из drawable-en-port.

Система принимает свое решение, для которого ресурсы могут использоваться со следующей логикой:

enter image description here

Ссылка: Как Android называет наилучший ресурс

Другие ссылки: Независимость от плотности, Предоставление альтернативных ресурсов и Лучшие практики

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

Ответ 3

Я запутался во всей фрагментации размера экрана, но основы: 1. Вам нужно создать различные папки под макетами для работы с вашими изображениями 2. Изображения будут существовать в папках drawables также в разных папках. 3. У вас должна быть папка basic/layout и /drawable для сопровождения неспецифических папок 4. Работайте с xhdpi, затем уменьшите изображение вниз!

Примеры конкретных экранов экрана: /Макет-ИПЧР /Макет-xhdpi /Вытяжка-ИПЧР /Вытяжка-xhdpi

Из того, что я знаю: 480 x 800 - hdpi (более старые телефоны, например S2, HTC Desire и т.д.) 720 x 1280 xhdpi (новые телефоны, например S3, Galaxy Nexus и т.д.)

В принципе, в зависимости от телефона, андроид будет захватывать ресурсы из необходимой папки, а если их нет, то он будет извлекать из основной папки "\ layout" или "\ drawable". Например, приложение, работающее на Galaxy Nexus, будет захватывать ресурсы из "\ layout-xhdpi", если папка существует.

Ответ 4

да, вы можете создать одно приложение, но вам нужно создать папки:/res/drawable,/res/drawable-mdpi,/res/drawable-hdpi и добавить контент для всех размеров экрана