Урок 1: Введение и подготовка окружения
Смотреть урок в VK Смотреть урок на YouTube Введение Jetpack Compose – это способ создания интерфейса для мобильных приложений, использующий декларативный подход. Большинство новых проектов пишутся с применением компоуза и в большинстве вакансий на рынке требуют знание этой технологии. Однако, навык XML все еще востребован. Так как огромное количество проектов все еще используют его. Более […]
Смотреть урок →
Урок 2: ПОЧЕМУ ОН (Jetpack Compose), а не XML
Смотреть урок в VK Смотреть урок на YouTube Введение Давайте пройдемся по теории. В чем идея, задумка, зачем Jetpack Compose вообще появился и почему все так хотят сейчас писать на нем. Я расскажу очень поверхностно про историю разработки на XML, попутно обращая внимания на нововведения и неудобства этого подхода. А в конце мы подведем итоги, […]
Смотреть урок →
Урок 3: DSL, Императивный и Декларативный подход
Смотреть урок в VK Смотреть урок на YouTube Введение Почему в Jetpack Compose можно верстать функциями? В свое время Android разработка активно опиралась на Java, но постепенно отошла от него в пользу Kotlin. Сегодня Kotlin практически полностью вытеснил Java с этой арены. И разработчики Kotlin, помимо прочего, заложили, казалось бы, одну небольшую, но довольно важную […]
Смотреть урок →
Урок 4: @Composable функции
Смотреть урок в VK Смотреть урок на YouTube Введение Пришло время начать работу в Android Studio. Потихоньку начнем писать код, попутно делая легкие привалы на разъяснения того, что же мы все таки пишем, но без духоты. Разбираем что такое и как работают Composable функции, а также что происходит внутри setContent и зачем нужен метод Scaffold. […]
Смотреть урок →
Урок 5: Column & Row – позиционирование
Смотреть урок в VK Смотреть урок на YouTube Введение Мы уже научились создавать свои первые composable функции для отображения UI. Теперь расскажу как работать с позиционированием элементов на экране. Итак, мы имеем одну собственную composable функцию для удобства, в которой есть другая системная composable функция для отображения текста. Метод StudyAppHeader не обязательно должен содержать только […]
Смотреть урок →
Урок 6: Modifier (модификаторы) и аргументы composable функций
Смотреть урок в VK Смотреть урок на YouTube Введение Мы уже коснулись темы модификаторов, когда кастомизировали некоторые наши элементы и занимались их позиционированием. Сейчас я хочу более подробно раскрыть эту область, потому, что возможности настройки отображения элементов практически безграничные. А главное – это делается достаточно изящно и легко. Итак, как вы уже понимаете отображение можно настраивать […]
Смотреть урок →
Урок 7: Темная тема и стили
Смотреть урок в VK Смотреть урок на YouTube Введение В этом уроке рассмотрим работу со стилями и темами в Jetpack Compose. Скорее всего те, кто уже имеет насмотренность, мог заметить, что я часто дублирую модификаторы оформления, например, для текстов. Все это принято выносить в стили. Кроме того уже стандартом считается поддержка темной темы приложения, если […]
Смотреть урок →
Урок 8: MutableState, remember. Состояние и Рекомпозиция
Смотреть урок в VK Смотреть урок на YouTube Введение Мы уже научились отображать и оформлять элементы. Но часто данные являются динамическими – то есть заполняются строками, цифрами и другими значениями в зависимости от состояния. В Jetpack Compose за это отвечает state. В этом уроке мы подробно рассмотрим важные концепции состояния и рекомпозиции. Сравнение с классической […]
Смотреть урок →
Урок 9: TextField /OutlinedTextField, Валидация почты, ErrorState
Смотреть урок в VK Смотреть урок на YouTube Введение В прошлом уроке мы разобрались в критически важной теме, связанной с хранением состояния и рекомпозицией. Теперь мы можем работать с большим количеством composable функций, которые не могут работать без объявления стейта. В качестве демонстрационной задачи мы реализуем ввод электропочты в текстовое поле. Сначала быстрая подготовка. Как […]
Смотреть урок →
Урок 10: Коллбэки (callback). Внедрение логики регистрации
Введение Сейчас будет максимально практический урок. Будем внедрять логику нашей гипотетической регистрации. Акцент в первую очередь делаем на том, чтобы подружить между собой состояния composable функций. На текущий момент мы изучили состояния и как происходит рекомпозиция. А на предыдущем уроке создали классное анимируемое и валидируемое текстовое поле для ввода электронной почты. Продолжим. В качестве демонстрационной […]
Смотреть урок →
Урок 11: Lazy Column – ленивые списки (сравнение с RecyclerView)
Введение Я продолжаю разрабатывать экраны для своего гипотетического образовательного приложения. И прямо сейчас настало время создать экран со списком уроков. Я расскажу как правильно реализовывать списки в Jetpack Compose, как это сделать быстро, красиво и чтобы не аффектило пользовательский опыт. В ближайшем будущем это будет список текстовых элементов, который превратится в набор кликабельных карточек и […]
Смотреть урок →
Урок 12: Навигация – Base Compose Navigation
Введение В этом уроке мы разберемся, как заставить наше приложение переключаться между экранами. Навигация – неотъемлемая часть любого приложения и часто этот предмет вызывает много вопросов и обсуждений. Есть много способов ее реализации, есть много сторонних библиотек для ее реализации. Наша цель – добавить в проект контролируемую и предсказуемую систему переходов между экранами, которая легко […]
Смотреть урок →
Урок 13: Navigation Compose – правильная навигация
Введение Сегодня у нас очень важная тема — навигация в Jetpack Compose с использованием Navigation Compose. Это подход, который используется в продакшене и позволяет создавать современные приложения, где экраны плавно переключаются, передают данные и корректно возвращаются назад. Мы начнем с самого начала: я покажу, как настроить Navigation Compose, чтобы буквально за несколько минут реализовать переключение […]
Смотреть урок →