Jetpack Compose
Google предлагает нам новый, декларативный способ создания UI - Jetpack Compose. Медленно, но верно Android сообщество переходит на этот фреймворк. Примерно так же, как в свое время мы переходили на Kotlin и корутины.
В отличие от корутин, у Compose вполне хорошая и понятная официальная документация. Да и сама тема не такая сложная. Но все равно там есть некоторые непростые для понимания области, о которых я планирую рассказать.
Начинается курс с самых базовых тем, чтобы вы сразу смогли создавать несложные примеры. В них мы используем простые экранные Compose элементы, делаем Preview, играем с фоном и границей элемента, узнаем, что такое Modifier. Там все просто и статично.
Затем я рассказываю о ключевых механизмах Compose: State, Recomposition, remember. А также рассматриваю более сложные UI элементы: CheckBox и TextField. Это уже интереснее и более похоже на реальные примеры.
Ну а дальше будут рассмотрены темы, необходимые для написания полноценных приложений на Compose. Думаю, что всего получится около 35 уроков.
Планируемые темы:
- Список
- ViewModel
- Навигация
- Modifier
- SideEffects
- CompositionLocal
- Themes
- Анимация
- Рисование
- Custom Layout
- Interoperability
- Tooling
- Tests
- BestPractice
- Preformance
- Stable
Как получить курс
Первые десять уроков доступны бесплатно и без регистрации. В этих уроках мы знакомимся с Compose, делаем простые примеры и рассматриваем ключевые механизмы его работы. Открывайте первый урок по кнопке и начинайте знакомство с Compose.
Курс постоянно дополняется. На сегодня он состоит из 45 уроков
Полный курс доступен после регистрации на сайте и оплаты. Стоимость курса - 3600 рублей
С выходом новых уроков стоимость увеличивается. Но читатели, уже купившие курс, автоматически получат доступ к новым урокам. Поэтому, если тема вам интересна, не откладывайте покупку и получайте все следующие уроки бесплатно. Читателю, купившему хотя бы один курс, предоставляется скидка 20% на все остальные курсы.
Доступ к курсу предоставляется навсегда, включая все последующие уроки или обновления.
Сразу все курсы со скидкой 40% процентов вы можете купить (или докупить) на отдельной странице.
При возникновении каких-либо вопросов, используйте форму обратной связи
Содержание курса
-
Урок 1. Введение. Создание проекта. Composable функция
В этом уроке создаем проект для работы с Compose; обсуждаем, что такое Composable функция и создаем свою простую функцию.
-
Урок 2. Preview. Параметры Composable функции
В этом уроке мы используем Preview, чтобы видеть результат работы Composable функции без запуска приложения; рассматриваем некоторые параметры функции Text.
-
Урок 3. Modifier
В этом уроке разбираемся, где искать нужный нам атрибут элемента - в параметрах функции или в Modifier.
-
Урок 4. Базовые Layout: Row, Column, Box
В этом уроке используем базовые Layout для расположения элементов на экране.
-
Урок 5. Background и border. Изображения.
В этом уроке разбираемся какие возможности у нас есть при создании фона и границ элементов; какие функции используются для вывода на экран изображений; как показать картинку из Интернет.
-
Урок 6. State
В этом уроке мы разбираемся что такое State. Как он помогает Composable функции понять, что пора обновлять данные на экране.
-
Урок 7. CheckBox и TextField.
В этом уроке рассматриваем элементы CheckBox и TextField. Им необходим State для своей работы.
-
Урок 8. Recomposition
В этом уроке разбираемся, как Recomposition может оптимизировать перезапуски Composable функций.
-
Урок 9. remember
В этом уроке рассматриваем функцию remember и его параметр key.
-
Урок 10. remember + mutableStateOf
В этом уроке используем комбинацию remember + mutableStateOf
Урок 11. Список, call site, key.
В этом уроке мы создаем свой список с помощью Column и LazyColumn. А также подробно разбираемся в механизме перезапуска Composable функций и функции key, которая помогает оптимизировать эти перезапуски.
Урок 12. ViewModel.
В этом уроке используем ViewModel для хранения данных и используем StateFlow вместо State.
Урок 13. Modifier.
В этом уроке рассматриваем несколько важных моментов в работе с Modifier: порядок операторов, использование в своих Composable функциях и scope.
Урок 14. Навигация.
В этом уроке рассматриваем основы навигации в Compose.
Урок 15. Навигация и ViewModel.
В этом уроке мы рассмотрим важные особенности работы ViewModel при использовании навигации.
Урок 16. Composable lifecycle, RememberObserver.
В этом уроке рассматриваем lifecycle этапы Composable функций и разбираемся как работает remember + RememberObserver.
Урок 17. LaunchedEffect, DisposableEffect, rememberCoroutineScope.
В этом уроке рассматриваем SideEffects функции: LaunchedEffect, DisposableEffect, rememberCoroutineScope.
Урок 18. produceState, rememberUpdatedState, SideEffect
В этом уроке рассматриваем SideEffects функции: produceState, rememberUpdatedState, SideEffect
Урок 19. derivedStateOf, snapshotFlow
В этом уроке рассматриваем SideEffects функции: derivedStateOf и snapshotFlow
Урок 20. CompositionLocal
В этом уроке изучаем механизм CompositionLocal, и в чем отличие между compositionLocalOf и staticCompositionLocalOf
Урок 21. Material Design. Theme.
В этом уроке выясняем, как стандартные UI элементы используют Material; рассматриваем основные отличия Material 3 и Material 2; разбираемся как устроены темы в Compose
Урок 22. Content Slot, Scaffold, Drawer, Snackbar, BottomSheet.
В этом уроке проведем краткий обзор элементов Scaffold, Drawer, Snackbar, BottomSheet
Урок 23. LayoutModifier
В этом уроке с помощью LayoutModifier разбираемся, как взаимодействуют между собой родительские и дочерние UI элементы во время Layout фазы.
Урок 24. LayoutModifier. Свои Modifier операторы. Chain.
В этом уроке используем LayoutModifier, чтобы создать свои простые версии операторов width, offset и padding. Разбираемся, как общаются между собой Modifier операторы в цепочке.
Урок 25. Custom Layout.
В этом уроке создаем свой кастомный Layout - простую версию Column.
Урок 26. Custom Layout - Timeline. Parent Data.
В этом уроке создаем Custom Layout в виде Timeline и разбираемся, как родитель может получить данные от дочерних элементов с помощью Parent Data.
Урок 27. Drawing.
В этом уроке рассматриваем инструменты для рисования в Compose
Урок 28. Drawing modifiers.
В этом уроке рассматриваем Modifier связанные с рисованием: drawBehind, drawWithContent, drawWithCache, graphicsLayer
Урок 29. Анимация, основы.
В этом уроке обсуждаем основы анимации и разбираемся, как работает TargetBasedAnimation.
Урок 30. Анимация. Animatable.
В этом уроке создаем свою реализацию класса Animatable, чтобы лучше понять, как он работает под капотом
Урок 31. Анимация. AnimationSpec.
В этом уроке рассматриваем доступные нам спецификации AnimationSpec: tween, spring, keyframes, repeatbale, snap
Урок 32. Анимация. AnimateValueAsState
В этом уроке работаем с функцией AnimateValueAsState
Урок 33. Анимация. Transition
В этом уроке используем Transition для старта нескольких анимаций
Урок 34. Анимация. AnimatedVisibility, AnimatedContent
В этом уроке рассматриваем оставшиеся верхнеуровневые инструменты анимации: AnimatedVisibility, AnimatedContent, Crossfade, animate, animateContentSize
Урок 35. User Input. PointerEvent. PointerInputChange
В этом уроке получаем события в Modifier pointerInput. Разбираемся, какая информация о касаниях нам доступна
Урок 36. User Input. await функции
В этом уроке используем awaitPointerEvent для отлова событий, и рассмотрим прочие await* функции: awaitFirstDown, awaitLongPressOrCancellation, awaitDragOrCancellation, waitForUpOrCancellation, awaitEachGesture.
Урок 37. User Input. Consumed
В этом уроке разбираемся, зачем нужен статус consumed.
Урок 38. User Input. Прогоны
В этом уроке рассматриваем прогоны событий: Initial, Main, Final.
Урок 39. User Input. Indication и InteractionSource
В этом уроке разбираемся зачем нужны и как работают Indication и InteractionSource.
Урок 40. User Input. Detect* функции
В этом уроке рассматриваем detect* функции: detectTapGestures, detectDragGestures, detectTransformGestures
Урок 41. User Input. Modifier операторы
В этом уроке рассматриваем Modifier операторы: draggable, draggable2D, anchoredDraggable, transformable, nestedScroll
Урок 42. Stability. Введение. Data классы.
В этом уроке мы разбираемся, что такое Stability, зачем он нужен и как можно его сломать. В качестве примеров используем примитивы и Data классы. Также включаем возможность получать compiler metrics отчеты.
Урок 43. Stability. Коллекции, State Holders, лямбды
В этом уроке продолжаем тему Stability на примере более сложных типов данных: коллекции, state holder, лямбды
Урок 44. Stability. Restartable, Strong Skipping Mode.
В этом уроке выясняем, что означает restartable, и разбираемся, какие изменения несет нам Strong Skipping Mode.
Урок 45. Tooling. Preview, Live Edit, Layout Inspector, Debug, Trace.
В этом уроке очень кратко рассмотрим основные инструменты для работы с Compose: Preview, Live Edit, Layout Inspector, Debug, Trace