Jetpack Compose, набор инструментов пользовательского интерфейса Google для разработки приложений для Android, сейчас находится в стадии альфа-версии. Он полностью совместим со стандартными представлениями Android.
Когда дело доходит до разработки приложения, существует множество способов сделать это. Вы можете выбрать, для какой платформы (платформ) разрабатывать, какой язык (языки) программирования вы хотите использовать и многое другое.
Еще осенью 2019 года Google представил новая платформа для создания пользовательских интерфейсов в Android с использованием Kotlin. До сих пор он находился в стадии разработки, с частыми серьезными изменениями и множеством недостающих функций. Но сегодня Google перевел Jetpack Compose в состояние альфа-версии, что означает, что он стал на шаг ближе к использованию в проектах производственного качества.
Что такое Jetpack Compose?
При создании приложения для Android обычно приходится иметь дело с двумя основными компонентами: код для логических задач; и XML для макетов. По умолчанию Android использует Java для кода и собственный набор XML-тегов для макетов.
Для многих Java и XML вполне подходят, особенно для простых приложений. Но обе системы имеют свои ограничения и недостатки. С появлением Kotlin как чиновник (и рекомендуемый) язык для разработки Android, часть написания кода при создании приложения для Android, возможно, стала намного проще. Благодаря удобным функциям Kotlin, таким как встроенная защита от нуля и функции расширения, код выглядит чище и его легче читать.
Но Kotlin ничего не изменил в макетах Android. Чтобы сделать сложный макет, вам все равно нужно было создать XML-файл и спроектировать его там. Это имеет некоторые заметные недостатки, в том числе неотъемлемое разделение кода и XML. Например, если в вашем коде есть постоянная строка, вы не можете просто сослаться на нее из XML, поэтому, если эта строка изменится в коде, вам придется не забыть обновить ее и в XML.
Войдите в Jetpack Compose. Это ответ Google на все более неуклюжий процесс проектирования XML-макета в Android. Вместо того, чтобы проектировать пользовательский интерфейс вашего приложения в XML, вы можете сделать это прямо из своего кода. Хотя макеты на основе кода можно создавать, они обычно менее удобны в обслуживании, чем XML, и включают в себя легко разрушаемые библиотеки. Compose, с другой стороны, предназначен для работы непосредственно внутри Kotlin: больше никакого XML.
Jetpack Compose также представляет собой довольно радикальный отход от стандартного императивного дизайна макетов XML. Вместо этого он больше похож на React или Flutter с декларативными макетами, которые обновляются при изменении данных, вместо того, чтобы полагаться на разработчика для реализации этой логики.
Что поддерживается
Итак, Jetpack Compose сейчас находится в альфа-версии. Что это значит? Ну, много чего.
Взаимодействие с представлениями
Точно так же, как Kotlin полностью совместим с Java, Jetpack Compose полностью совместим со стандартными представлениями Android. Это означает довольно много вещей.
Во-первых, если вы захотите, вам будет намного проще перейти на Jetpack Compose. Вместо того, чтобы конвертировать все ваши пользовательские представления и макеты в Composables, вы сможете просто создавать новые макеты и компоненты в Compose. У вас есть библиотека, использующая «устаревшие» представления, но ваше приложение разработано с помощью Compose? Без проблем. Вы можете добавить представление прямо в свою функцию Composable. Вы еще не перешли на Compose, но хотите использовать библиотеку, основанную на Composables? Опять же, без проблем. Просто поместите Composable прямо в свой макет.
Что касается тем, это не так просто, как совместимость макетов. Однако, Google сделал библиотеку адаптировать стандартные темы XML в темы, совместимые с Compose, помогая централизовать работу и избежать дублирования.
Анимации
Здесь особо нечего сказать, за исключением того, что Jetpack Compose поддерживает анимацию, как и платформа Android View. Вы можете перемещать, изменять размер и вращать по своему усмотрению.
Ленивые списки
Ленивый список — это, по сути, версия RecyclerView от Compose. Он размещает элементы только по мере необходимости, экономя оперативную память и повышая производительность. Конечно, поскольку это Compose, списки реализовать значительно проще.
ОграничениеLayout
Одним из наиболее мощных представлений в Android является ConstraintLayout. Это позволяет позиционировать, изменять размер и вес дочерних представлений относительно друг друга, а также упрощает работу с некоторыми анимациями. Если вы беспокоились о потере этой функциональности в Compose, вам не следует беспокоиться, потому что она тоже здесь.
Материальные компоненты пользовательского интерфейса
Еще один набор мощных представлений — это библиотека компонентов материалов Google. Большая часть того, что здесь находится, представляет собой стандартные представления и макеты, которые вы можете найти в собственной среде представления. Но их подправили или обернули, чтобы обеспечить дополнительную функциональность и упростить создание тем, а также они также появились в Compose.
Тестирование
Важной частью разработки приложения является его тестирование. Для простого приложения вы можете сделать это вручную, установив и используя его. Однако более сложные проекты могут получить большую выгоду от платформ автоматического тестирования, которые сделают за вас большую часть тяжелой работы. Jetpack Compose поддерживает автоматическое тестирование, поэтому вы можете сделать свое приложение максимально стабильным.
Специальные возможности
Доступность является важной частью нашего общества. Без специальных возможностей в наших технологиях многие люди были бы просто лишены тех преимуществ, которые предоставляют наши телефоны, телевизоры и что-либо еще. Jetpack Compose все еще находится в стадии альфа-версии, поэтому поддержка специальных возможностей не завершена, но Google учитывает это во время разработки, и элементарная поддержка уже присутствует.
Android-студия
Однако не все функции Jetpack Compose присутствуют в самом Jetpack Compose. В Android Studio и Kotlin также есть плагины и расширения для упрощения создания композиций.
Плагин компилятора Kotlin
Как и в случае с Kotlin JVM, в Android Studio есть плагин компилятора, позволяющий правильно преобразовать ваши функции Compose в код, который Android действительно может понять и следовать ему.
Интерактивные превью
Как и в случае со стандартными макетами XML, Android Studio включает предварительный просмотр макета для Jetpack Compose. Хотя в настоящее время это не так удобно, как предварительный просмотр XML, в некоторых аспектах — вам придется создавать свой проект для предварительный просмотр для обновления и создание специальной функции предварительного просмотра — у нее есть одно заметное преимущество: интерактивность превью.
Интерактивный предварительный просмотр — это обычный предварительный просмотр, но интерактивный. Сумасшествие, я знаю. Однако это означает, что вы действительно можете вводить текст в текстовые поля, нажимать кнопки и взаимодействовать со своими компонентами Composable, даже не развертывая их.
Единое составное развертывание
Если вы действительно хотите развернуть (т. е. установить) свой макет, чтобы увидеть, как он работает на реальном устройстве, эта функция может вам помочь. При использовании обычных XML-макетов, чтобы увидеть, как макет работает в реальном мире, вам необходимо собрать и установить все приложение. Если макет, который вы хотите протестировать, отсутствует на основном экране, возможно, вам придется много нажимать, чтобы добраться до него.
И именно здесь в игру вступает возможность развертывания только одного Composable. Вместо того, чтобы создавать и устанавливать приложение, а затем переходить к тестируемому макету, вы можете просто развернуть его. Android Studio сгенерирует и откроет активность-оболочку, которая просто отображает развернутый вами Composable. Это может значительно ускорить тестирование и проектирование и даже помочь изолировать проблемы, связанные с взаимодействием элементов.
Завершение кода
Если в вашей IDE нет автодополнения кода, является ли она вообще IDE? Нет. Нет, это не так. Поэтому, конечно же, Android Studio поддерживает полное завершение кода для Jetpack Compose.
Хотя это еще не все, что предлагает Jetpack Compose, приведенные выше функции и поведение демонстрируют, насколько мощной хочет видеть Google эта платформа. И хотя он все еще находится в стадии альфа, это на шаг впереди его предыдущего статуса «разработки». Если вы воздерживались от использования Jetpack Compose (как и я), возможно, сейчас самое время попробовать еще раз.