Скелет приложения для поддержки нескольких экранов

Как мы знаем, Android идет с различным устройством, которое имеет разные Особенности, разрешение и размер экрана при разработке приложения, которое поддерживает множественный (маленький и большой) экран есть препятствие размера и макета.

Это приводит к разным сочетаниям размеров экрана, разрешений и DPI и создает довольно сложную задачу при разработке и разработке устройств Android. Хотя некоторые другие производители (не Android) имеют разные разрешения и DPI, они имеют одинаковый размер экрана, а разрешения соответствуют одному и тому же соотношению сторон. Таким образом, изображение может быть создано в соответствии с не Android-устройствами.

Мой вопрос в том, что есть правильный поток или архитектура, которые следует соблюдать для удовлетворения этого требования?

enter image description here

Помните, что у нас есть планшеты разного размера и разрешения.

Я знаю, что Разработчик Android содержит эту информацию, но мой взгляд от реализации.

Насколько я понимаю, для разработки графики Android даже программист должен знать концепцию проектирования.

Ответ 1

Наконец, создана структура, которая обрабатывает макеты и значок для нескольких экранов.

Android обобщает отображение устройств в категории на основе двух параметров:

  • Размер экрана, физический размер дисплея (измеряется по диагонали)
  • Плотность экрана, физическая плотность пикселей дисплея (в пикселях на дюйм или ppi) `

Чтобы быстро определить размер и плотность экрана, установите "" Что мой размер" для Android.

Размер экрана

Android определяет четыре обобщенных размера экрана:


 Qualifier           Size

 small               ~3 inches (approx) 
 normal              ~4 inches (approx) 
 large               Exceeds 4 inches    
 xlarge              Exceeds 7 inches  
  • Большинство телефонов классифицируются как маленькие или нормальные (примерно от 3 до 4 дюймов по диагонали). Но теперь есть много телефонов с большим экраном, таких как Galaxy S4, HTC One, Xperia Z
  • Маленькая таблетка, такая как Samsung Galaxy Tab, классифицируется как большая (более 4 дюймов).
  • Экстра-большой относится к большим устройствам, например, к большим планшетам.

Android определяет четыре обобщенные плотности экрана:


 Qualifier         Description         Nominal value

 ldpi              low density          120 ppi
 mdpi              medium density       160 ppi
 hdpi              high density         240 ppi
 xhdpi             extra high density   320 ppi

Как правило:

  • Размер экрана оказывает наибольшее влияние на макеты приложений.
  • плотность экрана оказывает наибольшее влияние на ваши графические и графические ресурсы.

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

  • Ldpi- 75%
  • Mdpi- 100% (база в соответствии с сайтом разработчика Android)
  • Hdpi- 150%
  • XHdpi- 200%

enter image description here

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

  • Ldpi- 50%
  • Mdpi- 66.67%
  • Hdpi- 100%
  • XHdpi- 133.33%

что означает, что первый значок и дизайн будут созданы только для 480X800, а затем для остальных (например, Ldpi, Mdpi, Xhdpi).

Есть изображения, которые являются общими для всех макетов и должны быть однородными по цвету и форме (без сложной формы, без кривой), поэтому для этого вида изображения мы создаем 9patch, который должен быть помещен в "drawable (no-suffix )". Для создания изображения 9Patch вы можете использовать DrawNinePatch или BetterNinePatch

Теперь просто переименуйте свои изображения на основе стандартов Android и заполните приложение с помощью hdpi, а затем просто возьмите папку drawable-hdpi и откройте Openode Photoshop (рекомендуется) создайте Действие из нескольких размеров (просто измените размер в соответствии с процентным соотношением), как только действие создано для всех размеров, тогда просто выполните Batch Automate и укажите источник (drawable-hdpi) и пункт назначения (drawable-ldpi, drawable-mdpi, drawable-xdpi).

Причина, по которой я настаиваю на том, чтобы использовать Photoshop, потому что он автоматически изменит ваше изображение с помощью Actions, и еще одна плюс - вам не нужно переименовывать файл (он будет присвоить то же имя, что и оригинальный).

после завершения создания всех изображений, обновите проект и протестируйте его.

Иногда может возникнуть вероятность того, что макет, который поддерживает экран (xhdpi, hdpi, mdpi), может быть разрезан на маленьком экране (ldpi), поэтому для его обработки просто создайте для него отдельную папку макета (макет-малый) и добавьте ScrollView (в основном). Вот оно.

Tablet Таблетки классифицируются в два размера.

  • 7 "(1024X (600-48 (панель навигации))) = 1024X552 (с возможностью рисования)
  • 10 "(1280X (800-48 (панель навигации))) = 1280X752 (drawable-xlarge)

В этом случае нам нужно создать изображение для экрана и просто поместить их соответственно

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

drawable
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-large
drawable-xlarge

будет больше комбинации классификаторов с Screen size and Screen density

drawable-large-ldpi
drawable-large-mdpi
drawable-large-hdpi
drawable-large-xhdpi

более квалификатор с Screen density and Version

drawable-ldpi-v11
drawable-mdpi-v11
drawable-hdpi-v11
drawable-xhdpi-v11

и более квалификатор с Screen size and Version

drawable-large-v11
drawable-xlarge-v11

и более квалификатор с Smallest width concept(SW)

 drawable-sw???dp
Более того, в Android V3.0 Honeycomb появилась новая концепция SW(smallest width), в которой устройство классифицируется по ширине экрана, поэтому, если мы создаем папку с именем drawable-sw360dp, то устройство с 720dp (шириной или высотой) будет использовать ресурс из этой папки.

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

px = Ширина устройства = 720
dpi = плотность устройства = 320

приведенная формула

    px = dp * (dpi / 160)

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

    dp = px / (dpi / 160)

теперь значение,

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

поэтому drawable-sw360dp выполнит задание

Получить конфигурацию устройства GsmArena Sameway вы также можете создать папку в соответствии с версией устройства Android API i.e. drawable-hdpi-v11`, поэтому устройство, имеющее API11, и это Hdpi, тогда оно будет использовать эти ресурсы.

Дополнительные советы:

  • Используйте относительные макеты, dp, sp и mm

    dp units - независимые от устройства пиксели, нормированные на 1 физический пиксель на экране с разрешением 160 точек на дюйм, то есть средняя плотность. Масштабируется во время выполнения. Использование для размеров экранных элементов

    sp units - масштабированные пиксели, указанные как значения с плавающей запятой, основанные на единицах dp, но дополнительно масштабируемые для настройки предпочтений размера шрифта пользователя. Масштабируется во время выполнения. Использовать для размеров шрифта

    вы всегда должны использовать RelativeLayout для макетов; AbsoluteLayout устарел и не должен использоваться.

  • Используйте соответствующие форматы изображений - PNG и JPEG

    Android "prefers" PNG for bitmap image files, "accepts" JPEG, and "discourages" GIF.

    Однако PNG и JPEG не являются эквивалентами. У них разные качественные компромиссы, а PNG не всегда лучше:

    JPEG может предлагать до 50% уменьшения размера файла по PNG, что существенно, если ваше приложение интенсивно использует изображения

    JPEG с более высоким качеством "с потерями" может выглядеть лучше, чем сжатый "без потерь" PNG, для того же размера файла

  • Добавьте метки для ваших изображений и графики для отладки

  • Используйте элемент поддержки экранов

  • Настройте свои эмуляторы с реальными значениями устройства

    Обычно настольные системы отображаются на частоте 72ppi (Mac) или 96ppi (Windows, Linux). По сравнению с мобильными настольными дисплеями всегда низкая плотность.

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

    В Eclipse легко создать несколько эмуляторов (из панели меню Eclipse выберите Window > AVD Manager > New), настроенных со значениями для реальных устройств:

    Назовите эмулятор для реального устройства, которое имитирует Укажите разрешение, не используйте Встроенные общие размеры Установите плотность устройства в соответствии с реальным устройством (в аппаратной панели задано абстрактное свойство LCD для реальной плотности, всегда целочисленное значение)

    При запуске устройства всегда выберите "Масштаб" в реальном размере и введите реальный размер экрана в дюймах.

    Если вы не устанавливаете плотность устройства, эмулятор по умолчанию имеет низкую плотность и всегда загружает ресурсы, специфичные для ldpi. Разрешение (размеры пикселей) будет правильным, но ваши ресурсы изображения, зависящие от плотности, не будут отображаться, как предполагалось.

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

Вот данные, собранные в течение 7-дневного периода, заканчивающегося 1 октября 2012 года. Чтобы увидеть последнюю статистику о версии платформы Android, перейдите сюда

В зависимости от размера экрана

enter image description here

Основываясь на плотности экрана

enter image description here

Ответ 2

Дизайнеры должны создавать базовые проекты

base size of mdpi devices * density conversion factor of highest supported density bucket
size.Base размер экрана 320 × 480 пикселей и плотность ковшей:

  • ldpi: 0.75
  • mdpi: 1.0 (базовая плотность)
  • hdpi: 1.5
  • xhdpi: 2.0
  • xxhdpi: 3.0
  • xxxhdpi: 4.0

А для решения проблем с дополнительным доступным пространством на устройствах Android следует использовать растяжимые компоненты в обоих направлениях (по горизонтали и по вертикали). Подробная информация доступна здесь:

http://vinsol.com/blog/2014/11/20/tips-for-designers-from-a-developer/