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 - кастомизируемый плейсхолдер для различных лоад-стейтов.