Сегодня посвятим весь дайджест теме, без которой сложно представить хорошее мобильное приложение, — пользовательскому интерфейсу.
Общие вопросы
Официальные UI паттерны от Google.
Неофициальные коллекции скриншотов приложений: раз, два, три. Иногда помогают понять, чего же хочет заказчик, или, наоборот, помогают ему выбрать именно то, что нужно вам.
Сервис для комбинирования цветовой палитры Material Design.
Android notification system: серьёзные изменения в версии 5.0.
Подробный мануал на CodePath по Defining Custom Views.
Bitmap quality, banding and dithering: материалу уже 4 года, но принципы остаются актуальными.
Как делается 2D рисование: слайды (часть 1, часть 2) от ребят из CoreServlets.
UI поток, как и зачем его не блокировать: официальная документация, хорошие материалы есть и на Хабре (первый, второй).
Анимации и перемещения
Весь раздел документации: Property Animation, View Animation, Drawable Animation. Мне здесь самым интересным показался Android Property Animation framework.
Плавное появление элементов: самый незамысловатый способ — атрибут animateLayoutChanges. Документациячестно предупреждает, что возможна некорректная работа со вложенными элементами.
Cogito Learning ёмко рассказывает про интерполяции в анимациях. Кстати, на этом ресурсе можно найти и другие UI темы.
Scenes and Transitions API (начиная с Android 4.4): описание, видео с DevBytes. Backports для более старых версий ОС: первый, второй.
Cyril Mottier про нестандартные анимации на примере реального приложения Custom Animations With Fragments.
В Lollipop стали доступны изящные переходы между экранами (по состоянию на начало января в библиотеках совместимости для старых версий ОС они не представлены). Почти такого же эффекта, но приложив значительно больше усилий, можно добиться и на старых версиях: рассказывает Chet Haase, архив (!) с исходным кодом примера.
Библиотеки, которые помогают сделать красиво
Rebound: «пружинящие» анимации от ребят из Facebook.
EasyAndroidAnimations: коллекция из 50+ кастомных анимаций.
StickyListHeaders: makes it easy to integrate section headers in ListView.
PhotoView: ImageView for Android that supports zooming, by various touch gestures.
Android Sliding Up Panel: provides a simple way to add a draggable sliding up panel (как в Google Music, Google Maps и Rdio).
A simple showcase to show off Android’s new Material Design and some other cool new stuff. Демо приложения на Play Store у них совсем слабое сейчас, но вот код может быть полезен.
SwipeListView: An Android List View implementation with support for drawable cells and many other swipe related features.
Библиотеки для асинхронной загрузки изображений, если вдруг кто о них не знает: Universal Image Loaderи Picasso. В той или иной мере эта функциональность также реализована в ionи Volley.
Некоторые частные случаи, о которых полезно знать
Опыт внедрения библиотеки Intel Integrated Native Developer Experienceдля работы с видео.
Иногда азиатские производители делают свой очень кастомизированный UI, который не получается переопределить стандартными средствами. Пример — случай с популярным смартфоном Lenovo.
Android Performance Case Study by Romain Guy. Довольно много внимания уделено именно UI.
И напоследок — почти философские рассуждения от Mark Murphy Material Design: Strategic Considerations.
← Предыдущий выпуск: Android дайджест #1