Боротьба з «фрагментацією»: розробники вимикають підтримку декількох екранів

Android працює на різних пристроях, що означає, що він також працює на екранах різних розмірів і дозволів. Багато хто називає це «фрагментацією». Не беріть в голову той факт, що вони використовують продукти, розроблені і розроблені протягом багатьох років на своєму робочому столі. Мабуть, якщо все не зовсім так, він отримує ярлик «фрагментація».

Існують різні способи вирішення проблем, що виникають при використанні екранів різних розмірів і щільності. Apple має окремі списки для додатків, розроблених для iPhone проти iPad. Microsoft створює нову екосистему для своїх пристроїв з великим екраном. Android надає розробникам можливість змусити один і той же додаток працювати по-різному для різних екранів. У кожному методі є свої плюси і мінуси, але ми збираємося зосередитися на Android тут.

В Android програми можуть налаштовувати макет для екранів різних розмірів, а також роздільну здатність. Це все вбудовано, але розробникам потрібно кілька речей, які потрібно оголосити в своєму коді, щоб додаток виглядав добре. Важливо пам'ятати, як розмір і щільність екрана змінять вигляд програми. У Droid DNA екран з вищою роздільною здатністю, ніж у планшета Motorola XOOM, але ми не хочемо бачити макет планшета для додатків на екрані розміром з телефон.

Розробник повинен надати ресурси (зображення) достатньо високої якості, щоб вони виглядали чіткими при високій роздільній здатності (не кажучи вже про шалено високу роздільну здатність), і обов'язково використовуйте незалежні від щільності одиниці пікселів при розробці свого макета. Це те, що заважає таким речам, як кнопки та інші елементи керування, бути дійсно великими на екранах низької щільності, таких як Galaxy S2, або бути дуже маленькими на екранах високої щільності, таких як ДНК.

Звучить складно, але велика частина цього матеріалу зроблена для вас при написанні коду програми. Все, що потрібно зробити розробнику, це зробити правильні декларації та надати потрібні ресурси для підтримки будь-якого розміру (як фізичного, так і дозволу) або макета. Навіть кілька програм макета, таких як додаток Google +, використовують один і той же код, щоб охопити всі мислимі екрани.

Ми не намагаємося судити розробників тут. Написання додатків складно. Розробники Android проповідують все це з моменту випуску Gingerbread, але наскільки це практично? Ми запитали про це кількох розробників, подивимося, що вони скажуть після перерви.

Докладніше: сайт Google для розробників Android.

Ми поставили жменьці розробників (великих і маленьких) пару основних питань з цього питання.

  • Наскільки складно дотримуватися рекомендацій?
  • На папері це виглядає просто, але чи є якісь особливі проблеми, які ви бачили, або деталі, які Google не розглянув?
  • Як це вплинуло на час розробки і витрати, якщо взагалі?
  • Що-небудь ще про предмет, яким ви хотіли б поділитися?

Я намагався зробити питання якомога більш нейтральними, щоб ми не заглиблювалися в це з деякою упередженістю. Якщо ви сумніваєтеся, ви питаєте людей, які знають, вірно? Я виконав свою частку програмування, але кодування на Java і створення додатків для Android сильно відрізняється від написання коду на C, машинного коду або навіть Perl. Є нюанси, які я не розумію, навіть якщо у мене є загальні методи створення програми.

Я думаю, багато хто з вас, хлопці, схожі на мене і не знають тонкощів створення додатків для Android. Ми бачимо тільки те, що говорять розробники Android, і вони змушують це звучати легко. Для них це, ймовірно, так - вони писали цей матеріал з нуля з 2007 року. Подивимося, що скажуть люди, які змогли піти за ними.

Джо Сімпсон (@ kennydude) - Боїд

Джо є членом Team Boid, а також самостійно публікує додатки. Він (і інша частина його команди) - відмінний приклад незалежних розробників з пристрастю до Android, які випустили кілька дивовижних додатків.

Дотримуватися рекомендацій досить складно, особливо якщо ви хочете мізерний додаток, але людям потрібна зворотна сумісність. Одна з найбільш дратівливих речей - це подивитися на d.android.com/design [сайт Google для розробників Android], але нічого не дізнатися про те, як насправді це зробити.

Слабким місцем є оновлення, коли ви фізично не можете використовувати GCM [Google Cloud Messaging] через Twitter, і ви не хочете використовувати PtR [Pull to Refresh]. Крім того, додатки Google складають свої власні рекомендації. Візьмемо, наприклад, панель слайдів: Google + робить це не так, як YouTube (хоча я знаю, що бібліотека підтримки сподівається вирішити цю проблему).

Крім того, ви можете дістатися до точки, і немає документації щодо чого-небудь (наприклад, Ed^ Effect).

Я студент, так що витрати - це те, що я не дивлюся, так, це вимагає часу, але ваші користувачі будуть любити вас. В принципі, прямі трансляції (ADiA, App Clinic, Office Hours) є необхідністю (на жаль), хоча вони не можуть дати відгук про додатки Google.

Boid скоро вийде з відкритим вихідним кодом (ууу!), І ви можете знайти саму програму в Google Play. Ви також знайдете всі додатки Джо (там є коштовності) прямо тут.

Крістоф Версьє - BeTrains - SNCB Бельгія; HoloEverywhere

Christophe створив безліч програм для Android, у тому числі BeTrains - SNCB Belguim - додаток з чудовим макетом, який показує, що можна зробити за допомогою добре побудованої програми. Хоча більшість у США ніколи не будуть його використовувати (це розклад поїздів для бельгійських рейок), варто встановити його, щоб подивитися, наскільки добре це зроблено. Люди в Західній Європі напевно знають про це.

Крім того, він спільно розробив HoloEverywhere, бібліотеку, яку інші розробники можуть використовувати для створення додатків у стилі Holo для Android 2.1 і вище. Оскільки багато телефонів як і раніше працюють з Gingerbread, це справжнє задоволення для розробників, які хочуть, щоб їхні додатки виглядали актуально.

Це зовсім не складно. Жарти вбік. Важка частина настає, коли клієнт просить уникнути цих рекомендацій!

Я пам'ятаю клієнта, який хотів, щоб я поміщав вкладки внизу екрану, кнопки iPhone всюди, перемикачі в стилі iPhone, і цей проект був дійсно важким, і я дійсно втратив на ньому багато часу і грошей.

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

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

Такі бібліотеки, як Ac^ BarSherlock, HoloEverywhere (моє творіння), UnifiedPreferences і SlidingMenu, дійсно прості у використанні і забезпечують кілька рядків коду дивовижним користувальницьким інтерфейсом.

Час і вартість, як я вже сказав, зведені до мінімуму завдяки дотриманню правил Google. Фрагменти і теки з макетами дійсно прості у використанні (і, що більш важливо, їх можна використовувати повторно): додаток для планшета просто бере фрагмент коду з макета телефону, і нічого не потрібно переписувати. Невеликі зміни в додатку телефону негайно відображаються в додатку планшета, оскільки використовується той же фрагмент.

Деякі дивовижні проекти створюються спільнотою, а не завжди Google. Деякі люди, дуже активні в Google +, такі як Роман Нурік (Google), Рето Мейєр (Google) Юхані Лехтімякі, Джейк Уортон, Тейлор Лінг,... (я завжди боюся забути важливих людей) дуже повчальні. Розробникам просто потрібно знати, де шукати, і розробка Android буде для них легкою!

Ви можете знайти BeTrains в Google Play, і вам захочеться поглянути на HoloEverywhere, якщо ви зацікавлені в розробці Android.

Метью Руно - Zappos

На відміну від деяких незалежних розробників, з якими ми говорили, ми також чули від Метью з Zappos. Zappos - це корпорація, що займається роздрібною торгівлею через Інтернет, і, ймовірно, має виділений бюджет на розробку дизайну свого веб-сайту і додатків. Це також компанія, яку я регулярно купую, але це не мало ніякого відношення, і Метью не знав, що я частий клієнт, коли він добровільно зголосився.

У Zappos, оскільки ми є рітейлером, ми повинні в першу чергу дотримуватися нашого власного бренду. Дивно, весело і трохи від стіни. Тим не менш, ми обидва твердо віримо в принципи розробки Android - і все, що ми робимо в користувальницькому інтерфейсі, взято з духу цих правил. Рік тому наш додаток був в основному портом iOS з того, як він виглядав і працював. Сьогодні це (я думаю) перлина того, що ви можете зробити в Android. Ми дотримуємося керівних принципів, коли це можливо, і наші дизайнери використовують їх як відправну точку.

Керівництва з проектування не є остаточними, зрештою, вони просто намагаються просунути дизайн додатків для Android, щоб вони були більш послідовними. Ми виявили, що більшість поширених «нових» бібліотек з відкритим вихідним кодом, які ми використовували, виявилися частиною керівних принципів (ковзне меню, крутон).

Керівні принципи ніколи не повинні стримуватися. Певні речі - загальна навігація - повинні бути узгоджені, щоб ваш додаток «просто працював». Все інше - почніть з керівних принципів і біжіть з вашим дизайном. Ми хочемо, щоб наш додаток був НАШ ДОДАТОК - тому ми не можемо просто зробити базову голографічну тему.

Цього року ми в основному почали з переписування нашого додатку для роботи з фрагментами. В останні 6 місяців ми старанно працювали над додаванням 7-дюймової підтримки планшетів, і в даний час ми працюємо над 10-дюймовою підтримкою. Найскладніше - це тестування на пристроях, але у нас є відмінна команда QA, яка допомагає з цим. З серпня близько 2 осіб працювали над нашим додатком повний робочий день, до цього це була 1 людина.

Суть у тому, що, я думаю, керівні принципи проектування Android допомагають нам спростити наш процес - і тим самим скоротити витрати. Подивимося правді в очі, більшість дизайнерів з iOS - так що наявність такого чудового ресурсу, як design.android.com, є прекрасною допомогою, щоб допомогти їм почати роботу в екосистемі Android.

Я можу сказати, що дизайнерські рішення Zappos працюють добре, і у моєї дружини є шафа, повна одягу, гаманців і черевиків, які підтверджують мою думку. Перевірте їх Android-додаток з Google Play.

Джош Бертон - jRemote

Джош є автором безлічі невеликих додатків для Android, і його додаток jRemote (це контролер для популярної програми jDownloader для ПК) є прекрасним прикладом того, як використовувати макети для створення програми, яка відмінно виглядає як на телефоні, так і на планшеті. Це максимально збільшує використання екрану пристрою і дає вам інформацію, яку ви шукаєте, саме так, як ви очікуєте.

Дотримуватися рекомендацій по дизайну досить просто, якщо ви будете дотримуватися їх з самого початку. Розробка всього додатка, а потім, в кінці, повернення і спроба реалізувати фрагменти/макети планшетів і т. Д. Будуть марною тратою часу, зусиль і розчарувань. Але якщо ви сплануєте свій додаток, почнете розробляти з використанням фрагментів і створите свої ресурси для всіх правильних сегментів dpi, це зробить розробку швидким, і вам дійсно не потрібно витрачати багато часу на обмірковування рекомендацій. І якщо ви застрягли, дизайн документів тільки на відстані одного кліка. Вони відмінний ресурс.

Мене дійсно засмучує те, що на багатьох пристроях немає макетів планшетів. Якщо ваша програма побудована з використанням фрагментів, додавання макета планшета може бути виконано за 30 хвилин. Чесно кажучи, це так просто.

Я думаю, що для багатьох розробників у них немає планшетних пристроїв для тестування, і використання емулятора може бути проблемою. Але тільки що випущені нові інструменти ADT роблять це набагато простіше. Мультиконфігурація в редакторі макетів означає, що ви можете бачити, як виглядає ваш макет, на 5-6 екранах різних розмірів одночасно. І це швидко. Звичайно, вам все одно доведеться тестувати на емуляторі/пристрої, але це безумовно прискорює робочий процес.

jDownloader - зручна програма для використання на вашій стільниці, і jRemote виглядає як чудовий спосіб керування нею. Якщо нічого іншого, скачайте його з Google Play і подивіться, як додаток може бути простим і красивим одночасно.

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