Скелет програми для підтримки декількох екранів


92

Як ми знаємо, що Android постачається з різними пристроями, які мають різні функції, роздільну здатність та розмір екрану, тому при розробці додатка, що підтримує кілька (малого та великого) екрану, існує перешкода щодо розміру та макета.

Це призводить до різних комбінацій розмірів екрана, роздільної здатності та DPI та створює значну проблему при розробці та розробці пристроїв Android. Хоча деякі інші виробники (не Android) мають різну роздільну здатність та DPI, вони мають однаковий розмір екрана, а роздільна здатність відповідає однаковому співвідношенню сторін. Таким чином, зображення можна створити, щоб відповідати пристроям, що не є Android.

Моє питання полягає в тому, чи існує належний потік чи архітектура, якої слід дотримуватися, щоб задовольнити вимоги?

введіть тут опис зображення

Пам’ятайте, у нас є планшети різного розміру та роздільної здатності.

Мені відомо, що розробник Android містить цю інформацію, але, на мою думку, це стосується впровадження.

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


13
Ви, хлопці, впевнені, що це питання не є конструктивним?
Mohammed Azharuddin Shaikh

6
Я думаю, це дуже конструктивно. Хотіли б знати причини голосування проти.
Ледачий Ніндзя

11
@MKJParekh візьміть MicroMax Funbook gsmarena.com/micromax_funbook_p300-4701.php, чи 7", 480X800, Ldpi (133 dpi) можете ви сказати мені, в яку категорію (велике розмірне розмірне зображення або Ldpi або якщо Android v3.0 sw-480) воно потрапить?
Мохаммед Ажаруддін Шейх

1
@LazyNinja причина голосів проти - божевільні та божевільні люди. Хто просто думає, що може задавати лише конструктивні запитання: p
AZ_

1
@AZ_ :) Ми використовували цю структуру res у папці res drawable drawable-hdpi drawable-hdpi-v11 drawable-hdpi-v9 drawable-large drawable-large-hdpi drawable-ldpi drawable-mdpi drawable-mdpi-v11 drawable-small drawable- xhdpi drawable-xhdpi-v11 drawable-xxhdpi drawable-xxhdpi-v11 layout layout-small layout-sw530dp layout-sw720dp layout-xlarge values ​​values-sw530dp values-sw720dp values-v14 values-xlarge і використовував чітко визначені розміри в xml із папки значень . Наша програма FYKI підтримує більше 5 тис. Типів пристроїв.
MKJParekh

Відповіді:


147

Нарешті створили структуру, яка обробляє макети та піктограми для декількох екранів.

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%

введіть тут опис зображення

Але, як ми зараз знаємо, більшість пристроїв поставляються з 480X800, тому я вважаю це базовим пристроєм, тому наш новий розрахунок сподобається

  • Ldpi - 50%
  • Мдпі - 66,67%
  • Hdpi - 100%
  • XHdpi - 133,33%

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

Є зображення, які є загальними для всіх макетів і повинні бути однорідними за кольором та формою (не мають складної форми, не мають кривої), тому для такого типу зображення ми створюємо його, 9patchяке буде поміщено в папку «з можливістю малювання (без суфікса)». Для створення образу 9Patch ви можете використовувати DrawNinePatch або BetterNinePatch

Тепер просто перейменуйте свої зображення відповідно до стандартів Android і заповніть свою програму, hdpiа потім просто візьміть drawable-hdpiпапку і відкрийте Adode Photoshop (рекомендується), створіть дію декількох розмірів (просто змініть розмір відповідно до процентного співвідношення), коли дію створите для будь-якого розміру, просто виконайте Пакетна автоматизація та надання джерела (drawable-hdpi) та призначення (drawable-ldpi, drawable-mdpi, drawable-xdpi).

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

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

Іноді може бути ймовірність того, що макет, який підтримує екран (xhdpi, hdpi, mdpi), може бути вирізаний на маленькому екрані (ldpi), тому для обробки цього просто створіть окрему папку Layout (layout-small) для нього та додайте ScrollView(переважно). Це воно.

Таблетки Планшети поділяються на два розміри.

  1. 7 "(1024X (600-48 (навігаційна панель))) = 1024X552 (велика для малювання)
  2. 10 "(1280X (800-48 (панель навігації))) = 1280X752 (малюнок-великий)

Для цього нам потрібно створити зображення як для екрану, так і просто розмістити їх відповідно

Отже, загалом у нас буде ця папка в нашому додатку для підтримки декількох екранів.

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 пристрою, тобто drawable-hdpi-v11`, тому пристрій, який має API11, і це Hdpi, тоді буде використовувати ці ресурси.

Додаткові поради:

  • Використовуйте відносні макети, dp, sp та mm

    dp блоки - незалежні від пристрою пікселі, нормалізовані до 1 фізичного пікселя на екрані 160 ppi, тобто середньої щільності. Масштабовано під час виконання. Використовуйте для розмірів елементів екрану

    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 без втрат при однаковому розмірі файлу

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

  • Використовуйте елемент support-screen

  • Налаштуйте емулятори на реальні значення пристрою

    Звичайно настільні системи відображаються зі швидкістю 72ppi (Mac) або 96ppi (Windows, Linux). У порівнянні з мобільними, настільні дисплеї завжди мають низьку щільність.

    Завжди налаштовуйте свої емулятори Android на імітацію реальних значень пристрою, і завжди встановлюйте їх масштабування, щоб імітувати щільність пристрою.

    В Eclipse легко створити кілька емуляторів (на панелі меню Eclipse виберіть « Вікно»> «AVD Manager»> «Новий» ), налаштованих зі значеннями для реальних пристроїв:

    Назвіть емулятор для реального пристрою, на який він емулює, Вкажіть роздільну здатність, не використовуйте вбудовані загальні розміри Встановіть щільність пристрою відповідно до реального пристрою (на панелі апаратного забезпечення встановіть Abstracted LCD Properties на реальну щільність, завжди ціле значення)

    Під час запуску пристрою завжди вибирайте масштабувати дисплей до реального розміру та введіть реальний розмір екрана в дюймах.

    Якщо ви не встановите щільність пристрою, емулятор за замовчуванням має низьку щільність і завжди завантажує ldpi-ресурси. Роздільна здатність (розміри пікселів) буде правильною, але ресурси, що залежать від щільності, не відображатимуться належним чином.

    Звичайно, ніщо з того, що ви робите, не відтворюватиме зображення високої щільності на дисплеї з меншою щільністю робочого столу.

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

Виходячи з розміру екрану

введіть тут опис зображення

На основі щільності екрану

введіть тут опис зображення


2
Для Samsung Galaxy Tab 7 "ми повинні тримати зображення у
форматі drawable

@rajpara є багато комбінацій та перестановок, ми будемо включати всі такі випадки пізніше.
Мохаммед Ажаруддін Шейх

1
дивіться @AlexBonel, я погоджуюсь з вами, але мій головний девіз - усвідомити, як можна робити щось, коли мова заходить про підтримку багатоекранного режиму. Можна змінити / маніпулювати цим потоком / концепцією, оскільки вищезазначене дає зрозуміти початкову проблему. До того ж я теж роблю модифікації на основі дизайну програми. Ваш допис дає мені зрозуміти, що ви зрозуміли цю концепцію. Сподіваюся, ви зрозуміли мою думку.
Мохаммед Азжаруддін Шейх,

1
Приємна відповідь. Після багатьох та багатьох днів пошуку, чому трапляються ці винятки, я отримав цю публікацію як найкращу відповідь із чудовим прикладом та поясненням. наприклад, розгляньте 7-дюймовий планшет Halo Value. PPI = 133. Роздільна здатність = 480 * 800. Розмір = 7 'дюймів. Якщо ми розглядаємо mdpi як основу, він повинен приймати розмірність, визначену в values-sw480, але вона бере розмірність у values-sw600. Не зрозумів, чому це відбувається. Дійсно дякую за ваш пост. Збережіть втрачені час і очистіть плутанину. Я думаю, це повинно бути на офіційному сайті Android. Цінують ваші зусилля.
Smeet

1
Я думаю, що це найкраща відповідь, яку я коли-небудь бачив. Я давно шукаю таку відповідь. І нарешті я зрозумів. Дякуємо всім, хто долучився за цю відповідь, щоб зробити її більш зрозумілою.
Hiren Dixit,

1

Дизайнери повинні створити базові конструкції

base size of mdpi devices * density conversion factor of highest supported density bucket
Основний розмір екрану становить 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/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.