Мобайл: дизайн и разработка – Telegram
Мобайл: дизайн и разработка
473 subscribers
8 photos
158 links
Android-разработчик и дизайнер делится своим опытом, полезными инструментами, выжимками статей и докладов.
Download Telegram
Еще одна подборка Best Practices, на этот раз по Android-приложениям. Некоторые вещи довольно очевидны, а о некоторых я раньше не слышал (например, о проблеме матрешки, касающейся вложенных фрагментов). В любом случае, будет полезно почитать и подумать о том, всё ли вы делаете правильно 😉

Кстати, аналогичные подборки есть для iOS и Windows. Про их качество и полезность ничего сказать не могу, но надеюсь, кому-нибудь они пригодятся.
Как писать адаптеры для списков с разными типами элементов, не используя касты и instanceof/is, и соблюдая Open-Closed Principle.
Код в статье написан на Kotlin, но все описанное подойдет и для Java.

https://medium.com/@dpreussler/writing-better-adapters-1b09758407d2
Гайдлайны Material Design обновились – Google добавили инструмент для подбора палитры. Можно составить схему из цветов, которые есть в гайдлайнах, или использовать любой другой цвет. Обновление также коснулось текстовых полей и гайдлайнов по иконкам для Right-To-Left лейаутов.
Интересный гайд по анимированию элементов в Constraint Layout.

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

Всем хорошей рабочей недели!
📈 Небольшая вводная статья для разработчиков про аналитику в приложениях.

Что, как и где отслеживать, какие инструменты использовать и как не нарушить приватность пользователей.

https://medium.com/@sergii/the-key-concepts-of-app-tracking-for-developers-a11bebf1e65e
Если вы читали гайдлайны Material Design, то наверняка встречали раздел Launch screens, в котором идеть речь про экраны, которые пользователь видит во время загрузки приложения. Вот презентация для Android-разработчиков о том, как создавать такие экраны, отслеживать время их запуска и обеспечивать совместимость со всеми платформами.
📄 Лицензирование open-source приложений

Если вам, как и мне, эта тема кажется скучной и из-за этого вы откладываете её освоение, то теперь у вас нет отговорок – я собрал для все, что нужно. 😉

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

Если очень уж лень читать, а лицензию выбрать надо, вам поможет сайт choosealicense.com. Исходя из того, что вам нужно, он предложит нужную лицензию, перечислит её особенности, а также приложит сам текст лицензии.

Еще я нашел пару полезных плагинов для Gradle:
- Gradle License Report собирает в одном месте информацию о лицензиях, которые используются в зависимостях проекта
- License Gradle Plugin пригодится, если вам нужно прикладывать текст лицензии к каждому файлу проекта (этого требует, к примеру, Apache License 2.0)

Проекты без лицензии никто не сможет использовать, а это противоречит самой идее open source. Так что разбирайтесь и лицензируйте. Это не сложно. ✌️
Почему спиннеры вредят UX и что лучше использовать вместо них

Главное:
- из-за спиннеров кажется, что загрузка происходит дольше, чем на самом деле
- пользователи не знают, что и когда появится в результате загрузки
- вместо спиннеров лучше использовать skeleton screens – экраны, приближенные к финальному состоянию

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

Оригинал | Перевод
Прокачиваем адаптеры с помощью Data Binding – меньше бойлерплейта и больше гибкости.

https://medium.com/google-developers/android-data-binding-recyclerview-db7c40d9f0e4
🕹 Что нужно учесть, проектируя навигацию в приложении

Если вы решили добавить в приложение bottom navigation, важно не переусердсововать - вы можете усложнить навигацию вместо того, чтобы её упрощать.

- Используйте bottom navigation только для самых главных разделов (не больше 5)
- Давайте пользователю возможность понять, где он находится в каждый момент времени
- Используйте только распространенные иконки
- Если у иконок есть подписи, не делайте их слишком длинными

Статья в чем-то дублирует гайдлайны Material Design, но паттерн нижней навигации в ней рассмотрен немного подробнее, так что прочитайте её прежде, чем дизайнить.

https://www.smashingmagazine.com/2016/11/the-golden-rules-of-mobile-navigation-design/
💎 Команда AirBnb релизнула библиотеку для создания макетов в формате Sketch с помощью React-компонентов.

Почитать: http://airbnb.design/painting-with-code/
Посмотреть: http://airbnb.io/react-sketchapp/docs/examples.html
Попробовать: https://github.com/airbnb/react-sketchapp
Полезная заметка про то, что такое Context в Android и как его правильно использовать.

Главное правило – нужно использовать контекст компонента, с которым вы работаете (getContext() в Activity, getApplicationContext() в синглтонах). Не передавайте контекст туда, где его использование может выйти за пределы жизненного цикла родительского компонента.

https://blog.mindorks.com/understanding-context-in-android-application-330913e32514
O'Reilly раздаёт книги по разработке, и среди них есть небольшое (41 страница) руководство по применению RxJava в Android-разработке. Я просмотрел её и могу сказать, что хотел бы знать о ней раньше – там довольно кратко и ёмко рассматривается все, что нужно знать при знакомстве с этой библиотекой. С первого взгляда она кажется более понятной, чем все статьи, которые я видел в интернете (хотя не хватает диаграмм для наглядности). В общем, советую.

Все остальные бесплатные книги можно найти тут: oreilly.com/programming/free/
Хэй-хэй, всех с началом новой недели!

Посмотрите классный доклад Джейка Уортона про управление состоянием приложения с помощью RxJava. Он рассказывает, почему работать и с данными, и с UI, в рамках одной подписки на Observable – это плохо, и как разбить логику изменения состояний на легко тестируемые модули.

https://www.youtube.com/watch?v=0IKHxjkgop4
Пара полезных статей об аннотациях в Android:
Здесь рассказывается, как применять уже существующие аннотации для улучшения читабельности кода и проверки разных условий во время code inspection. Например, с их помощью можно указать, что передаваемый в метод integer должен быть ссылкой на строковый ресурс, или что метод может вернуть null.
А здесь можно почитать, как создавать свои собственные аннотации.
🛠 Git для дизайнеров (и не только)

Если вы хотите прокачать свой workflow, научиться использовать систему контроля версий (VSC) – отличная идея.
Если коротко, Git – это история всех внесенных изменений, бэкапы и коллективная работа над проектом в одном флаконе.

Влиться в тему поможет эта статья – здесь подробно рассказано, что такое Git и Github, и по шагам расписано, как создать репозиторий. А в конце есть список ресурсов для дальнейшего изучения.

Возможно, вы захотите положить под контроль большие файлы с макетами. Но тогда ваш репозиторий будет занимать все больше и больше места после каждого внесённого изменения. На помощь придет расширение Large File Storage. Здесь написано, как его установить и как им пользоваться.

Если вас пугает командная строка, обратите внимание на SourceTree или упоминаемый в статьях Tower – клиенты с графическим интерфейсом, которые сделают многие вещи проще и понятнее, особенно если у вас нет опыта работы с Git. К командной строке со временем можно и нужно привыкнуть – она помогает избавиться от многих лишних телодвижений, особенно когда нужно сделать шаг в сторону от выполнения рутинных задач.

С первого взгляда все это может показаться сложным, но усилия окупятся – работа над проектом с использованием VCS станет на порядок легче.
Нас сильно прибавилось, уже больше 500 человек!
Спасибо, что вы здесь.
Давайте проведём небольшой опрос:

Результаты:
Я разработчик: 114 ■■■■
Я дизайнер: 73 ■■
Я менеджер: 70 ■■
Другое: 23
Проголосовавшие видны создателю опроса
5 классных UI-библиотек.
Даже если вы не собираетесь ими пользоваться, будет полезно посмотреть, как они устроены.

https://medium.cobeisfresh.com/top-5-android-libraries-may-2017-3988610b3ce6