Переносим нативный UX c iOS на Android.

Давным давно, на заре iPhone 4S я купил себе Nexus One, и был невероятно поражен этим устройством. Вся палитра возможностией кружила голову, оставляя чувство превосходства перед счастливыми обладателями iPhone. Но шло время, я работал над приложениями, и мне понадобился iPhone для работы над iOS приложением. С тех пор я забил на Android.

И вот в этом году, уже после выхода Nexus 6 и material design. Мне потребовалось перенести приложение сделанного в нативном стиле для iOS в парадигму material design на Android. Захожу в https://www.google.com/design/spec/material-design/introduction.html и начинаю увлекательное чтиво.


Крутизна и провалы самых мощных гайдлайнов в мире

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

Tooltip с квадратными краями в гайдлайне.

Например, в гайдах есть очень подробные описание тултипов (подсказок) для неочевидных элементов. В гайдлайнах они квадратные, но на устройстве они круглые. И эта мелочь заставила меня внимательнее смотреть насколько эти гайдлайны на самом деле актуальные.

На самом деле на устройстве тултипы со скруглёнными краями

В результате вскрылось большое количество как маленьких, так и больших расхождений родных приложений Google с их собственными гайдлайнами. Вплоть до того, что Floating Action Button — визитная карточка material design везде выглядит по-разному и имеет разную тень.

Почему так получилось?

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

Например, App Drawer менялся от алфавитного списка (слева) к списку всех приложений как на ранних версяих Android (справа)

Основные особенности, которые нужно учесть при переносе iOS приложения на Android

Основные сложности с переносом приложения с iOS на Android заключались в следующих моментах:

  1. Логика. Списки элементов в андроиде как правило не содержат настроек и выключателей, в то время как для iOS нормальная практика, например в профиле размещать информацию о профиле и следом выключатель уведомлений. А для андроида всё располагается как правило по-програмистски логично. Контент отдельно, взаимодействия отдельно.
  2. Много не подписанных иконок. Будь то множество табов, действия при входящем звонке, или действия с несколькими выделенными элементами очень часто требуют подписи, и тултипы их не спасают. Я думаю, что при дизайне приложений на андроид стоит стараться минимизировать количество иконок. Особенно новых. Если получится оставить только иконки копирования и удаления без подписей, то будет вообще идеально.
  3. Нельзя склеивать звонки. И действительно, почему? В совокупности с предыдущим пунктом это становится какой-то катастрофической проблемой. Тут только приходится изобретать велосипед и вносить в систему ещё больше разрозненности. (об этом ниже)
  4. Свайпы. На iOS свайпы удаляют элементы или открывают возможности взаимодействия с элементом. (удалить, архвировать, переслать и т.п.) На Android же свайпами перемещаешься между табами. Но и тут есть исключения, например, в поче по свайпу всё-таки удаляется письмо.
  5. Свобода. На Android можно избавить пользователя от некоторых этапов надоедливой валидации. Например, приложение само может прочитать код из СМС и подтвердить номер телефона.

Выводы

У меня сложилось ощущение, что Material design потрясающе подходит для создания сервисных приложений, но чуть хуже работает для социальных приложений. Например, если нужно проработать взаимодействия при входящем звонке или при групповых разговорах, то в гайдах вряд ли удасться найти что-то полезное по этому поводу. Придётся всё придумывать с самостоятельно.

Насколько бы потрясающими гайдами Android не обладал, в системе по-прежнему не хватает постоянства как визуального так и в поведении. Ярким примером отсутсвия такого постоянства являются свайпы по пунктам меню или спискам. Никогда не знаешь заранее в каком приложении свайп по пункту меню удалит пункт меню, а в каком это же движение перенесёт тебя на соседний таб. Возможно, эти недостатки существуют из-за отсутствия готовых решений исполненных в философии material design. Или из-за слишком мягкой политики модерации. Вот ещё пара чудовищных примеров: чего стоит сворачивание чата в Facebook Messenger в шарик поверх всего интерфейса или бесконечно висящий в шторке уведомлений Skype. Особенно такие решения выглядят дико после iOS, где ты контролируешь приложения, а не они управляют твоим телефоном 😉

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