view_realization_specs.md

May 23, 2022 · View on GitHub

Главная

Особенности реализации View
Списки

RecyclerView.Adapter - в качестве адаптера следует использовать EasyAdapter (не расширяя его). Если необходимо реализовать стики-хедеры(заголовки, прилипающие к верхней границе списка) - использовать StickyEasyAdapter

RecyclerView.ViewHolder должен полностью скрывать все детали android.View, которую он содержит. Для этого следует:

  • Использовать ID ресурса верстки элемента списка внутри конструктора

  • Использовать метод bind(data) для отрисовки данных на элементе списка

Изображения

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

Ресурсы изображений:

  • Для всех иконок используется векторная графика. Для использования векторных ресурсов нужно указывать атрибут app:srcCompat вместо src. Векторные ресурсы также используются как иконки в меню тулбара. Для того чтобы использовать вектора для других случаев, например drawableLeft, то его следует обернуть в layer-list. Запрещается использовать класс VectorDrawable для работы с векторными изображениями в runtime - использовать следует VectorDrawableCompat. Гайд по использованию векторов;

  • Background всех Button и FlatButton сделан через AppCompat стили;

  • Все *.png ресурсы только в разрешении xxhdpi, эти ресурсы андроид будет масштабировать автоматически на более низкие разрешения + переводим в webp;

  • Использовать <shape> предпочтительнее чем svg и png ресурсы.

Прочее
  • MessageController - позволяет показывать SnackBar. Не может использоваться в презентере. Может использоваться View экрана и дополнительными сущностями скоупа @PerScreen, например StandardErrorHandler;

  • Любые локальные действия на экране с AndroidFramework и которые не относятся к зоне ответственности Вью должны быть обернуты в соответствующие классы с интерфейсом, независящим от фреймворка и поставляемым в презентер через Dagger. (например проверка наличия модуля GCM или подписка на BroadcastReceiver)

  • PlaceHolderViewContainer - кастомизируемый плейсхолдер для различных лоад-стейтов.