/

Chats Feature #2: ChatsScreen & ChatsViewModel – Android-проект з нуля

Реалізація екрану ChatsScreen для відображення списку чатів. Використання LazyColumn. Динамічний розмір тексту. Компоненти Pull To Refresh та Dropdown Menu.

Тайм-коди:

  • 00:00 – Вступ
  • 01:23 – State для екрану та ViewModel
  • 03:20 – Обробка пустих списків
  • 04:58 – Інтерфейс екрану для пустого списку
  • 10:59 – LazyColumn для непустого списку
  • 25:27 – Умовний модифікатор
  • 29:46 – Лічильник непрочитаних повідомлень
  • 35:18 – Іконка для додаткових дій
  • 36:45 – AvatarImageView: перша буква назви чату
  • 45:50 – Випадковий колір для кожного чату: hashCode + Random
  • 51:18 – Динамічний розмір шрифту: Canvas, drawText, scale, TextMeasurer
  • 01:01:13 – Перезавантаження даних: PullToRefreshBox
  • 01:06:47 – Реалізація DropdownMenu для елементу списку
  • 01:10:08 – Асинхронне видалення чату: ChatsAction & ViewModel
  • 01:14:16 – Оновлений State, індикація видалення чату, UiChat
  • 01:22:14 – Фікс відсутнього байдингу в Hilt
  • 01:23:33 – Фінальні фікси
  • 01:26:18 – Запуск проекту

Код проекту тут (silver) і тут (gold).

Після запису відео трошки змінив код:

  • додав юніт-тести та скріншот тести
  • трохи змінив кольори, відступи, текстові стилі
  • для Avatar Image додав модифікатор clip(CircleShape)
  • виніс логіку для маштабування тексту – в окремий компонент AutoScaledText
  • виніс лічильник непрочитаних повідомлень в компонент CounterBadge + переробив його на AutoScaledText
  • створив окремий модифікатор enabledAlpha