Дизайн системы и Jetpack Compose

Jul 12, 2024

Лекция: Дизайн системы и Jetpack Compose

Введение

  • Лектор: Михаил, ведущий Android разработчик команды coreui
  • Тема: Дизайн система и нестандартный UI с Jetpack Compose
  • Целевая аудитория: практикующие Android инженеры, внедряющие Jetpack Compose

Концепции и проблемы

  • Полгода разработки дизайн системы на Jetpack Compose
  • В проекте использованы базовые элементы: палитра, иконки, типографика
  • 40+ компонентов разной сложности (кнопки, карточки, онбординг и т.п.)
  • Проблемы со стороны анимаций и кастомных теней

Jetpack Compose: Переход и проблемы

  • Переход на Compose требует новой дизайн системы
  • Тема в Compose: компоновка глобальных параметров (цвета, шрифты, тени)
  • Проблемы с V1: разрозненный API компонентов, отсутствие бинарной совместимости

Основные требования к V2

  1. Единообразный и понятный API
  2. Не должно влиять на производительность
  3. Бинарная совместимость
  4. Поддержка пресетов

Анализ и выбор подхода

  • Изучение Material Design и его ограничений в расширении
  • Решение создавать компоненты с нуля на основе Jetpack Compose Foundation

Архитектура и реализация

  • Использование composition локалов для глобальных параметров
  • Design философия: отделение реализации компонентов от стилизации
  • Два интерфейса: Appearance и Size
  • Билдер функции для создания консистентных стилей
  • Многомодульная структура: компоненты и стили разделены

Проблемы и решения в процессе

  • Избегание использования View из-за производительности
  • Взяты лучшие подходы из Material Design, но без его ограничений
  • Проблема с межбуквенным интервалом и цветами из-за Material Design компонентов
  • Внесение правок через composition local

Итоги

  • Стабильная архитектура компонентов Compose
  • Разработано более 30 компонентов
  • Получение OSS-инцентива (участие команд мобильных приложений)
  • Внедрение и успешная работа компонентов в продакшене

Рекомендации и контакты

  • Личный Telegram, GitHub, электронная почта для вопросов
  • Ссылки на предыдущие доклады и информация о дизайн системе

Спасибо за внимание!