Разработайте в Jetpack Составьте со мной
Jetpack Compose - это современный набор инструментов для создания собственного пользовательского интерфейса Android. Jetpack Compose упрощает и ускоряет разработку пользовательского интерфейса на Android с меньшим количеством кода, мощными инструментами и интуитивно понятными API-интерфейсами Kotlin . - Разработчики Android
Недавно у меня появилось время опробовать некоторые новые функции в Jetpack Compose. Он еще не готов к эксплуатации, но с каждым выпуском становится все лучше. Разработка пользовательского интерфейса с использованием Kotlin намного увлекательнее, чем я ожидал. Недавно была выпущена новая версия (0.1.0-dev04) Jetpack Compose; вы можете увидеть детали здесь (Compose) и здесь (Compose UI).
Jetpack Compose - это огромная вселенная, поэтому мы не можем написать все в одном куске. Это моя третья статья из серии, посвященной Jetpack Compose. Я настоятельно рекомендую вам прочитать следующие статьи. Это не обязательно, но будет полезно.
Достаточно введения - перейдем к сути.
В этой статье мы узнаем, как реализовать следующие функции в Jetpack Compose:
- События кликов
- Панель навигации
- Прокручиваемый список (вертикальный и горизонтальный)
- AppBars
Поскольку Compose все еще находится в разработке, мы должны воспользоваться этим и изучить его с нуля. Таким образом, когда он будет готов к производству, нам будет легко создавать пользовательские представления и использовать его при разработке на уровне архитектуры.
1. Щелкните "События".
Обработка событий щелчка - простая задача в нашей нынешней экосистеме (XML и файлы классов), как и в случае с Jetpack Compose. Но наше главное намерение - узнать, как все устроено внутри.
Чтобы узнать это, сначала мы должны изучить сигнатуру метода события щелчка (Clickable
). Посмотри:
Первый вопрос: зачем использовать clickable
, когда у нас есть onClick
? В Compose только некоторые компоненты, такие как кнопки, имеют доступ к событию щелчка - по крайней мере, на данный момент. Во-первых, давайте посмотрим, как мы можем выполнять события нажатия на кнопки. Посмотри:
Выполнить событие щелчка довольно просто, но это не относится ко всем компонентам. Например, TextView
не имеет доступа к событиям кликов. Вот где clickable
, о котором мы упоминали выше, может быть полезен.
Clickable
предоставляет только события щелчка и не имеет ничего общего с событиями касания. Чтобы наблюдать за событиями касания, мы должны заключить Clickable
в компонент Ripple
, а также нам нужно изменить consumeDownOnStart
на false
. Теперь вернемся к Clickable
, мы должны написать, что должно произойти при нажатии под функцией onClick
в clickable
component.
Посмотри:
Используя Clickable
, мы можем выполнить событие щелчка для любого компонента в Jetpack Compose. Это удобно для реализации событий клика, когда вы работаете с настраиваемыми представлениями.
2. Панель навигации
На данный момент в JetPack Compose есть три ящика: ModalDrawerLayout
, BottomDrawerLayout
и StaticDrawer
для планшетов (например, тот, который постоянно открывается в приложении Gmail на планшетах).
ModalDrawerLayout
ModalDrawerLayout
используется для реализации стандартной панели навигации. Во-первых, давайте посмотрим на сигнатуру функции.
Давайте посмотрим на параметры: drawerState
указывает состояние панели навигации (_20 _ / _ 21_).
onStateChange
- это лямбда, указывающая, когда запрашивается изменение состояния выдвижного ящика, например смахивание.
gesturesEnabled
используется, чтобы узнать, можно ли получить доступ к ящику с помощью жестов.
drawerContent
и bodyContent
- две составляемые функции для представления пользовательского интерфейса в ящике. Теперь давайте посмотрим, как его использовать.
Взгляните на результат с базовой компоновкой:
BottomDrawerLayout
BottomDrawerLayout
используется для реализации нижних листов. Во-первых, давайте посмотрим на сигнатуру функции.
Мы видим, что и ModalDrawerLayout
, и BottomDrawerLayout
имеют одинаковую подпись. В конце концов, оба представляют собой ящики по своей сути. Давайте посмотрим, как используется BottomDrawerLayout
.
Теперь посмотрим на результат.
StaticDrawer
Как я уже сказал, у StaticDrawer
нет действий смахивания; это статический макет. Так что сигнатура функции проста. Посмотри:
@Composable fun StaticDrawer( drawerContent: @Composable() () -> Unit )
Использование также довольно простое. Посмотри:
Сначала мы использовали row
, чтобы разделить экран для ящика и остальной части приложения. Затем мы использовали StaticDrawer
слева и разделитель между ящиком и остальной частью приложения.
3. Прокручиваемый список (вертикальный и горизонтальный)
Команда Jetpack Compose проделала большую работу, чтобы упростить задачу. Все мы знаем, как реализовать scrollview
в XML. Это просто тег и корневой макет со всеми прокручиваемыми представлениями.
С Jetpack Compose еще проще реализовать прокручиваемые представления. Во-первых, давайте посмотрим на сигнатуру функции.
Как и любой другой компонент с modifier
, мы обновляем пользовательский интерфейс, и мы также можем контролировать, может ли он прокручиваться, используя флаг isScrollable
. Затем мы можем добавить дочерние представления. Посмотри:
Разве это не круто? Теперь посмотрим на результат.
Мы также можем реализовать горизонтальную прокрутку с помощью компонента HorizontalScroller
.
4. Панель приложений
В Compose есть две панели приложений: TopAppBar
и BotttomAppBar
. TopAppBar
похож на Toolbar
в Android, а BottomAppBar
- это нижняя панель, которую мы используем в существующей экосистеме.
TopAppBar
Панель инструментов является одним из важнейших компонентов существующей экосистемы пользовательского интерфейса Android, и мы можем реализовать ее в Compose с помощью TopAppBar
. В Compose реализация почти такая же, как и в XML. Давайте посмотрим на сигнатуру функции для TopAppBar
.
Параметры title
и color
используются для установки цвета заголовка и фона панели инструментов соответственно.
navigationIcon
используется для установки левого значка на панели инструментов, в основном для представления гамбургер-меню.
actionData
- это список изображений, представленных значками в правой части панели инструментов, например в меню; если в списке больше двух, то он сжимается. Параметр меню еще не реализован в Compose, но мы можем установить два значка справа, используя actionData
.
Теперь давайте посмотрим на реализацию.
Круто, правда? Пришло время увидеть результат.
BottomAppBar
BottomBar
- один из наиболее часто используемых компонентов в текущей экосистеме создания пользовательских интерфейсов. Он может отображать все параметры прямо у пользователя под рукой, без дополнительных щелчков мышью. В Compose мы используем BottomAppBar
для реализации BottomBar
.
Посмотрим на сигнатуру метода:
Как мы видим, сигнатура метода очень похожа на TopAppBar
—
с color
, navigationIcon
, actionData
и action
.
Но BottomAppBar
имеет больше функций, чем TopAppBar
, в том числе возможность показывать потрясающий значок, и мы можем указать форму выреза.
Ниже приведен простой пример того, как создать нижнюю панель в Compose:
Заключение
Спасибо за прочтение.