Носить Compose

Создавайте приложения Jetpack Compose для устройств Wear OS, предоставляя функциональность для поддержки различных размеров устройств и жестов навигации.
Последнее обновление Стабильный релиз Кандидат на релиз Бета-версия Альфа-релиз
27 августа 2025 г. 1.5.0 - - -

Объявление зависимостей

Чтобы добавить зависимость от Wear, необходимо добавить репозиторий Google Maven в свой проект. Подробнее см. в репозитории Google Maven .

Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:

классный

dependencies {
    implementation "androidx.wear.compose:compose-foundation:1.5.0"

    // For Wear Material Design UX guidelines and specifications
    implementation "androidx.wear.compose:compose-material:1.5.0"

    // For integration between Wear Compose and Androidx Navigation libraries
    implementation "androidx.wear.compose:compose-navigation:1.5.0"

    // For Wear preview annotations
    implementation("androidx.wear.compose:compose-ui-tooling:1.5.0")
    
    // NOTE: DO NOT INCLUDE a dependency on androidx.compose.material:material.
    // androidx.wear.compose:compose-material is designed as a replacement
    // not an addition to androidx.compose.material:material.
    // If there are features from that you feel are missing from
    // androidx.wear.compose:compose-material please raise a bug to let us know.
}

Котлин

dependencies {
    implementation("androidx.wear.compose:compose-foundation:1.5.0")

    // For Wear Material Design UX guidelines and specifications
    implementation("androidx.wear.compose:compose-material:1.5.0")

    // For integration between Wear Compose and Androidx Navigation libraries
    implementation("androidx.wear.compose:compose-navigation:1.5.0")
    
    // For Wear preview annotations
    implementation("androidx.wear.compose:compose-ui-tooling:1.5.0")

    // NOTE: DO NOT INCLUDE a dependency on androidx.compose.material:material.
    // androidx.wear.compose:compose-material is designed as a replacement
    // not an addition to androidx.compose.material:material.
    // If there are features from that you feel are missing from
    // androidx.wear.compose:compose-material please raise a bug to let us know.
}

Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .

Обратная связь

Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с уже существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав на кнопку со звёздочкой.

Создать новый выпуск

Более подробную информацию см. в документации по системе отслеживания проблем .

Wear Compose версии 1.5

Версия 1.5.0

27 августа 2025 г.

Выпущен androidx.wear.compose:compose-*:1.5.0 . Версия 1.5.0 содержит следующие коммиты .

Важные изменения с версии 1.4.0

Первый выпуск библиотеки Wear Compose Material 3, поддерживающей новую систему дизайна Material 3 Expressive. В этот выпуск входят:

  • Обновленная MaterialTheme и динамическая цветовая тема.
  • Новые компоненты AppScaffold, ScreenScaffold , HorizontalPagerScaffold и VerticalPagerScaffold для компоновки структуры экрана и координации анимаций ScrollIndicator , TimeText , HorizontalPageIndicator и VerticalPageIndicator .
  • Формоизменение IconButton , TextButton , IconToggleButton и TextToggleButton с вариациями, которые анимируются при нажатии или установке отметки.
  • EdgeButton , имеющая специальную форму, предназначенную для нижней части экрана.
  • ButtonGroup представляет собой выразительную группу кнопок, расположенных в ряд и меняющих свою форму при касании.
  • AlertDialog и ConfirmationDialog с вариациями для дополнительного диалогового содержимого.
  • Компоненты TimePicker и DatePicker .
  • Индикаторы прогресса включают CircularProgressIndicator (с сегментированной вариацией), ArcProgressIndicator и LinearProgressIndicator .

Кроме того, Wear Compose Foundation 1.5.0 включает в себя следующее:

  • TransformingLazyColumn — ленивый вертикально прокручиваемый список, поддерживающий анимацию масштабирования и морфинга.
  • Поддержка пагинации в Wear Compose Foundation с помощью HorizontalPager и VerticalPager .
  • Иерархические фокус-группы — используются для аннотирования компонуемых элементов в приложении с целью отслеживания активной части композиции и координации фокуса.

Узнайте больше о ( Material 3 Expressive для Wear OS )

Дополнительные изменения

Версия 1.5.0-rc02

13 августа 2025 г.

Выпущена androidx.wear.compose:compose-*:1.5.0-rc02 . Версия 1.5.0-rc02 содержит следующие коммиты .

Исправления ошибок

  • Исправлена ​​ошибка в TimePicker , из-за которой длинные интернационализированные строки для периода (AM/PM) могли нарушить макет. ( I0fa81 )

Версия 1.5.0-rc01

30 июля 2025 г.

Выпущена androidx.wear.compose:compose-*:1.5.0-rc01 . Версия 1.5.0-rc01 содержит следующие коммиты .

Исправления ошибок

  • TimePicker теперь полностью управляется локалью пользователя, используя DateFormat.getBestDateTimePattern для определения порядка и содержимого своих элементов выбора и разделителей. Это исправляет некорректный порядок столбцов для языков CJK, устраняет проблемы с написанием справа налево в таких языках, как арабский, использует локализованные разделители и поддерживает форматы часов 0–11 и 1–12 в зависимости от локали ( I5d543 ).
  • DatePicker теперь отображает месяц в числовом формате в некоторых локалях, например, CJK, чтобы избежать смешивания числовых и языковых форматов (например, 2025 | 07 | 02 вместо 2025 | 7月 | 02). Это изменение применяет эвристику, которая проверяет, используются ли в локали языковые суффиксы для обозначения года, и, если да, меняет формат месяца с текстового (MMM) на числовой (MM) для обеспечения согласованности. ( Ia93fe )
  • Вертикальное пространство для заголовка в компоненте «Выбор» теперь постоянно, что предотвращает видимое смещение при выборе столбца выбора, особенно в режиме Talkback . ( I7f8b7 )
  • Исправлена ​​ошибка доступности, вызванная отображением HorizontalPageIndicator и VerticalPageIndicator на весь экран. Индикаторы страниц больше не отображаются на весь экран и будут позиционироваться автоматически при использовании с HorizontalPagerScaffold или VerticalPagerScaffold . Если шаблон пейджера не используется, укажите выравнивание явно с помощью modifier = Modifier.align(Alignment.BottomCenter) для HorizontalPageIndicator и modifier =Modifier.align(Alignment.CenterEnd) для VerticalPageIndicator . ( I3a0ad )
  • Направление смахивания в SwipeToReveal теперь одинаково для LayoutDirections как LTR, так и RTL. ( I6d427 )
  • Восстановлено вертикальное центрирование SwipeToReveal для действий. Если hasPartiallyRevealedState = true , RevealState должен быть сброшен до RevealValue.Covered вызывающим кодом при прокрутке. ( I6473d )
  • SwipeDismissableNavHost теперь корректно обрезает содержимое для API 36 и более поздних версий. ( Ib9a44 )

Версия 1.5.0-beta06

16 июля 2025 г.

Выпущена androidx.wear.compose:compose-*:1.5.0-beta06 . Версия 1.5.0-beta06 содержит следующие изменения .

Исправления ошибок

  • Исправлена ​​анимация EdgeButton , когда LazyColumn или ScalingLazyColumn имеют reverseLayout = true . ( I46a1a )
  • Исправлена ​​ошибка в ScreenScaffold , из-за которой функция Touch-to-Explore не работала в режиме Talkback, если был указан ScrollIndicator/PageIndicator . ( I6dcee )
  • TransformingLazyColumn теперь позволяет выполнять пользовательскую трансформацию из TransformationSpec путем считывания значения itemHeight , предоставленного TransformationSpec в фоновом рисовщике. ( I6a599 )
  • Анимированные переходы цветов для IconButton включены/выключены для соответствия IconToggleButton . ( Ife10a )
  • Убрано ограничение минимального размера сечения в CircularProgressIndicator , чтобы избежать заметного скачка к минимальному размеру точки при анимации. В связи с этим изменением параметр targetProgress в drawCircularProgressIndicator теперь не используется. ( I33309 )
  • В средстве выбора теперь есть семантическая роль ValuePicker , которую могут использовать программы чтения с экрана для повышения доступности. Кроме того, в средстве выбора обновлены метки щелчков, которые различаются между изменением значения в режиме «только для чтения» и выбором текущего значения в противном случае. ( I33309 )

Версия 1.5.0-beta05

2 июля 2025 г.

Выпущена androidx.wear.compose:compose-*:1.5.0-beta05 . Версия 1.5.0-beta05 содержит следующие изменения .

Исправления ошибок

  • Обновлена ​​документация для уточнения использования Modifier.edgeSwipeToDismiss ( I78cb5 ).
  • Исправлена ​​ошибка, из-за которой в ленивых списках с помощью SwipeToReveal могло отображаться несколько раскрытых элементов ( I1d4f6 ).
  • Формы контейнеров в TransformingLazyColumn теперь масштабируются, чтобы избежать обрезки содержимого. ( I9221a )
  • Метки TimePicker и DatePicker для часов/минут/секунд или года/месяца/дня теперь имеют семантику заголовков для программ чтения с экрана ( I77d8b )
  • Убрана пауза между циклами в неопределенном CircularProgressIndicator ( Iaf0bb )
  • Исправлена ​​ошибка анимации в TransformingLazyColumn при удалении элементов. ( I73034 )
  • Исправлена ​​обработка элементов привязки в TransformingLazyColumn при удалении элементов. ( I841a8 )
  • PickerGroup теперь анимирует элементы выбора горизонтально при включении автоцентрирования и изменении выбранного (центрированного) элемента выбора. ( Ic82c4 )

Версия 1.5.0-beta04

18 июня 2025 г.

Выпущена androidx.wear.compose:compose-*:1.5.0-beta04 . Версия 1.5.0-beta04 содержит следующие коммиты .

Исправления ошибок

  • Исправлена ​​ошибка макета в TransformingLazyColumn , из-за которой содержимое, помещающееся на экране, теперь правильно выравнивается по верхнему краю экрана ( I80115 ).
  • Исправлена ​​проблема с TransformingLazyColumn , из-за которой нижний элемент неправильно масштабировался при прокрутке списка до самого низа с помощью EdgeButton . Теперь при восстановлении макета ход прокрутки следует градиентному спуску. ( Iea375 )
  • TransformingLazyColumn теперь считывает высоту элемента внутри фонового рисователя, что позволяет настраиваемым TransformationSpecs реализовывать морфинг. ( I022f0 )
  • SwipeToReveal теперь правильно центрирует отображаемые действия по вертикали. ( I4419b )
  • Исправлена ​​ошибка в SwipeToReveal , из-за которой функция не работала корректно при смахивании для закрытия, если на экране одновременно использовались и просмотр, и создание сообщения. ( I5dc0e )
  • Исправлена ​​ошибка, из-за которой действия SwipeToReveal отображались с вертикальным смещением при прокрутке. ( I29444 )
  • AlertDialog , ConfirmationDialog , OpenOnPhoneDialog и SwipeToReveal теперь округляют отступы и размеры, которые рассчитываются как процент от размера экрана. ( I76367 )
  • ButtonDefaults.outlinedButtonBorder теперь обновляется в соответствии с изменениями размера включенного/выключенного состояния ( If2ddd )
  • Исправлена ​​ошибка высоты EdgeButton , возникавшая на сложных экранах с Pager и ScreenScaffold . ( I946e3 )
  • Исправлено состояние гонки, которое могло привести к остановке анимации плейсхолдеров. ( I53530 )
  • Улучшена производительность HorizontalPageIndicator и VerticalPageIndicator за счет рисования на холсте. ( Ifae1e )
  • Уточнена форма EdgeButton для сглаживания переходов между эллипсисом и кругами, составляющими контур. ( I7721e )
  • Исправлена ​​ошибка в LevelIndicator , приводившая к остановке анимации из-за ненужных перекомпозиций. ( I45d08 )

Версия 1.5.0-beta03

4 июня 2025 г.

Выпущена androidx.wear.compose:compose-*:1.5.0-beta03 . Версия 1.5.0-beta03 содержит следующие коммиты .

Изменения API

  • OpenOnPhoneDialog теперь озвучивает только текст сообщения в TalkBack и пропускает семантику значка. OpenOnPhoneDialogDefaults обновлены: параметры iconContentDescription и contentDescription удалены из icon() . Кроме того, ConfirmationDialogDefaults теперь имеет параметры-модификаторы для компонуемых объектов SuccessIcon и FailureIcon . ( Id2ae2 )

Исправления ошибок

  • Изменён порядок применения параметров SurfaceTransformation . Ранее преобразования, применяемые к компонентам Wear Material3, выполнялись следующим образом: рисование фона, преобразование контейнера, преобразование содержимого. Теперь первые два инвертируются, и между ними применяется любой переданный модификатор, поэтому на него влияют преобразования контейнера. Это исправляет такие случаи, как использование эффекта мерцания заполнителя с элементами в TLC, использующими параметр преобразования. ( I786cf )
  • Добавлен RevealState.Saver для использования при восстановлении состояния SwipeToReveal при повторном создании активности или процесса. Функция rememberRevealState теперь использует этот Saver по умолчанию. ( Ie0ecb )
  • Кнопки основных и дополнительных действий SwipeToReveal должны по умолчанию иметь значение ButtonDefault.Height (исправлена ​​ошибка, из-за которой они заполняли максимальную высоту для более высоких кнопок). ( Ibfba1 )
  • Изменено SwipeToReveal для сброса последнего взаимодействовавшего компонента при выполнении жеста смахивания вправо. ( Ia8450 )
  • SwipeToReveal был изменен для установки в состояние Revealing , когда конечная позиция смахивания находится между якорями раскрытия и раскрытия и ближе к якорю раскрытия. ( If4458 )
  • Теперь содержимое ButtonGroup правильно инвертируется в макете RTL ( Ib378d )
  • AnimatedText теперь поддерживает направление текста справа налево ( I4533c )
  • TransformingLazyColumn теперь правильно изменяет размеры элементов при удалении нижнего элемента ( Idacab )
  • TransformingLazyColumn теперь выполняет только один проход измерения, что повышает производительность за счет сокращения времени кадра. ( I501a1 )

Версия 1.5.0-beta02

20 мая 2025 г.

Выпущена androidx.wear.compose:compose-*:1.5.0-beta02 . Версия 1.5.0-beta02 содержит следующие коммиты .

Исправления ошибок

  • Обновлены базовые профили для библиотек фундамента, материалов и материалов3. ( I53f06 )
  • Исправлена ​​ошибка в TransformingLazyColumn , из-за которой элементы изменялись в размере при удалении нижнего элемента. ( Idacab )
  • Исправлена ​​ошибка TransformingLazyColumn , из-за которой список застревал в верхней или нижней части списка. ( I49d00 )
  • OpenOnPhoneDialog в TalkBack должен озвучивать изогнутый текст, а не описание содержимого значка. ( I4efe8 )
  • Исправлена ​​ошибка в SwipeToReveal , из-за которой сообщалось о неправильной привязке в RevealState.currentValue , если hasPartiallyRevealedState имел значение false. ( I9c7cf )
  • Кнопки отмены SwipeToReveal теперь по умолчанию имеют ButtonDefaults.Height . ( I1f6c8 )
  • Производительность BasicSwipeToDismissBox была улучшена за счет отказа от использования Canvas для рисования сеток. ( I68f2c )
  • Исправлена ​​ошибка доступности в Slider, из-за которой объявленный процент не соответствовал значению после обновлений ( I91146 ).
  • Исправлена ​​ошибка в реализации placeholderShimmer . ( Iee39b
  • Производительность TransformingLazyColumn была улучшена за счет оптимизации расчета ScrollProgress на 30%. ( I4c4cb )

Версия 1.5.0-beta01

7 мая 2025 г.

Выпущена androidx.wear.compose:compose-*:1.5.0-beta01 . Версия 1.5.0-beta01 содержит следующие изменения .

Выпуск Compose для Wear OS версии 1.5.0-beta01 означает, что в этом выпуске библиотека имеет полный набор функций, а API заблокирован (за исключением случаев, помеченных как экспериментальные).

Wear Compose 1.5.0-beta01 включает библиотеку Wear Compose Material3, которая поддерживает новую систему дизайна пользовательского интерфейса Material 3 Expressive. Рекомендуется перейти с Material на Material3, чтобы использовать новый визуальный дизайн в приложениях и воспользоваться следующими новыми компонентами:

  • MaterialTheme для обновленных и расширенных цветовых схем, типографики и форм, которые привнесут в ваши проекты глубину и разнообразие.
  • Динамическая цветовая схема, которая автоматически генерирует цветовую схему для вашего приложения в соответствии с цветами циферблата часов.
  • Новые компоненты по умолчанию автоматически адаптируются к большим размерам экрана.
  • Изменение формы — компоненты круглой кнопки, такие как IconButton , TextButton , IconToggleButton и TextToggleButton поддерживают вариации, которые анимируются при нажатии или выборе.
  • EdgeButton — новая кнопка специальной формы, прилегающая к краю экрана.
  • Scaffolds — представляем AppScaffold и ScreenScaffold для разработки структуры экрана и координации анимаций ScrollIndicator и TimeText .
  • Кнопки — множество кнопок в форме стадиона поддерживаются гибкими однослотовыми контейнерами и многослотовыми вариантами для кнопок с иконками и надписями. CheckboxButton и SwitchButton предоставляются для переключателей, а RadioButton — это доступная кнопка выбора (также доступны варианты «Разделённые» для переключателей и кнопок выбора).
  • ButtonGroup — реализует выразительную группу кнопок в ряду, которые меняют форму при касании.
  • Варианты AlertDialog поддерживают кнопки «ОК/Отмена» или EdgeButton .
  • ConfirmationDialog позволяет отображать сообщение с задержкой, поддерживая специальные анимации для успешного завершения, неудачного завершения и вариантов открытия по телефону.
  • Поддерживаются варианты Pickers — TimePicker и DatePicker , а также компоненты Picker и PickerGroup для создания собственных экранов Pickers.
  • ProgressIndicators — поддерживаются круговые и линейные индикаторы прогресса ( CircularProgressIndicator имеет сегментированные и неопределенные варианты).
  • Карточки — доступно несколько вариантов карточек, включая TitleCard , предлагающий специальные макеты для карточек с заголовком, временем, подзаголовком или полем для содержания. TitleCard также можно использовать фоновое изображение, чтобы подчеркнуть смысл информации на карточке.
  • Компоненты Pagers — HorizontalPagerScaffold , VerticalPagerScaffold и AnimatedPage координируют анимацию HorizontalPageIndicator и VerticalPagerIndicator . HorizontalPager и VerticalPager входят в библиотеку Wear Compose Foundation.
  • Заполнители — рисуют каркасную форму над компонентом для ситуаций, когда временное содержимое отсутствует.
  • Ползунки и степперы — как ползунки, так и степперы позволяют пользователям выбирать из диапазона значений. Ползунки более компактны и могут быть сегментированы, тогда как степпер — это полноэкранный компонент, обычно работающий в паре с StepperLevelIndicator .
  • SwipeToReveal — используется для добавления дополнительных действий к компонуемому элементу при его смахивании справа налево.

Кроме того, Wear Compose Foundation 1.5.0-beta01 включает в себя следующие новые компоненты:

  • TransformingLazyColumn — ленивый, вертикально прокручиваемый список, поддерживающий анимацию масштабирования и морфинга.
  • Иерархические фокус-группы — используются для аннотирования компонуемых элементов в приложении, отслеживания активной части композиции и координации фокуса.
  • Пейджеры — компоненты HorizontalPager и VerticalPager , созданные на основе компонентов Compose Foundation с усовершенствованиями, специфичными для Wear, для повышения производительности и соответствия рекомендациям Wear OS.

Изменения API

  • Обновлен API иерархического фокуса — Modifier.hierarchicalFocus переименован в Modifier.hierarchicalFocusGroup и удален параметр обратного вызова; удалена перегрузка Modifier.hierarchicalFocusRequester с параметром FocusRequester ; создан новый CompositionLocal , LocalScreenIsActive , чтобы компоненты могли сообщать и проверять, какой экран является активным. ( I5ff7c ).
  • Устаревший SwipeToReveal из Wear Compose Foundation заменен API SwipeToReveal в Wear Compose Material и Wear Compose Material3. Чтобы продолжить использование API, замените импорт SwipeToReveal из Wear Foundation на импорт Wear Compose Material/Wear Compose Material3. ( Ia147d ).
  • Зависимости Wear Compose Material3 SwipeToReveal от Foundation были перенесены в пакет material3, например, RevealValue , RevealDirection , RevealActionType , RevealState и rememberRevealState . Разработчикам следует изменить импорт этих классов и функций с androidx.wear.compose.foundation на androidx.wear.compose.material3 . ( I640e6 ).
  • Обновлен API Wear Compose Material3 SwipeToReveal следующим образом: добавлены параметры primaryAction , onFullSwipe , secondaryAction , undoPrimaryAction , undoSecondaryAction и hasPartiallyRevealedState в составной элемент SwipeToReveal ; удалена возможность настройки positionalThreshold и animationSpec из RevealState ; удалены lastActionType , revealThreshold и width из RevealState ; изменен конструктор RevealState для принятия RevealDirection вместо якорей; удалены функции createRevealAnchors , якори и bidirectionalAnchors ; функции SwipeToRevealScope primaryAction , secondaryAction , undoPrimaryAction и undoSecondaryAction переименованы в PrimaryActionButton , SecondaryActionButton , UndoActionButton и преобразованы в составные функции; помечен RevealActionType как внутренний. ( I885d0 ).
  • Далее API SwipeToReveal обновлено следующим образом: onFullSwipe переименован в onSwipePrimaryAction ; SwipeToRevealNonAnchoredSample переименован для указания использования параметра hasPartiallyRevealedState ; удален actionButtonHeight , поскольку значение по умолчанию равно высоте кнопки по умолчанию, а большую высоту можно задать с помощью модификатора; удален SmallActionButtonHeight из SwipeToRevealDefaults ; параметр value в конструкторах RevealValue и RevealDirection сделан закрытым. ( I465ce ).

Исправления ошибок

  • Исправлена ​​обработка EdgeButton в ScreenScaffold , так что после удаления элемента TransformingLazyColumn EdgeButton анимированно возвращается на место. ( I6d366 ).
  • Обновлены зависимости Wear Compose от библиотек Compose до версии 1.8.0. ( I2ef3f ).
  • Обновлено движение неопределенного CircularProgressIndicator , так что теперь он больше не регрессирует временно. ( Ieddb1 ).
  • Исправлена ​​ошибка SwipeDismissableNavHost — фокус не переключался правильно после смахивания назад, что приводило к сбою вращательного ввода (это было для API 36+, в котором используется предиктивный возврат). ( Ieddb1 ).
  • Измененная документация для Hierarchical Focus API ( Idf2ff ).
  • Обновлена ​​документация для Button и Card с целью описания того, как containerPainter и disabledContainerPainter переопределяют containerColor и disabledContainerColor ( I4a453 ).
  • Отменено изменение TimeText в предыдущем выпуске , которое перемещало BroadcastReceiver в рабочий поток, поскольку это вызывало проблемы для приложений, которые управляют собственными потоками во время навигации. ( I34d02 ).
  • Обновлены примеры Picker для удаления ненужных вызовов remember и использования вместо этого rememberUpdatedState в Picker для запоминания последней лямбда-функции contentDescription . ( Icb5b1 ).
  • Обновлены стили текста в TimePicker и DatePicker , чтобы изменение шрифта больше не приводило к усечению. ( I26194 ).
  • ListHeader и ListSubHeader теперь по умолчанию выравнивают текст по центру и по началу соответственно. ( I78339 ).
  • Обновлены примеры и демонстрации Foundation и Material Swipe to Reveal для анонсирования пользовательских действий по обеспечению доступности (пользовательские действия должны быть добавлены как семантика для контента, а не для самого компонуемого объекта SwipeToReveal ). ( Ie92a3 ).
  • Обновлено значение MaxLines по умолчанию для содержимого EdgeButton в соответствии с его размером — теперь 1 для очень маленького, 2 для маленького и среднего и 3 для большого. ( Ie35f6 ).
  • Упрощенный LocalReduceMotion позволяет регистрировать наблюдателя только один раз для повышения производительности. ( Ib1979 ).
  • Минимизировано количество перерисовок в ScrollIndicator для повышения производительности. ( Ia7a67 ).
  • Исправлена ​​ошибка в TransformingLazyColumn , из-за которой верхний видимый элемент в списке не масштабировался правильно, когда EdgeButton достигал своей полной высоты. ( I30580 ).

Версия 1.5.0-альфа14

23 апреля 2025 г.

Выпущена androidx.wear.compose:compose-*:1.5.0-alpha14 . Версия 1.5.0-alpha14 содержит следующие коммиты .

Изменения API

  • Все зависимости Material SwipeToReveal от Foundation SwipeToReveal были перенесены в пакет Material, например, RevealValue , RevealDirection , RevealActionType , RevealState и rememberRevealState . Разработчикам следует изменить импорт этих классов и функций с androidx.wear.compose.foundation на androidx.wear.compose.material . ( Ib7cb8 )
  • Обновлен API HierarchicalFocusCoordinator , чтобы сделать его модификаторами, а не составными элементами.
  • Примечания по миграции:
    • HierarchicalFocusCoordinator(function, content) можно заменить, добавив Modifier.hierarchicalFocus(function()) к content или к включающему его составному элементу.
    • ActiveFocusListener { if (it) focusRequester.requestFocus() } можно заменить, добавив Modifier.hierarchicalFocusRequester(focusRequester)
    • Другие, более редкие применения ActiveFocusListener могут использовать новый параметр Modifier.hierarchicalFocus
    • focusRequester(rememberActiveFocusRequester()) можно заменить на hierarchicalFocusRequester()
    • val focusRequester = rememberActiveFocusRequester() можно заменить на remember { FocusRequester() } и добавить Modifier.hierarchicalFocusRequester(focusRequester) . ( Ie319a )

Исправления ошибок

  • Пороговое значение скорости, которое необходимо превысить жестам смахивания, чтобы вызвать изменение состояния, увеличено для следующих компонентов: SwipeToReveal , BasicSwipeToDismissBox и SwipeDismissableNavHost (только для API 35 и ниже для SwipeDismissableNavHost ). ( If47bf )
  • Исправлена ​​проблема с анимацией при добавлении новых элементов в TransformingLazyColumn . ( I589b2 )

Версия 1.5.0-альфа13

9 апреля 2025 г.

Выпущена androidx.wear.compose:compose-*:1.5.0-alpha13 . Версия 1.5.0-alpha13 содержит следующие коммиты .

Изменения API

  • Для проектов, выпущенных с использованием Kotlin 2.0, требуется использование KGP 2.0.0 или более поздней версии ( Idb6b5 ).
  • Добавлено свойство targetPage в PagerState ( I4de8b )

Исправления ошибок

  • Предотвращает ненужную перекомпозицию во время предиктивного обратного преобразования. ( Iecd6d )
  • Исправлено свойство isScrollable объекта ScrollInfoProvider для возврата текущего значения. ( Icbfb8 )

Версия 1.5.0-альфа12

26 марта 2025 г.

Выпущена androidx.wear.compose:compose-*:1.5.0-alpha12 . Версия 1.5.0-alpha12 содержит следующие коммиты .

Изменения API

  • Улучшить реализацию по умолчанию SwipeToReveal для gestureInclusion , чтобы жесты игнорировались только в том случае, если состояние компонента — Covered. ( I7e3d6 )
  • Для SwipeToReveal сделал bidirectionalGestureInclusion значением вместо функции и добавил @FloatRange к параметру edgeZoneFraction в gestureInclusion . ( Ica7c3 )

Исправления ошибок

  • Измените SwipeToReveal bidirectionalGestureInclusion так, чтобы он возвращал объект вместо класса. ( I29597 )
  • Отключено использование тактильных ощущений при выполнении тестов в RoboElectric . ( I58bd1 )
  • Обновите отступы SwipeToReveal между содержимым и кнопками действий, а также отступы между значком и текстом кнопок действий. ( Ic46cb )

Версия 1.5.0-альфа11

12 марта 2025 г.

Выпущена androidx.wear.compose:compose-*:1.5.0-alpha11 . Версия 1.5.0-alpha11 содержит следующие коммиты .

Изменения API

  • Обновлён PagerState , удалён Compose Foundation PagerState как базовый класс и добавлены свойства currentPage , currentPageOffsetFraction и pageCount . Обновлён интерфейс GestureInclusion , метод переименован в ignoreGestureStart . ( I4ae07 )
  • Добавьте requireOffset к SwipeToDismissBoxState как рекомендуемый способ получения смещения SwipeToDismissBoxState . ( I21042 )
  • Добавлен CurvedModifier.semantics , изначально поддерживающий описание содержимого и индекс обхода ( I0b093 ).
  • Мы добавили CurvedModifier.clearAndSetSemantics , чтобы предоставить возможность отключения семантики изогнутых элементов. CurvedText по-прежнему использует текст в качестве описания содержимого по умолчанию, но timeTextCurvedText и timeTextSeparator теперь не объявляют своё содержимое. ( I4b568 )
  • Обработка жестов смахивания по умолчанию в HorizontalPager переименована в PagerDefaults.gestureInclusion . Теперь по умолчанию игнорируются только те жесты смахивания, которые начинаются с левого края первой страницы, и только при отключенной функции Talkback. В остальных случаях по умолчанию жесты смахивания не игнорируются пейджером, поэтому они недоступны обработчикам смахивания для закрытия. ( Iee486 )
  • Добавлена ​​вращающаяся прокрутка для API rotaryScrollable . В поведение прокрутки rotaryScrollable добавлены прокрутка и вложенная прокрутка. Это изменение должно обеспечить равноценную функциональность прокрутки и вложенной прокрутки при сенсорной и вращающейся прокрутке. ( I71926 )
  • Добавлена ​​поддержка зоны смахивания от края в SwipeToReveal . Поведение по умолчанию для Foundation SwipeToReveal теперь запрещает смахивание, если жест начинается от края. Поведение по умолчанию для Material3 SwipeToReveal теперь запрещает смахивание, если жест начинается от края, если SwipeDirection задано как однонаправленное. ( I32ef0 )
  • TLC теперь по умолчанию использует пустой contentPadding вместо размещения первого и последнего элементов в центре. ( I77ab7 )

Исправления ошибок

  • Библиотеки Wear Compose обновлены до компилятора Kotlin 2.0. ( I2de79 )
  • Исправлен изогнутый образец LetterSpacing на фундаменте. ( Iebf7c )

Версия 1.5.0-альфа10

26 февраля 2025 г.

Выпущена androidx.wear.compose:compose-*:1.5.0-alpha10 . Версия 1.5.0-alpha10 содержит следующие изменения .

Изменения API

  • Сделайте SwipeToRevealDefaults публичным. ( I0c34c )
  • Мы заменили параметр swipeToDismissEdgeZoneFraction в HorizontalPager . Вместо него был введен новый параметр gestureInclusion , который может использоваться для достижения необходимого поведения смахивания для закрытия. gestureInclusion принимает экземпляр GestureInclusion , который решает, должно ли последующее событие прокрутки продолжаться или нет. Разрешение жеста означает, что Pager использует его — в противном случае он будет обработан в другом месте, например, обработчиком смахивания для закрытия. Новое поведение по умолчанию — запретить жесты на самом левом краю первой страницы в Pager и, следовательно, разрешить смахивание для закрытия в этой области. Все остальные страницы разрешат Pager использовать все жесты, то есть смахивание для закрытия не может быть вызвано с них. Чтобы добиться поведения смахивания для закрытия на всех страницах, просто предоставьте пользовательский экземпляр GestureInclusion (см. PagerDefaults.disableLeftEdgeOnFirstPage ), который игнорирует текущую страницу. Еще одно принципиальное изменение, внесенное здесь, заключается в том, что компонент Pager больше не является полноэкранным по умолчанию; вместо этого добавьте Modifier.fillMaxSize() для достижения этого поведения. ( I9d3aa )
  • Мы переименовали createAnchors в createRevealAnchors в API свайпа для показа ( If5999 ).
  • Мы удалили RevealScope из API свайпа для показа. ( Ie4ad5 )
  • Мы удалили Revealing и Revealed из RevealValue в API смахивания для показа. ( I8dbc5 )
  • Мы переименовали SwipeDirection в RevealDirection в API смахивания для показа. ( I7472f )
  • Мы изменили сигнатуру параметра positionalThreshold функции rememberRevealState объекта SwipeToReveal . ( I29c0a )
  • Мы добавили новый параметр overscrollEffect в ScalingLazyColumn , TransformingLazyColumn и ScreenScaffold . ( I0cee8 )
  • При использовании PagerDefaults#snapFlingBehaviour параметр pagerSnapDistance был заменен на параметр Int maxFlingPages , который можно использовать для указания максимального количества страниц, которые должен выдавать Pager. ( I8cfc0 )
  • Wear Pager теперь имеет собственный PagerScope вместо использования Compose Foundation PagerScope . ( I9195b )
  • Мы добавили поддержку lineHeight для изогнутого текста ( I1c936 ).
  • Мы добавили initialAnchorItemIndex и initialAnchorItemOffset в TransformingLazyColumnState и rememberTransformingLazyColumnState , что начальная позиция прокрутки может быть указана в TransformationLazyColumn . ( I0a0d5 )
  • Отменить использование runWithTimingDisabled в пользу runWithMeasurementDisabled , который более чётко описывает поведение — все метрики приостанавливаются. Кроме того, предоставить доступ к суперклассу MicrobenchmarkScope , поскольку повторное объявление функции runWithMeasurementDisabled для открытия доступа невозможно, так как она встроена. ( I9e23b , b/389149423 , b/149979716 )
  • Мы добавили TransformingLazyColumnItemScrollProgress.Unspecified в API, чтобы избежать упаковки в TransformingLazyColumnItemScrollProgress . ( I0835d )

Исправления ошибок

  • Улучшить Kdoc для CurvedTextStyle ( Id45e3 )
  • Мы сделали SwipeableV2 (часть реализации SwipeToReveal ) внутренним, а не публичным, но ограниченным библиотечной группой. ( Idbb94 )
  • Мы добавили тесты в HierarchicalFocusCoordinator ( I1ce54 , b/395548918 )
  • Мы внесли улучшения в SwipeToReveal в образцах тональных основ Wear Compose. ( I5f307 )
  • Исправление семантических данных оси прокрутки для verticalScrollAxisRange в TransformingLazyColumn для обеспечения доступности ( I68123 )
  • Улучшение производительности вращающихся тактильных эффектов на Wear4+ путем удаления ненужных фоновых потоков ( I39cfe )
  • Измените SwipeDismissableNavHost так, чтобы PredictiveBackNavHost использовался только в API 36 и более поздних версиях. ( I59bed )
  • Мы добавили защиту от сбоя при доступе к настройке reducemotion. ( I01e2c )
  • Мы реализовали предварительную выборку для TransformingLazyColumn , чтобы уменьшить задержку ( Icca88 ).

Версия 1.5.0-альфа09

29 января 2025 г.

Выпущена androidx.wear.compose:compose-*:1.5.0-alpha09 . Версия 1.5.0-alpha09 содержит следующие коммиты .

Изменения API

  • В CurvedTextStyle мы разделили межбуквенные интервалы на интервалы по часовой стрелке и против часовой стрелки. Это необходимо, поскольку буквы, расположенные по часовой стрелке, расходятся от базовой линии, а буквы, расположенные против часовой стрелки, расходятся (поэтому требуется больший межбуквенный интервал) ( I4b848 ).
  • Интерфейс CompositionLocal LocalReduceMotion был упрощён и теперь возвращает логическое значение вместо объекта ReduceMotion . Интерфейс ReduceMotion теперь устарел. Ранее использовавшиеся вызовы, такие как LocalReduceMotion.current.enabled() можно заменить на LocalReduceMotion.current ( I4937f ).
  • В PagerDefaults snapAnimationSpec переименован в SnapAnimationSpec . ( I20c9a )

Версия 1.5.0-альфа08

15 января 2025 г.

Выпущена androidx.wear.compose:compose-*:1.5.0-alpha08 . Версия 1.5.0-alpha08 содержит следующие коммиты .

Изменения API

  • Мы обновили все библиотеки Wear Compose до режима «явного API». ( Iebf9f )
  • Мы сделали параметр анимации привязки пейджера частью PagerDefaults . ( Ifff64 )
  • Мы добавили параметр смещения к SwipeToDismissBoxState . ( I586bd )

Исправления ошибок

  • Тактильные элементы поворотной платформы теперь используются в версиях Wear OS после V ( Idb03e )

Версия 1.5.0-альфа07

11 декабря 2024 г.

Выпущена androidx.wear.compose:compose-*:1.5.0-alpha07 . Версия 1.5.0-alpha07 содержит следующие коммиты .

Изменения API

  • TransformingLazyColumnState теперь предоставляет возможность наблюдать текущий прогресс прокрутки на основе индексов привязочных элементов. ( I72b01 )
  • Мы добавили в TransformingLazyColumn анимацию при добавлении, удалении и перемещении элементов, если у них есть новый Modifier.animateItem . ( Iecb9c )
  • TransformingLazyColumn теперь предоставляет значения для beforeContentPadding и afterContentPadding . ( Iccd5f )
  • TransformingLazyColumn теперь предоставляет локальную композицию LocalTransformingLazyColumnItemScope , которую компоненты (такие как Card и Button в Material3) могут использовать для автоматического преобразования при размещении внутри TransformingLazyColumn . Вызывающие абоненты могут отключить автоматическое морфирование с помощью новой оболочки TransformExclusion . ( I1652f )

Исправления ошибок

  • Мы обновили минимальную и максимальную скорость броска для вращающихся устройств, нацеленных на U и далее. ( I33559 )
  • Мы исправили сбой, который происходил, если элемент в TransformingLazyColumn не содержал компонуемых объектов ( Idb99d ).
  • Мы добавили поддержку ScrollFeedbackProvider для вращающихся тактильных ощущений в Android Vanilla Ice Cream. ( Ibc553 )
  • Мы применили увеличенный наклон сенсорного экрана при использовании SwipeToReveal , чтобы снизить вероятность случайного срабатывания смахивания при вертикальной прокрутке. ( Ic0672 )
  • Мы обновили SwipeDismissableNavHost , чтобы использовать PredictiveBackHandler , если он доступен начиная с API 35. В этом случае будут применены новые анимации. ( I08c11 )

Версия 1.5.0-альфа06

13 ноября 2024 г.

Выпущен androidx.wear.compose:compose-*:1.5.0-alpha06 . Версия 1.5.0-alpha06 содержит эти коммиты .

Изменения API

  • Мы упростили ScrollInfoProvider для PagerState , удалив параметр orientation , который больше не нужен. Новое поведение заключается в том, что TimeText остается на месте как для горизонтального, так и для вертикального листания. ( I71767 )
  • TransformingLazyColumn был представлен в более ранних выпусках. Сейчас мы удаляем псевдонимы LazyColumn Wear (которые перенаправлялись на TransformingLazyColumn ) в пользу нового имени TransformingLazyColumn . Мы также удалили свойство height TransformingLazyColumnVisibleItemInfo — вместо этого используйте measuredHeight . ( I0ea1e )
  • Мы изменили snapAnimationSpec PagerDefaults.snapFlingBehavior со спецификации Tween на спецификацию Spring ( I10d02 , b/349781047 , b/303807950 ).
  • Мы повысили статус LocalReduceMotion CompositionLocal до стабильной версии ( Ia6f32 ).

Исправления ошибок

  • Мы обновили Modifier.rotaryScrollable , чтобы использовать focusTargetWithSemantics для лучшей поддержки семантики при ротации. ( Ief0a0 )
  • Мы обновили минимальную зависимость API до 1.7.4 для библиотек Compose. ( I88b46 )
  • Мы отключили морфинг ширины в TransformingLazyColumn в качестве обходного пути для ошибки обрезки. ( I3dfb8 )
  • Мы исправили ошибку, приводившую к исчезновению элементов после чрезмерной прокрутки с помощью TransformingLazyColumn ( Id7668 ).
  • Мы добавили LazyLayoutSemantics для TransformingLazyColumn . ( Ia8f56 )

Версия 1.5.0-альфа05

30 октября 2024 г.

Выпущен androidx.wear.compose:compose-*:1.5.0-alpha05 . Версия 1.5.0-alpha05 содержит эти коммиты .

Изменения API

  • Мы добавили поддержку animateScrollTo в TransformingLazyColumnState , чтобы прокрутку к элементу можно было анимировать. ( I4097d )
  • Мы добавили requestScrollTo в TransformingLazyColumnState , чтобы отложить прокрутку до следующего измерения. ( I20a5e )
  • Мы добавили поддержку contentPadding в TransformingLazyColumn . ( I3a69c )

Исправления ошибок

  • Мы исправили ошибку при рендеринге TransformingLazyColumn , когда высота содержимого короче высоты экрана. ( I6c3e1 )
  • ScrollInfoProvder для TransformingLazyColumn теперь правильно отслеживает первый элемент. ( I1e4a3 )
  • TransformingLazyColumnState теперь сохраняет свое состояние ( anchorItemIndex anchorItemScrollOffset ). ( I3d265 )

Версия 1.5.0-альфа04

16 октября 2024 г.

Выпущен androidx.wear.compose:compose-*:1.5.0-alpha04 . Версия 1.5.0-alpha04 содержит эти коммиты .

Изменения API

  • Мы переименовали Wear Compose Foundation LazyColumn в TransformingLazyColumn , чтобы было более четкое различие между ним и Compose Foundation LazyColumn . ( I0608b )
  • Добавлена поддержка вращения горизонтальных/вертикальных пейджеров, позволяющая пользователям перемещаться по пейджерам с помощью поворотных устройств ввода. ( I9770d )
  • Мы обновили новые PagerDefaults , чтобы прояснить, что пейджер по умолчанию привязывается к странице. ( Iff7d0 )
  • TransformingLazyColumnItemScrollProgress теперь является классом значений, который должен повысить производительность. ( Ic399e )
  • TransformingLazyColumn теперь поддерживает поворот из коробки. ( I05206 )
  • TransformingLazyColumnState теперь поддерживает scrollToItem . ( I507b3 )
  • Удален @ExperimentalWearFoundationApi из SwipeToReveal API ( I34a66 ).

Версия 1.5.0-альфа03

2 октября 2024 г.

Выпущен androidx.wear.compose:compose-*:1.5.0-alpha03 . Версия 1.5.0-alpha03 содержит эти коммиты .

Изменения API

  • Мы добавили поддержку двунаправленного пролистывания в SwipeToReveal для редких случаев, когда текущий экран не поддерживает пролистывание для закрытия. . По умолчанию по-прежнему используется смахивание для открытия только при пролистывании справа налево, и настоятельно рекомендуется соблюдать поведение по умолчанию, чтобы избежать конфликта с пролистыванием для закрытия. ( Ифак04 )
  • Мы обновили LazyColumnState , чтобы переопределить canScrollForward и canScrollBackward — теперь прокрутка прекращается, когда первый или последний элемент находится точно в центре экрана. ( Ia77d7 )
  • Мы добавили новые компоненты HorizontalPager и VerticalPager , которые решают распространенные проблемы, такие как обработка фокуса и взаимодействие с системным смахиванием для закрытия, которые могут возникнуть на Wear. ( I2902b )
  • Мы добавили поддержку LazyColumn для предоставления key клиента и contentType через layoutItems . ( I1bd9c )

Исправления ошибок

  • Мы обновили анимацию изогнутого текста, сделав ее более плавной, используя флаги рисования. ( I73a15 )
  • Мы обновили документацию по диалоговому окну материалов, чтобы отразить, что onDismissRequest не вызывается после того, как для флага show установлено значение false. ( Ifd8d6 )
  • Мы исправили ошибку с анимацией виньетки в диалоге материалов ( I126bf ).

Версия 1.5.0-альфа02

18 сентября 2024 г.

Выпущен androidx.wear.compose:compose-*:1.5.0-alpha02 . Версия 1.5.0-alpha02 содержит эти коммиты .

Изменения API

  • Мы добавили поддержку Wear Compose LazyColumn с помощью нашего ScreenScaffold (и добавили реализацию ScrollInfoProvider для LazyColumnState ). ( Ib8d29 )
  • Мы добавили viewportSize в LazyColumnLayoutInfo . ( I4187f )

Исправления ошибок

  • Мы исправили ошибку, из-за которой поворотная прокрутка теперь отключена в ScalingLazyColumn , когда для флага userScrollEnabled установлено значение false . ( I490ab , б/360295825 )
  • Мы исправили ошибку, устраняющую непредвиденное вертикальное заполнение изогнутого текста. Высота изогнутого текста теперь более точно соответствует фактическому пространству, используемому текстом. Обратите внимание, что это может привести к сбою тестов скриншотов, включающих изогнутый текст ( Iaa6ef ).
  • Мы вернули исправление ошибки в Dialog , где обратный вызов onDismissRequest вызывался, когда showDialog было установлено значение false, поскольку в некоторых случаях это приводило к многократному вызову onDismissRequest . ( I64656 )

Версия 1.5.0-альфа01

4 сентября 2024 г.

Выпущен androidx.wear.compose:compose-*:1.5.0-alpha01 . Версия 1.5.0-alpha01 содержит эти коммиты .

Изменения API

  • Мы добавили новый LazyColumn в библиотеку Wear Compose Foundation со связанными API-интерфейсами LazyColumnState и LazyColumnScope . Это служит основой для создания настраиваемых эффектов масштабирования и морфинга с помощью Wear Compose. ( Ib3b22 )
  • Мы добавили индексированную версию itemsIndexed в LazyColumnScope как часть нового API LazyColumn . ( Ib4a57 )
  • Мы добавили модификаторы LazyColumn для поддержки масштабирования и морфинга. ( Ie229a )
  • HierarchicalFocusCoordinator повышен до стабильной версии. ( I31035 )
  • Мы добавили поддержку межбуквенного интервала в изогнутом тексте. ( I3c740 )
  • В CurvedLayout.curvedComposable добавлен параметр rotationLocked , позволяющий остановить вращение компонентов. ( I66898 )
  • Временный API LocalUseFallbackRippleImplementation из износного материала и износного материала3 был удален ( I62282 ).
  • Удален WearDevices.SQUARE из мультипредпросмотра @WearPreviewDevices ( I11c02 ).

Исправления ошибок

  • SwipeToReveal теперь размещает отображаемые элементы в видимой части экрана. Это помогает, когда SwipeToReveal используется внутри списка, поэтому элементы всегда доступны для взаимодействия и никогда не выходят за пределы экрана. ( I38929 )
  • SwipeToReveal теперь сбрасывает значение lastActionType до None после завершения animatedTo . ( I59b03 )
  • Улучшена документация для нового параметра rotationLocked в curvedComposable . ( Ifbd57 )
  • Исправлен сбой при передаче NaN в performFling ScalingLazyColumnSnapFlingBehavior . ( Ic13da )
  • Исправлена ​​ошибка модификатора размера изогнутого макета ( I0fedf ).
  • Мы добавили поддержку интервала между буквами, указанного в «sp». ( I9f6e3 )
  • Мы исправили ошибку в диалоге Material2, из-за которой обратный вызов onDismissRequest не вызывался, когда диалог становился невидимым ( I64656 ).
  • LayoutCoordinates.introducesFrameOfReference переименован в LayoutCoordinates.introducesMotionFrameOfReference , чтобы лучше отражать его назначение. Переименована связанная функция для расчета координат на основе этого флага. ( I3a330 )

Версия 1.4

Версия 1.4.1

12 февраля 2025 г.

Выпущен androidx.wear.compose:compose-*:1.4.1 . Версия 1.4.1 содержит эти коммиты .

Исправления ошибок

  • Мы предприняли меры против сбоя при доступе к глобальной настройке уменьшения движения, которая срабатывала на некоторых платформах, где этот параметр не был предусмотрен. ( I01e2c )

Версия 1.4.0

4 сентября 2024 г.

Выпущен androidx.wear.compose:compose-*:1.4.0 . Версия 1.4.0 содержит эти коммиты .

Важные изменения с версии 1.3.0

  • ScalingLazyColumn и Picker теперь по умолчанию поддерживают поворотный ввод — рекомендуется удалить явную поворотную обработку и перейти к поведению системы по умолчанию. При необходимости используйте параметр rotaryScrollableBehavior для настройки поведения прокрутки или привязки — для поведения привязки рекомендуется обеспечить поведение привязки и возможности сенсорной прокрутки с помощью параметра flingBehavior .
  • Modifier.rotaryScrollable — это новый модификатор, который соединяет события вращения с прокручиваемыми контейнерами, позволяя пользователям прокручивать с помощью заводной головки или вращающегося безеля на устройстве Wear OS.
  • SwipeDismissableNavHost теперь предоставляет анимацию входа для переходов внутри приложения.
  • PositionIndicator теперь отображается по умолчанию при первом отображении экрана.

Дополнительные изменения

Версия 1.4.0-rc01

21 августа 2024 г.

Выпущен androidx.wear.compose:compose-*:1.4.0-rc01 . Версия 1.4.0-rc01 содержит эти коммиты .

  • Мы обновили зависимости Compose до 1.7.0-rc01 и закрепили Wear Compose Navigation в androidx.lifecycle 2.8.3.

Версия 1.4.0-бета03

12 июня 2024 г.

Выпущен androidx.wear.compose:compose-*:1.4.0-beta03 . Версия 1.4.0-beta03 содержит эти коммиты .

Исправления ошибок

  • Мы обновили Modifier.rotaryScrollable , заменив использование «focusable» на «focusTarget», что повышает производительность. ( Id294b )
  • Мы исправили проблему, из-за которой ProgressIndicator повторял свое объявление в TalkBack . ( I94563 )
  • Мы обновили базовые профили библиотеки Wear Compose. ( I3cbc3 )

Версия 1.4.0-бета02

29 мая 2024 г.

Выпущен androidx.wear.compose:compose-*:1.4.0-beta02 . Версия 1.4.0-beta02 содержит эти коммиты .

Исправления ошибок

  • Мы увеличили ширину границы, передаваемой программам чтения с экрана из изогнутого текста, чтобы устранить проблемы с усечением ( Id865f ).
  • Мы ограничили границу HorizontalPageIndicator , который передавался программам чтения с экрана — раньше индикатор занимал весь экран ( Id8d7a ).

Версия 1.4.0-бета01

14 мая 2024 г.

Выпущен androidx.wear.compose:compose-*:1.4.0-beta01 . Версия 1.4.0-beta01 содержит эти коммиты .

В выпуске Compose for Wear OS 1.4-beta01 указано, что этот выпуск библиотеки является полнофункциональным, а API заблокирован (за исключением случаев, помеченных как экспериментальные). Wear Compose 1.4 включает в себя следующие новые функции:

  • Мы добавили Modifier.rotaryScrollable , новый модификатор, который соединяет вращающиеся события с прокручиваемыми контейнерами, позволяя пользователям прокручивать с помощью заводной головки или вращающегося безеля на своем устройстве Wear OS. Кроме того, ScalingLazyColumn и Picker теперь по умолчанию поддерживают поворотный ввод. Используйте параметр rotaryScrollableBehavior , чтобы настроить поведение прокрутки или привязки. Для поведения привязки рекомендуется обеспечить привязку через параметр flingBehavior , а также для сенсорной прокрутки.
  • SwipeDismissableNavHost теперь предоставляет анимацию входа для переходов внутри приложения.
  • PositionIndicator теперь отображается по умолчанию при первом отображении экрана.
  • SelectableChip и SplitSelectableChip были добавлены как вариант ToggleChip — используйте их с RadioButton , чтобы обеспечить выбираемую семантику вместо переключаемой семантики для обеспечения доступности.
  • ListHeader теперь поддерживает регулировку высоты, когда содержимому требуется дополнительная высота для размещения шрифтов большого размера.

Исправления ошибок

  • Мы исправили ошибку, из-за которой выбираемые фишки объявляли двойное нажатие для переключения, если они уже выбраны. ( I7ed88 )

Версия 1.4.0-альфа08

1 мая 2024 г.

Выпущен androidx.wear.compose:compose-*:1.4.0-alpha08 . Версия 1.4.0-alpha08 содержит эти коммиты .

Изменения API

  • Мы внесли следующие изменения в новый ротационный API: переименовали Modifier.rotary в Modifier.rotaryScrollable ; переименовал интерфейс RotaryBehavior в RotaryScrollableBehavior , а его функцию handleScrollEvent в performScroll ; переименовал RotaryScrollableAdapter в RotaryScrollableLayoutInfoProvider и удалил свойство scrollableState . ( I0c8a6 )
  • Мы внесли дополнительные изменения в ротационный API: переименовали RotaryScrollableLayoutInfoProvider в RotarySnapLayoutInfoProvider (поскольку этот провайдер нужен только для ротации с привязкой); изменил тип параметра snapOffset в RotaryScrollableDefaults.snapBehavior snapOffset с Int на Dp. ( Иддебе )
  • Мы переименовали параметр clickInteractionSource в SplitSelectableChip containerInteractionSource . ( Ia8f84 )
  • Мы обновили имена параметров обратного вызова щелчка для SplitSelectableChip — с onClick на onSelectionClick и с onBodyClick на onContainerClick . ( я32237 )

Исправления ошибок

  • Мы обновили горизонтальное отступы для PositionIndicator до 2dp (было 5dp), чтобы исправить ошибку, при которой PositionIndicator (полоса прокрутки) перекрывал прокручиваемый контент. Обратите внимание, что это изменение, как ожидается, приведет к поломке существующих снимков экрана, включающих PositionIndicator , из-за изменения заполнения. ( I57472 )
  • Мы улучшили документацию для нового роторного API, описав различия между поворотными устройствами с низким и высоким разрешением. ( I63abe )
  • Мы устранили исключение выхода за пределы допустимого диапазона в SwipeDismissableNavHost , которое могло сработать, когда интерполированные значения альфа были меньше нуля. ( Ib75a1 , б/335782510 )

Версия 1.4.0-альфа07

17 апреля 2024 г.

Выпущен androidx.wear.compose:compose-*:1.4.0-alpha07 . Версия 1.4.0-alpha07 содержит эти коммиты .

Изменения API

  • Мы добавили Modifier.rotary — новый модификатор, который связывает поворотные события с прокручиваемыми контейнерами, позволяя пользователям прокручивать с помощью заводной головки или вращающегося безеля на устройстве Wear OS. Кроме того, ScalingLazyColumn и Picker теперь по умолчанию поддерживают поворотный ввод с новыми перегрузками, которые включают параметр rotaryBehavior для указания конфигурации прокрутки или привязки. Если параметр rotaryBehavior настроен на привязку, рекомендуется также обеспечить привязку через параметр flingBehavior для сенсорной прокрутки. ( I2ef6f )
  • Источники NestedScroll Drag и Fling заменяются UserInput и SideEffect , чтобы обеспечить расширенное определение этих источников, которые теперь включают анимацию (Side Effect) и колесо мыши и клавиатуру (UserInput). ( I40579 )
  • Мы добавили SelectableChip и SplitSelectableChip , чтобы сделать различие между переключаемыми элементами управления, такими как Switch/Checkbox , и выбираемыми элементами управления, такими как RadioButton . Это заменяет ранее добавленные перегрузки ToggleChip/SplitToggleChip параметрами selectionControl . ( Ia0217 )
  • Модификатор видимости IndeterminateStrokeWidth в ProgressIndicatorDefaults обновлен до общедоступного. ( I5b5a4 )

Версия 1.4.0-альфа06

3 апреля 2024 г.

Выпущен androidx.wear.compose:compose-*:1.4.0-alpha06 . Версия 1.4.0-alpha06 содержит эти коммиты .

Исправления ошибок

  • Мы добавили внутренний проект поддержки вращения в рамках более масштабной работы по переносу режима вращения в AndroidX от Horologie. ( I617d1 )
  • Мы добавили внутренний проект поддержки тактильных ощущений в рамках более масштабной работы по переносу режима вращения в AndroidX от Horologie. ( I5568a )

Версия 1.4.0-альфа05

20 марта 2024 г.

Выпущен androidx.wear.compose:compose-*:1.4.0-alpha05 . Версия 1.4.0-alpha05 содержит эти коммиты .

Изменения API

  • Мы сделали свойства initialCenterItemIndex и initialCenterItemScrollOffset объекта ScalingLazyListState общедоступными. ( I0c616 )
  • Мы сделали общедоступным FullScreenStrokeWidth из ProgressIndicatorDefaults . ( Ибеа23 )

Исправления ошибок

  • Мы улучшили производительность PositionIndicator , уменьшив количество вызовов layoutInfo из ScalingLazyColumn . ( Idc83d )

Версия 1.4.0-альфа04

6 марта 2024 г.

Выпущен androidx.wear.compose:compose-*:1.4.0-alpha04 . Версия 1.4.0-alpha04 содержит эти коммиты .

Изменения API

  • Мы добавили новую перегрузку для ToggleChip и SplitToggleChip , которая принимает параметр selectionControl вместо параметра toggleControl . Это следует использовать с элементом управления RadioButton , чтобы обеспечить выбираемую семантику вместо переключаемой семантики для доступности ( I1d6d9 ).
  • Мы обновили имена параметров для новой перегрузки selectionControl с onSelected на onSelect для ToggleChip и SplitToggleChip ( I1a971 ).

Версия 1.4.0-альфа03

21 февраля 2024 г.

Выпущен androidx.wear.compose:compose-*:1.4.0-alpha03 . Версия 1.4.0-alpha03 содержит эти коммиты.

Изменения API

  • Обертка Modifier.inspectable устарела. Этот API создаст больше недействительных модификаторов, чем необходимо, поэтому его использование теперь не рекомендуется. Разработчикам рекомендуется реализовать метод inspectableProperties() в ModifierNodeElement , если они хотят предоставить свойства модификатора инструментам. ( Ib3236 )

Исправления ошибок

  • Мы исправили ошибку документации для аннотаций WearPreview* . ( Ид526d )

Версия 1.4.0-альфа02

7 февраля 2024 г.

Выпущен androidx.wear.compose:compose-*:1.4.0-alpha02 . Версия 1.4.0-alpha02 содержит эти коммиты.

Исправления ошибок

  • Мы исправили ошибку в функции смахивания для раскрытия, из-за которой можно было взаимодействовать с совершенным действием над одним элементом (и отменять его), начав смахивать другой элемент. ( Ide059 ).
  • Мы обновили ListHeader для поддержки регулировки высоты, когда содержимому требуется дополнительная высота для размещения шрифтов большого размера. ( I7290c , б / 251166127 )

Версия 1.4.0-альфа01

24 января 2024 г.

Выпущен androidx.wear.compose:compose-*:1.4.0-alpha01 . Версия 1.4.0-alpha01 содержит эти коммиты.

Новые функции

  • Мы добавили анимацию входа в SwipeDismissableNavHost для переходов внутри приложения. ( cfeb79a ).
  • PositionIndicator теперь отображается по умолчанию при первом отображении экрана. Это изменение было введено для того, чтобы обеспечить соответствие рекомендациям по качеству износа. К сожалению, это означает, что тесты снимков экрана необходимо будет обновить на экранах, которые включают PositionIndicator , поскольку PositionIndicator ранее не отображался. ( 419cef7 )

Изменения API

  • Мы добавили новый API-интерфейс Ripple в библиотеки wear:compose-material и wear:compose-material3 , который заменяет устаревший rememberRipple . Также добавляется временный CompositionLocal , LocalUseFallbackRippleImplementation , чтобы вернуть компоненты Material к использованию устаревших API rememberRipple/RippleTheme . Это будет удалено в следующем стабильном выпуске и предназначено только для временного облегчения миграции в тех случаях, когда вы предоставляете собственный RippleTheme . Посетите сайт Developer.android.com для получения информации о миграции и дополнительной информации об этом изменении. ( af92b21 )
  • Мы обновили ColorScheme , сделав его неизменяемым, что сделало отдельные обновления цветов менее эффективными, но сделало более эффективным более частое использование цветов. Причина этого изменения заключается в том, что большинство приложений не будут использовать обновление отдельных цветов в качестве основного варианта использования. Это все еще возможно, но при этом потребуется больше перекомпоновок, чем раньше. В свою очередь, мы значительно уменьшим количество государственных подписок на весь код материала и повлияем на стоимость инициализации и времени выполнения для более стандартных вариантов использования. ( f5c48b7 )
  • Компоненты Wearmaterial и Wearmaterial3, предоставляющие MutableInteractionSource в своих API, были обновлены и теперь предоставляют MutableInteractionSource с нулевым значением, значение которого по умолчанию равно нулю. Здесь нет никаких семантических изменений: передача null означает, что вы не хотите поднимать MutableInteractionSource , и при необходимости он будет создан внутри компонента. Изменение значения на null позволяет некоторым компонентам никогда не выделять MutableInteractionSource , а другим компонентам — только лениво создавать экземпляр, когда это необходимо, что повышает производительность этих компонентов. Если вы не используете MutableInteractionSource , который передаете этим компонентам, рекомендуется вместо этого передать значение null. Также рекомендуется внести аналогичные изменения в ваши собственные компоненты. ( f8fa920 )
  • Мы обновили rememberExpandableState , чтобы сохранить расширяемое состояние. Это гарантирует, что данные сохраняются при переходе на другой экран и восстанавливаются при возвращении на исходный экран. ( 5c80095 )

Исправления ошибок

  • Мы обновили параметр ReduceMotion , чтобы использовать прослушиватель с учетом жизненного цикла. ( 7c6b122 )
  • Мы обновили прослушиватель TouchExplorationStateProvider , чтобы он учитывал жизненный цикл ( be28b01 ).
  • Мы удалили слой MaterialCore для CompactButton для повышения производительности ( 25db8e9 ).
  • Мы сделали BasicSwipeToDismissBox более устойчивым к смещениям NaN, чтобы избежать исключений ( b983739 ).
  • Мы обновили BasicSwipeToDismissBox , чтобы гарантировать, что значения альфа находятся в диапазоне 0,1.
  • Мы исправили ошибку в ToggleButton , SplitToggleButton , Checkbox , Switch и RadioButton , чтобы объявления о доступности не повторялись (ранее дублировались семантические роли) ( d11eeb7 ).

Версия 1.3

Версия 1.3.1

3 апреля 2024 г.

Выпущен androidx.wear.compose:compose-*:1.3.1 . Версия 1.3.1 содержит эти коммиты .

Исправления ошибок

  • Мы исправили ошибку в функции смахивания для раскрытия, из-за которой можно было взаимодействовать с совершенным действием над одним элементом (и отменять его), начав смахивать другой элемент. ( Иде059 )

Версия 1.3.0

24 января 2024 г.

Выпущен androidx.wear.compose:compose-*:1.3.0 . Версия 1.3.0 содержит эти коммиты.

Важные изменения с версии 1.2.0

  • Класс SwipeToDismissBoxState , перечисление SwipeToDismissValue и функция расширения Modifier.edgeSwipeToDismiss теперь являются частью пакета androidx.wear.compose.foundation , а не пакета androidx.wear.compose.material . Эта обновленная архитектура позволяет реализовать обработку жестов независимо от других соображений проектирования. Рабочие процессы Material Design, такие как применение цветов из настроенной темы, обрабатываются отдельно.
  • Классы SwipeToRevealCard и SwipeToRevealChip помогают реализовать recommended swipe-to-reveal guidance . Класс SwipeToRevealSample демонстрирует, как использовать эти компоненты.
  • В нашей версии 1.3.0-alpha02 внесено изменение, благодаря которому объекты Chip и ToggleChip увеличиваются в высоту, чтобы лучше поддерживать масштабирование шрифтов, выбранное пользователем. Это может привести к некоторому отсечению. Чтобы устранить эту проблему, large фигура для MaterialTheme теперь использует больший радиус угла (26 dp вместо 24 dp). Объекты Chip и ToggleChip используют этот новый угловой радиус, чтобы избежать обрезки содержимого по углам Chip и ToggleChip .

    • Большинство Chips и ToggleChips не изменились, учитывая их высоту по умолчанию 52 dp. Однако объекты Chip и ToggleChip , которые содержат несколько строк основного или дополнительного текста метки или для которых высота была переопределена, могут привести к сбою тестов скриншотов.

Дополнительные изменения

Более полный набор изменений, представленных в версии 1.3.0, см. в примечаниях к выпуску beta01 .

Рекомендации по реализации

  • Если ваше приложение позволяет пользователям перемещаться по содержимому экрана, например, в приложении на основе карты, отключите обработку пролистывания, задав для userSwipeEnabled значение false в составном элементе SwipeDismissableNavHost и включите кнопку, позволяющую пользователям перейти на предыдущий экран.
  • Чтобы отключить анимацию для индикатора положения во время анимации плавного появления и изменения положения в прокручиваемом списке, используйте объект SnapSpec .
  • Ожидая, пока мультимедийное приложение загрузит контент для воспроизведения, покажите пустой составной Placeholder .
  • Чтобы создать коллекцию расширяемых элементов по требованию, рассмотрите возможность использования экспериментального класса ExpandableStateMapping .

Версия 1.3.0-rc01

10 января 2024 г.

Выпущен androidx.wear.compose:compose-*:1.3.0-rc01 . Версия 1.3.0-rc01 содержит эти коммиты.

Исправления ошибок

  • Мы обновили большую фигуру MaterialTheme , чтобы использовать радиус закругленных углов 26dp, и теперь он будет использоваться Chip и ToggleChip . Это изменение необходимо для поддержки регулировки высоты, когда содержимому требуется дополнительная высота для размещения шрифтов большого размера — в противном случае существующая форма стадиона обрезает часть текстового содержимого.

    Текст обрезан по углам
    Рисунок 1. Текст обрезан по углам.
    Текст не обрезан
    Рисунок 2. Текст не обрезан.

    Это изменение может привести к сбоям в скриншотных тестах. ( I2e6ae )

Версия 1.3.0-beta02

13 декабря 2023 г.

Выпущен androidx.wear.compose:compose-*:1.3.0-beta02 . Версия 1.3.0-beta02 содержит эти коммиты.

Исправления ошибок

  • Мы восстановили предполагаемое движение смахивания в BasicSwipeToDismissBox . В предыдущей версии это было изменено, так что часть перехода при скольжении происходила, когда палец касался экрана. ( ID8e76 )

Версия 1.3.0-бета01

15 ноября 2023 г.

Выпущен androidx.wear.compose:compose-*:1.3.0-beta01 . Версия 1.3.0-beta01 содержит эти коммиты.

В выпуске Compose for Wear OS 1.3-beta01 указано, что этот выпуск библиотеки является полнофункциональным, а API заблокирован (кроме тех случаев, когда он помечен как экспериментальный). Wear Compose 1.3 включает в себя следующие новые функции:

  • SwipeToDismissBoxState , SwipeToDismissValue и Modifier.edgeSwipeToDismiss были перенесены из androidx.wear.compose.material в androidx.wear.compose.foundation вместе с базовой реализацией смахивания для закрытия в BasicSwipeToDismissBox . Это позволяет использовать обработку жестов для пролистывания для закрытия независимо от Material Design, например, из SwipeDismissableNavHost в androidx.wear.compose.navigation . SwipeToDismissBox из androidx.wear.compose.material по-прежнему рекомендуется использовать с Material Design, поскольку он извлекает цвета из MaterialTheme , а затем делегирует оставшуюся реализацию BasicSwipeToDismissBox .
  • SwipeDismissableNavHost теперь поддерживает новый параметр userSwipeEnabled , поэтому обработку пролистывания можно отключить для экранов, где она не требуется.
  • BasicSwipeToDismissBox улучшена обработка фокуса с помощью HierarchicalFocusCoordinator .
  • SwipeToReveal имеет новые составные элементы SwipeToRevealCard и SwipeToRevealChip в Material, которые соответствуют рекомендуемому руководству по пользовательскому интерфейсу для Card и Chip . Он также имеет поддержку отмены вторичного действия.
  • DefaultTextStyle теперь отключает заполнение шрифта, чтобы обеспечить единообразие на платформе Android.
  • Chip и ToggleChip теперь регулируют свою высоту, чтобы разместить контент, который увеличился из-за больших шрифтов для обеспечения доступности.
  • PositionIndicator теперь имеет отдельные спецификации анимации для анимации постепенного появления, исчезновения и изменения положения. Из соображений производительности мы рекомендуем отключать постепенное появление и изменение положения при использовании с прокручиваемыми списками.
  • ExpandableStateMapping предоставляет новый способ создания ExpandableStates , когда их необходимо создавать по требованию и не обязательно с использованием области @Composable .
  • Placeholder теперь позволяет выполнить сброс, если контент больше не находится в готовом состоянии. Кроме того, настройка уменьшения движения теперь применяется к эффекту мерцания и стирающему движению на Placeholder .

Известные проблемы

  • PositionIndicator изначально не отображается при первом отображении экрана. Мы намерены внести изменения в раннюю альфа-версию 1.4, чтобы она изначально отображалась, но без какой-либо анимации.

Изменения API

  • Мы переименовали SwipeToDismissBox базового уровня в BasicSwipeToDismissBox . Это делает различие между компонентом уровня Foundation и SwipeToDismissBox уровня материала более четким. Последний извлекает цвета из MaterialTheme для использования в скримах и делегирует оставшуюся реализацию BasicSwipeToDismissBox . ( Ибекфк )
  • Мы пометили rememberExpandableStateMapping как экспериментальный и улучшили expandableItem . ( I5f6bc )
  • Мы заменили класс SwipeToRevealAction в API-интерфейсах Material SwipeToReveal Card и Chip на API-интерфейс на основе слотов, используя составные элементы SwipeToRevealPrimaryAction , SwipeToRevealSecondaryAction и SwipeToRevealUndoAction . См. пример кода для примеров использования нового API. ( Ia8943 )
  • Мы заменили флаги анимации PositionIndicator параметрами AnimationSpec . Отдельные анимации можно отключить, передав snap в качестве AnimationSpec . ( I6c523 )

Исправления ошибок

  • Мы исправили ошибку, вызванную ограниченным изогнутым текстом при ограниченном размере ( I50efe ).
  • Мы устранили потенциальный сбой NaN, связанный с curvedComposable ( I970eb ).
  • Мы отменили удаление анимации выделения изменения позиции в PositionIndicator . ( Ieb424 )
  • Мы удалили слой ядра материала для материала Chip, чтобы улучшить его производительность. ( Если2dcb )

Версия 1.3.0-альфа08

18 октября 2023 г.

Выпущен androidx.wear.compose:compose-*:1.3.0-alpha08 . Версия 1.3.0-alpha08 содержит эти коммиты.

Изменения API

  • Мы добавили отдельные флаги в перегрузки PositionIndicator для управления различными анимациями: showFadeInAnimation , showFadeOutAnimation и showPositionAnimation . Предыдущий API устарел и перенаправляет вызовы на новый. По соображениям производительности и согласованности пользовательского интерфейса, когда PositionIndicator используется с прокручиваемым списком, мы рекомендуем отключать флаги showFadeInAnimation и showPositionAnimation . Если PositionIndicator используется как самостоятельный индикатор, например, для изменения объема, то мы рекомендуем включить все 3 анимации. ( I44294 )
  • Мы объявили устаревшими Material SwipeToDismissBoxState , SwipeToDismissValue и edgeSwipeToDismiss после переноса функции Swipe-to-Dismiss в wear.compose.foundation . Пожалуйста, замените эквивалентами wear.compose.foundation . ( Iee8c9 )

Исправления ошибок

  • Мы обновили базовые профили для библиотек износа, материалов и навигации. ( Идб060 )
  • Мы отменили изменение поведения PositionIndicator , введенное в предыдущем CL, так что PositionIndicator анимировался при первоначальном отображении экрана. Мы намерены внести аналогичное изменение в раннюю альфа-версию 1.4, чтобы изначально PositionIndicator отображался, но без какой-либо анимации. ( I41843 )
  • Мы устранили некоторые проблемы с производительностью в PositionIndicator . ( I1c654 , б/302399827 )
  • Мы оптимизировали производительность реализации по умолчанию поставщика состояний исследования касания, чтобы она полагалась на State<Boolean> , а не на производное состояние. ( Ieec4d )
  • Мы установили прямоугольники systemGestureExclusion для Android 13 и выше. ( Ib1f4b )

Версия 1.3.0-альфа07

4 октября 2023 г.

Выпущен androidx.wear.compose:compose-*:1.3.0-alpha07 . Версия 1.3.0-alpha07 содержит эти коммиты.

Изменения API

  • Мы добавили в PositionIndicator отдельные флаги для управления различными анимациями: showFadeInAnimation , showFadeOutAnimation и showPositionAnimation . The previous API has been deprecated and forwards calls to the new one. For performance reasons and for UX consistency, when the PositionIndicator is used with a scrollable list, we recommend switching off showFadeInAnimation and showPositionAnimation flags. If PositionIndicator is used as a standalone indicator, for example for volume change, then we recommend having all 3 animations turned on. ( Ia2d63 )

Bug Fixes

  • We have made improvements to the swipe to reveal motion by adding a fade animation to the primary action text, and fading the secondary action/changing the icon scale on full swipe expansion. ( Ib7223 )
  • It is recommended that Swipe to Reveal actions are made accessible and we have added custom accessibility actions to our Swipe to Reveal samples. ( I42224 )
  • We have improved the performance of SwipeToDismissBox , including refactoring to ensure that the initial logic does not trigger a recomposition. The SwipeToDismissBox is now drawn as the full screen size. ( Ie0aa2 )
  • We have fixed a bug when the PositionIndicator incorrectly disappeared. ( I2091a )
  • Improved performance of PositionIndicator by optimizing recompositions. New flags to control the animations ( fadeIn , fadeOut and positionChange ) have been added subsequently (see API Changes) ( Ifac7d )
  • We have added Microbenchmark tests for PositionIndicator ( Idf875 )

Version 1.3.0-alpha06

20 сентября 2023 г.

androidx.wear.compose:compose-*:1.3.0-alpha06 is released. Version 1.3.0-alpha06 contains these commits.

Bug Fixes

  • We have added support for Modifier.edgeSwipeToDismiss with SwipeToReveal . ( I95774 , b/293444286 )
  • We have added samples for the Material SwipeToRevealChip and SwipeToRevealCard . ( Ieb974 )
  • We have updated the baseline profiles for Wear Compose Foundation and Material libraries. ( I1dd1f )

Version 1.3.0-alpha05

September 6, 2023

androidx.wear.compose:compose-*:1.3.0-alpha05 is released. Version 1.3.0-alpha05 contains these commits.

Bug Fixes

  • We have added handling in Swipe to Reveal so that only one item at a time can be swiped. ( I3cd7a )
  • Improved the documentation of ScalingLazyColumnDefaults to better match its actual behavior. ( I886d3 )

Version 1.3.0-alpha04

23 августа 2023 г.

androidx.wear.compose:compose-*:1.3.0-alpha04 is released. Version 1.3.0-alpha04 contains these commits.

Новые функции

  • We have added undo support for the secondary action of SwipeToReveal . ( I7a22d )

API Changes

  • Add HorizontalPageIndicator in Wear Material3 library. ( Ifee99 )
  • Updated Wear Compose preview tooling to use the androidx.wear.tooling.preview library. ( Ib036e )

Bug Fixes

  • Fix a bug in round buttons where modifiers were not chained correctly. ( I5e162 )

Version 1.3.0-alpha03

August 9, 2023

androidx.wear.compose:compose-*:1.3.0-alpha03 is released. Version 1.3.0-alpha03 contains these commits.

API Changes

  • We have added two new composables in Material for implementing SwipeToReveal with Cards and Chips. These composables follow the recommended UX guidance on the component and make it easier for developers to implement SwipeToReveal with the existing components in Wear Material. ( I7ec65 )
  • We have turned on the FloatRange annotations as API constraints, which were previously stated in comments. ( Icb401 )

Bug Fixes

  • We have moved the initial scrolling logic of ScalingLazyColumn inside onGloballyPositioned() . ( Ic90f1 )
  • We are now using drawWithCache in PositionIndicator , ProgressIndicator , and SelectionControls to optimize stroke allocations. ( I5f225 , b/288234617 )
  • We have fixed checkbox tick visibility in disabled states. ( Ib25bf )
  • We have updated Placeholder to allow resetting to show the placeholder if the content is no longer in the ready state. ( Ibd820 )
  • We have made some fixes to flaky Placeholder tests ( Idb560 )

Version 1.3.0-alpha02

July 26, 2023

androidx.wear.compose:compose-*:1.3.0-alpha02 is released. Version 1.3.0-alpha02 contains these commits.

API Changes

  • We have provided ExpandableStateMapping , a new way to generate ExpandableStates , for cases in which they need to be created on demand, not necessarily within a @Composable scope ( Iff9e0 )
  • SwipeToDismissBox has been migrated from androidx.wear.compose.material to androidx.wear.compose.foundation package. ( I275fb )
  • Updated API files to annotate compatibility suppression. ( I8e87a , b/287516207 )
  • We have made the height constants for Chip , CompactChip and ToggleChip public ( Idbfde )
  • We have made the horizontal and vertical paddings for Chip and CompactChip public. ( Ieeaf7 )
  • Added functionality to turn off swipe handling in SwipeDismissableNavHost via the new userSwipeEnabled parameter. ( Id2a0b , b/230865655 )
  • We have updated the Wear Compose Navigation library to use the new SwipeToDismissBox from Wear Compose Foundation. ( I4ff8e )

Bug Fixes

  • We have fixed a z-order bug where expandedItem did not show the correct content after clicking a button's behavior when they have buttons. ( I1899d , b/289991514 )
  • Improve focus handling of SwipeToDismissBox (and hence SwipeDismissableNavHost ) using the HierarchicalFocusCoordinator ( I45362 , b/277852486 )
  • We have made a fix to the gesture handling in SwipeableV2 . ( I89737 )
  • We have finalized the baseline profiles for our 1.2 release. ( Id5740 )
  • Following the migration of SwipeToDismissBox to Foundation, the Material SwipeToDismissBox implementation now forwards to Foundation and supplies default color values from its theme.( If8451 )
  • We have added heading semantics to ListHeader . ( Ic5420 )
  • Chip and ToggleChip will now adjust their height to accommodate content that has grown due to large fonts for accessibility, when required. ( Iaf302 )
  • Fixed a bug in the semantic role of SplitToggleChip 's tappable area, for accessibility. ( Ieed3a )
  • The reduce motion setting now turns off the shimmering effect and wipe-off motion on placeholders. ( I91046 )
  • Stepper and InlineSlider now support repeated clicks on long press so that you can quickly increase/decrease value of Stepper and InlineSlider by holding the + or - buttons. ( I27359 )

Version 1.3.0-alpha01

June 21, 2023

androidx.wear.compose:compose-*:1.3.0-alpha01 is released. Version 1.3.0-alpha01 contains these commits.

Bug Fixes

  • As announced in 1.2.0-alpha07 and 1.2.0-alpha10 , we are now changing the DefaultTextStyle to turn off font padding to be consistent across the Android Platform. This will address some cases of text clipping with large font sizes and may also impact screen layouts, so that screenshot tests need to be updated. For example, we see text clipping here ( Ic6a86 )
Text clipped with large font size
Figure 1 : Text clipped.
  • It is no longer present when font padding is turned off:
Text not clipped with large font size
Figure 2 : Text not clipped.
  • We have updated wear.compose.foundation to be an API dependency of wear.compose.material ( I72004 , b/285404743 )
  • We have fixed a bug in SwipeToDismissBox . Background and content keys are now passed to the remember block so that new modifiers are created when the content or background changes. ( Ib876c , b/280392104 )
  • We have updated TimeText to use the locale when choosing the format for 12 or 24 hour time. ( If4a3d )
  • We have fixed an inconsistency in SwipeToDismissBox contentScrimColor default parameters. ( I2d70f )
  • We have improved the motion handling in SwipeToReveal . ( I28fb7 )

Известные проблемы

  • Supporting user-configured font sizes is an accessibility requirement. We know that multiline Chips can lead to text-clipping when displayed with large font sizes, so we will be updating Chip in an early 1.3 alpha version to make height adjustments in those cases.

Версия 1.2

Version 1.2.1

October 18, 2023

androidx.wear.compose:compose-*:1.2.1 is released. Version 1.2.1 contains these commits.

Bug Fixes

  • Fixed a bug when the PositionIndicator incorrectly disappeared. ( 7a167f )

Version 1.2.0

August 9, 2023

androidx.wear.compose:compose-*:1.2.0 is released. Version 1.2.0 contains these commits.

Important changes since 1.1.0

Version 1.2.0-rc01

July 26, 2023

androidx.wear.compose:compose-*:1.2.0-rc01 is released. Version 1.2.0-rc01 contains these commits.

Bug Fixes

  • We have finalized the baseline profiles for our 1.2 release ( Id5740 )

Version 1.2.0-beta02

June 7, 2023

androidx.wear.compose:compose-*:1.2.0-beta02 is released. Version 1.2.0-beta02 contains these commits.

Новые функции

  • We have added the new experimental LocalReduceMotion CompositionLocal variable which disables scaling and fading on ScalingLazyColumn . ( I58024 )

Bug Fixes

  • We have updated the baseline profiles for the wear compose foundation and material libraries( I4725d )
  • We have fixed an inconsistency in the default values for SwipeToDismissBox contentScrimColor parameters ( I2d70f )
  • We have fixed the DefaultTextStyle default value used for the IncludeFontPadding setting ( I737ed )

Version 1.2.0-beta01

May 24, 2023

androidx.wear.compose:compose-*:1.2.0-beta01 is released. Version 1.2.0-beta01 contains these commits.

What's in Compose for Wear OS 1.2

The 1.2-beta01 release of Compose for Wear OS indicates that this release of the library is feature complete and the API is locked (except where marked as experimental). Wear Compose 1.2 includes the following new functionality:

  • expandableItem and expandableItems are two new Foundation components that support expanding items within a ScalingLazyColumn . Use expandableItem for a single expandable item, such as Text in which the number of lines. Use expandableItems for a group of expandable items and expandableButton to simplify creating a button that collapses after the content is expanded.
  • HierarchicalFocusCoordinator - this experimental composable enables marking sub-trees of the composition as focus enabled or focus disabled.
  • Picker - the API now includes userScrollEnabled to control whether the picker is active for user scrolling.
  • PickerGroup - a new composable for handling multiple pickers together. It handles focus between the pickers using the HierarchicalFocusCoordinator API and enables auto-centering of picker items.
  • Placeholder - we have made updates to the shimmer and 'Wipe Off' animations. The wipe-off effect is now immediately applied when the content is ready.
  • ScalingLazyColumn - we have migrated ScalingLazyColumn and associated classes from androidx.wear.compose.material.ScalingLazyColumn to androidx.wear.compose.foundation.lazy.ScalingLazyColumn . Please update to use the Foundation.Lazy version.
  • SwipeToReveal - we have added experimental support for swipe-to-reveal as a means to access secondary actions, supplementing the existing 'long press' pattern.
  • Stepper - now has an overload with an additional enableRangeSemantics parameter to facilitate disabling the default range semantics.
  • Previews - we have added the following custom annotations for previewing composables on Wear screens: WearPreviewSmallRound previews the composable on a small, round device; WearPreviewLargeRound previews the composable on a large round device; WearPreviewSquare previews the composable on a square device. Also, the following and multi-preview annotations: WearPreviewFontScales previews the composables on a wear device with multiple font sizes, while WearPreviewDevices previews the composables on different wear devices.
  • We have added a DefaultTextStyle to Wear Compose which defaults the PlatformTextStyle.includeFontPadding property to true (this is the current setting). This will allow us to synchronize turning off font padding by default with the Compose libraries in an early 1.3 alpha version - see 1.2.0-alpha10 for more information.

Новые функции

  • We have added experimental support for disabled scaling and fading animation when reduce_motion setting is switched on. ( I58024 )

Bug Fixes

  • Improved documentation for angularWidthDp in CurvedSize.kt ( Iab75c )
  • SwipeDismissableNavHost now logs a warning with potential causes of empty backstack. This is done to prevent unexpected crashes caused because of IllegalArgumentException which was thrown when the backstack was empty. ( I04a81 , b/277700155 )

Version 1.2.0-alpha10

May 10, 2023

androidx.wear.compose:compose-*:1.2.0-alpha10 is released. Version 1.2.0-alpha10 contains these commits.

Новые функции

  • We have added support for Swipe to Reveal, as a means to access secondary actions. This pattern supplements the 'long press' pattern, the existing way a user could reveal (different) secondary actions. ( I60862 )

API Changes

  • We have added RevealScope to action composables in SwipeToReveal , which gives access to the offset at which additional actions are revealed. ( I3fd56 )

Bug Fixes

  • Fixed an issue with ScalingLazyColumn being stuck on Wear API 33 after fling ( Ic4599 )
  • We have made some performance improvements to PositionIndicator for jank reduction. ( I35e92 )
  • We have fixed a bug in Chip and CompactChip where the semantic role was no longer being set to Role.Button . ( I93f91 , b/277326264 )

Известные проблемы

  • We have identified a bug in Android Studio which causes failure in rendering preview when annotated with @WearPreviewDevices and @WearPreviewFontScales - a fix is planned for release soon. Please note that the other wear preview annotations work as intended in Android Studio Giraffe 2022.3.1 and beyond.

  • In version 1.2.0-alpha07 we added DefaultTextStyle to Wear Compose, maintaining the existing PlatformTextStyle.includeFontPadding value as true - for background, see Fix font padding in Compose . We will be changing the DefaultTextStyle to turn off font padding in an early 1.3 alpha version, to be consistent across the Android Platform. This will address some cases of text clipping with large font sizes and may also impact screen layouts, so that screenshot tests need updating. For example, with large font sizes we see text clipping here:

Text clipped with large font size
Figure 1 : Text clipped.
  • It is no longer present when font padding is turned off:
Text not clipped with large font size
Figure 2 : Text not clipped.

The new setting can be adopted now by overriding the typography in your theme - see example code .

Version 1.2.0-alpha09

April 19, 2023

androidx.wear.compose:compose-*:1.2.0-alpha09 is released. Version 1.2.0-alpha09 contains these commits.

API Changes

  • Add angularSizeDp to the CurvedModifier api for setting angular width in DP ( I89a52 )

Bug Fixes

  • We have fixed accessibility issues in our time picker demos( Id0eb7 )

Version 1.2.0-alpha08

April 5, 2023

androidx.wear.compose:compose-*:1.2.0-alpha08 is released. Version 1.2.0-alpha08 contains these commits.

API Changes

  • We have renamed ExpandableItemsState to ExpandableState . ( If85ea )
  • We have added expandableButton to simplify creating a button that collapses when the content is expanded and also updated the expandables examples. ( Iae309 )

Bug Fixes

  • Improved expandable samples to show more possibilities. Modified animation of expandableItem to keep its content centered through the animation. ( I2f637 )
  • Updated ToggleControls to avoid extra recompositions when manually animating the colors using State. ( I5d319 )

Version 1.2.0-alpha07

March 22, 2023

androidx.wear.compose:compose-*:1.2.0-alpha07 is released. Version 1.2.0-alpha07 contains these commits.

API Changes

  • We have moved the Expandable Item components (added in 1.2.0-alpha06) from material to foundation, since they had no meaningful reference to the MaterialTheme . ( Ib0525 )

Bug Fixes

  • We have fixed a crash that occurred in a screen using PickerGroup , by ensuring that PickerGroup handles focus correctly when no Picker has the focus. Also added support for RSB scrolling in our Picker demos. ( If8c19 )
  • We have improved the dialog transitions - the intro transition is now smoother to match the outro transition. ( Ib5af9 )
  • We have added a DefaultTextStyle to Wear Compose which defaults the PlatformTextStyle.includeFontPadding property to true (this is the current setting). This will allows us to synchronize turning off font padding by default with the Compose libraries in the future - see ( Fix font padding in Compose ) for background. ( I2aee8 )
  • Reverted an UpsideDownCake preview dependency via activity-compose that blocked publishing apps to the Google Play Store. ( I6443d )

Version 1.2.0-alpha06

March 8, 2023

androidx.wear.compose:compose-*:1.2.0-alpha06 is released. Version 1.2.0-alpha06 contains these commits.

API Changes

  • Add CurvedBox component, which places components on top of each other in the curved world. ( I29200 )
  • Added Expandable Item(s) - two new components to support either a group of expandable items in a ScalingLazyColumn , or an expandable single item, such as Text in which the number of lines expands. ( I95dd5 )
  • We have added the following custom annotations for previewing composables on Wear screens: WearPreviewSmallRound previews the composable on a small, round device; WearPreviewLargeRound previews the composable on a large round device; WearPreviewSquare previews the composable on a square device. Also, the following and multi-preview annotations: WearPreviewFontScales previews the composables on a wear device with multiple font sizes, while WearPreviewDevices previews the composables on different wear devices. To use these previews, you must be using the latest Android Studio (Giraffe Canary 6) or beyond. Please note that if these annotations do not suit your purpose, Preview can still be used and supports further customisations via parameters. ( I397ff )
  • We have marked HierarchicalFocusCoordinator as experimental while it is considered as a candidate to be moved into core compose libraries, given its wide applicability. ( I3a768 )

Bug Fixes

  • Fixed a bug on HierarchicalFocusCoordinator , when the lambda passed in for the focusEnabled parameter is changed, we now correctly use the new one. ( Icb353 )
  • We have updated the default disabled content color to Background when using primary colors as the background in Button , CompactButton , Chip , CompactChip and ToggleButton . This improves the contrast for accessibility. ( I527cc )

Version 1.2.0-alpha05

February 22, 2023

androidx.wear.compose:compose-*:1.2.0-alpha05 is released. Version 1.2.0-alpha05 contains these commits.

API Changes

  • Updated PickerGroup API to allow propagating the min constraints to the composable optionally. When set as true, the minimum constraints passed from the parent composable will be allowed on the PickerGroup . If set as false, PickerGroup will reset the minimum constraints. ( I3e046 )
  • We have added animateScrollToOption to the Picker API in order to support programmatic animation to a specific Picker option ( I6fe67 )

Bug Fixes

  • We have updated HorizontalPageIndicator to support right-to-left layouts. ( Ia4359 )
  • Added Screenshot tests for right-to-left layout in HorizontalPageIndicator ( I6fbb8 )
  • Added further tests to SwipeDismissableNavHostTest that use TestNavHostController ( I61d54 )

Version 1.2.0-alpha04

February 8, 2023

androidx.wear.compose:compose-*:1.2.0-alpha04 is released. Version 1.2.0-alpha04 contains these commits.

Новые функции

  • PickerGroup for handling multiple pickers together using the focus API. It handles the focus between the different pickers, enables auto-centering of the pickers based on parameters and allows developers to change the focus between different pickers while handling the events from the group. In talkback mode, the PickerGroup handles the talkback focus by moving the focus to the selected Picker from the group. ( I60840 )

API Changes

  • We have added an overload to Stepper with an additional enableRangeSemantics parameter in order to facilitate disabling the default range semantics ( Ia61d4 )

Bug Fixes

  • Allow ScalingLazyColumn to be nested within a horizontally scrolling page ( Iec3f8 , b/266555016 )
  • Improvement of Stepper kdocs and StepperTest tests clean-up. ( Ic118e )
  • Updated androidx.navigation dependency to version 2.5.3 ( If58ed )

Version 1.2.0-alpha03

January 25, 2023

androidx.wear.compose:compose-*:1.2.0-alpha03 is released. Version 1.2.0-alpha03 contains these commits.

API Changes

  • We have migrated ScalingLazyColumn (and associated classes) from androidx.wear.compose.material.ScalingLazyColumn to andrdoidx.wear.compose.foundation.lazy.ScalingLazyColumn (see this example for migration). This new location more closely matches that of compose.foundation.lazy.LazyColumn and is more natural as it is not an opinionated Material component. The change is happening now in preparation for a new Material3 library, which we will be working on in parallel with the existing Material library. ( I060e7 )

The following changes are part of the ScalingLazyColumn migration from Material to Foundation.Lazy :

  • PositionIndicator apis targeting Material ScalingLazyColumn have been deprecated - please update to Foundation.Lazy ScalingLazyColumn . Additionally anchorType field was added to ScalingLazyListLayoutInfo . ( I29d95 )
  • ScalingLazyColumn has been marked as deprecated in the Wear Compose Material package ( I16d34 )
  • We have updated the ScrollAway modifier to use ScalingLazyListState from Wear Compose Foundation.Lazy and deprecated the overload that took ScalingLazyListState from Wear Compose Material. ( Ifc42c )
  • We have updated the Dialog APIs to use ScalingLazyListState from Foundation.Lazy and deprecated the overloads that used Material ScalingLazyListState ( Ic8960 )
  • We have updated the Picker APIs to use ScalingParams from Foundation.Lazy and deprecated the overloads that used Material ScalingParams . ( Idc3d8 )

Bug Fixes

  • We have fixed a bug that caused unnecessary recompositions in ScalingLazyListState.centerItemIndex by ensuring that it only pushes updates when the value actually changes ( Ia9f38 )
  • We have improved the performance of SwipeToDismissBox ( I3933b )
  • Added benchmark tests for ScalingLazyColumn in Wear Compose Foundation ( Ie00f9 )
  • We have updated some internal ScalingLazyColumn classes methods in Material to use their equivalents from Foundation.Lazy ( I38aab )
  • We have fixed some issues in Picker tests and add more tests for checking scroll with offset ( I6ac34 )
  • We migrated the ScalingLazyColumn Integration Demos to depend on Foundation.Lazy instead of Material ScalingLazyColumn ( Ic6caa )
  • We have added optional fromDate/toDate parameters to our DatePicker demo ( I961cd )

Version 1.2.0-alpha02

January 11, 2023

androidx.wear.compose:compose-*:1.2.0-alpha02 is released. Version 1.2.0-alpha02 contains these commits.

API Changes

  • Android Compose UI tests will now run layout passes for each frame when executing frames to get to idle (eg via waitForIdle ). This may affect tests that assert on individual frames of layout animations. ( I8ea08 , b/222093277 )
  • The parameter minLines is added to Wear Text for consistent behaviour with BasicText ( I24874 )
  • CompactChipTapTargetPadding has been made public so that it appears in the documentation ( If1e70 , b/234119038 )

Bug Fixes

  • Disable multiplatform builds for wear.compose packages ( Iad3d7 )
  • Fix kdocs for scrollToOption ( I6f9a0 )
  • PlaceholderState.rememberPlaceholderState() updated to use rememberUpdatedState to that the state will update if the onContentReady lambda. ( I02635 , b/260343754 )
  • We have fixed a text jittering issue seen in the Picker component by leveraging the new compositing strategy added to Modifier.graphicsLayer . ( I99302 )
  • We have fixed a bug that caused flickering in our DatePicker demo ( I660bd )
  • We have improved the accessibility for the 12-hour time and date picker demos ( I05e12 )
  • We have updated our time and date picker demos so that the pickers are not affected by RSB changes when unselected ( I4aecb )

Version 1.2.0-alpha01

December 7, 2022

androidx.wear.compose:compose-*:1.2.0-alpha01 is released. Version 1.2.0-alpha01 contains these commits.

Новые функции

  • We've updated the experimental Placeholder functionality so that the “Wipe Off” effect is immediately applied when the content is ready rather than waiting for the next animation loop to start. We have also made some updates to the shimmer and wipe off animations. ( I5a7f4 )

API Changes

  • We have added a HierarchicalFocusCoordinator composable to enable marking sub-trees of the composition as focus enabled or focus disabled.( I827cb )
  • We have added a new property to override the semantic role for ToggleButton .( I67132 )
  • We have updated TimeTextDefaults.TimeFormat12Hours to remove AM/PM in TimeText . This will change the default value of timeSource parameters in TimeText API. ( I1eb7f )
  • We have extended the Picker API to improve accessibility for screens with multi-picker. There is a new property userScrollEnabled to control whether the picker is active for user scrolling. ( I3c3aa )

Bug Fixes

  • We have changed the default border width for an OutlinedButton/OutlinedCompactButton from 2.dp to 1.dp to match final UX specs. ( Icf84d )
  • In order to reduce the effect of the first item added to an empty ScalingLazyColumn appearing to scroll into place we have added an estimated autoCentering topPadding when the contents are empty. This change calculates the amount of top padding needed by assuming an initial item of height 0.dp. For ScalingLazyListAnchorType.ItemStart this will calculate the correct top padding, for ScalingLazyListAnchorType.ItemCenter this calculation will be incorrect as the height of the items is needed to correctly size the contents resulting in a small scroll into place effect based on the items real height.( I239a4 )
  • We have updated the background scrim applied to the SwipeToDismiss animation to match the Wear platform. ( I9003e )
  • We have fixed PositionIndicator handling of LazyListState and ScalingLazyListState for list items of size 0 to avoid divide by zero errors.( Ic28dd )

Версия 1.1

Version 1.1.2

February 8, 2023

androidx.wear.compose:compose-foundation:1.1.2 , androidx.wear.compose:compose-material:1.1.2 , and androidx.wear.compose:compose-navigation:1.1.2 are released. Version 1.1.2 contains these commits.

Bug Fixes

  • We have fixed a bug that caused unnecessary recompositions in ScalingLazyListState.centerItemIndex by ensuring that it only pushes updates when the value actually changes ( Ia9f38 )

Version 1.1.1

January 11, 2023

androidx.wear.compose:compose-foundation:1.1.1 , androidx.wear.compose:compose-material:1.1.1 , and androidx.wear.compose:compose-navigation:1.1.1 are released. Version 1.1.1 contains these commits.

Bug Fixes

  • PlaceholderState.rememberPlaceholderState() updated to use rememberUpdatedState to that the state will update if the onContentReady lambda. ( I02635 , b/260343754 )

Version 1.1.0

December 7, 2022

androidx.wear.compose:compose-foundation:1.1.0 , androidx.wear.compose:compose-material:1.1.0 , and androidx.wear.compose:compose-navigation:1.1.0 are released. Version 1.1.0 contains these commits.

Important changes since 1.0.0

Новые функции

  • We've updated the experimental Placeholder functionality so that the “Wipe Off” effect is immediately applied when the content is ready rather than waiting for the next animation loop to start. We have also made some updates to the shimmer and wipe off animations. ( I5a7f4 )

Bug Fixes

  • We have changed the default border width for an OutlinedButton/OutlinedCompactButton from 2.dp to 1.dp to match final UX specs. ( Icf84d )
  • In order to reduce the effect of the first item added to an empty ScalingLazyColumn appearing to scroll into place we have added an estimated autoCentering topPadding when the contents are empty. This change calculates the amount of top padding needed by assuming an initial item of height 0.dp. For ScalingLazyListAnchorType.ItemStart this will calculate the correct top padding, for ScalingLazyListAnchorType.ItemCenter this calculation will be incorrect as the height of the items is needed to correctly size the contents resulting in a small scroll into place effect based on the items real height.( I239a4 )
  • We have updated the background scrim applied to the SwipeToDismiss animation to match the Wear platform.( I9003e )
  • We have fixed PositionIndicator handling of LazyListState and ScalingLazyListState for list items of size 0 to avoid divide by zero errors.( Ic28dd )

Version 1.1.0-rc01

November 9, 2022

androidx.wear.compose:compose-foundation:1.1.0-rc01 , androidx.wear.compose:compose-material:1.1.0-rc01 , and androidx.wear.compose:compose-navigation:1.1.0-rc01 are released. Version 1.1.0-rc01 contains these commits.

Bug Fixes

  • We have added baseline profile rules for Placeholders , ScrollAway , RadioButton , Switch , Checkbox , OutlinedButton , OutlinedCompactButton , OutlinedChip and OutlinedCompactChip . ( I8249c )
  • We have fixed a bug in Modifier.scrollAway so that if the specified itemIndex is invalid (for example, if that item index is out of range), then the TimeText will now still be displayed. ( I2137a )
  • We have updated the SwipeToDismissBox animation to match the platform implementation. After the initial squeeze animation, the screen now slides off to the right once the dismissal has been triggered. ( I41d34 )
  • As an optimization, we have updated Modifier.scrollAway to only read the scrollState inside the measure block to avoid recomposing the modifier after each remeasure. ( I4c6f1 )
  • We have added documentation and a sample to placeholders to show the correct ordering for Modifier.placeholder and Modifier.placeholderShimmer when applied to the same composable. ( Ie96f4 , b/256583229 )
  • We have changed the default border width for an OutlinedCompactChip/OutlinedChip from 2.dp to 1.dp to match final UX specs. ( Ib3d8e )
  • We have fixed a bug in rememberPickerState where updated inputs were not saved, so that composables were not updated after changes to the inputs. ( I49ff6 , b/255323197 )
  • We have made some UI updates to the placeholders, 1) change the shimmer gradient to 1.5x the screen size, 2) add easing (cubic bezier) of the shimmer progression and 3) speed up the wipe-off animation (250ms). ( Id29c1 )
  • We have corrected a UI bug in the placeholder wipeOff effect where Chip and Card backgrounds were wiping off slightly early due to not taking the component's position on screen into account. ( I2c7cb )
  • We have updated the placeholder background drawing to merge colors rather than layer them where possible to reduce the risk of alpha blending of the different cropped layers from allowing underlying colors to bleed through at the placeholder background edges. ( I2ea26 )
  • We have corrected the calculation of ScalingLazyListState.centerItemIndex/centerItemOffset so that if two items sit either side of the viewport center line the one that is closest will be considered as the centerItem . ( I30709 , b/254257769 )
  • We have corrected a bug in the ScalingLazyListState.layoutInfo.visibleItemsInfo which was reporting incorrect offsets during ScalingLazyColumn initialization. Now an empty list will be returned until all list items are visible and have the correct offsets. Check for ScalingLazyListState.layoutInfo.visibleItemsInfo.isNotEmpty() will confirm that the ScalingLazyColumn initialization is complete and items are visible. ( I3a3b8 )

Version 1.1.0-beta01

October 24, 2022

androidx.wear.compose:compose-foundation:1.1.0-beta01 , androidx.wear.compose:compose-material:1.1.0-beta01 , and androidx.wear.compose:compose-navigation:1.1.0-beta01 are released. Version 1.1.0-beta01 contains these commits.

What's in Compose for Wear OS 1.1

The 1.1.0-beta01 of Compose for Wear OS indicated that this release of the library is feature complete and the API locked.

  • Wear Compose 1.1 release includes the following new functionality:
    • Picker - Accessibility improvements to Picker so that multi-picker screens are navigable with screen readers and the content description is accessible
    • Picker contentDescription parameter is now used only for the selected Picker option and takes a nullable String (in the previous commit, it was necessary to pass a mapping from option to the content description, but only the selected option was used).
    • Picker items are now always center-aligned, fixing a bug when setting gradientRatio to zero had the side-effect of changing the alignment.
    • Chip/ToggleChip - We have updated the default gradients for Chip/ToggleChip to bring them in line with the latest UX spec. ChipDefaults.gradientBackgroundChipColors has been updated to start from 50% of primary rather than 32.5%.
    • Chip/ToggleChip - Added overloads for modifying Chip shapes
    • Chip/Button/ToggleButton - Added a new outlined style for Chips and Buttons and new OutlinedChip and OutlinedButton composables that provide a transparent Chip/Button with a thin border.
    • Card - Updated the default gradients for Cards to bring them in line with the latest UX spec. CardDefaults.cardBackgroundPainter has been updated to start from 30% of primary and end at 20% of onSurfaceVariant (was previously 20% to 10% onSurfaceVariant ). ToggleChip.toggleChipColors changes from a linear gradient of 75% surface to 32.5% primary to 0% surface to 50% primary.
    • Button/ToggleButton - Added properties for modifying button shapes.
    • Theme - Updated a number of the default colors in the MaterialTheme in order to improve accessibility as the original colors did not have sufficient contrast resulting in difficulties for users to differentiate chip/card/button backgrounds from the theme background color.
    • InlineSlider/Stepper - Button roles added so that Talkback can recognise them as buttons.
    • Scaffold - PositionIndicator now is positioned and sized so that it only takes the space needed. This is useful, for example, if semantic information is added to it, talkback now gets the correct bounds of the PositionIndicator on screen.
    • CurvedText/TimeText - Added Modifier.scrollAway , which scrolls an item vertically in/out of view, based on scroll state (with overloads to work with Column , LazyColumn and ScalingLazyColumn ). ScrollAway is typically used to scroll a TimeText out of view as the user starts to scroll a list of items upwards.
    • CurvedText/TimeText - Added support for fontFamily , fontStyle and fontSynthesis in CurvedTextStyle , usable on curvedText and basicCurvedText
    • CurvedText/TimeText - Added fontWeight to the constructor and copy method on CurvedTextStyle
    • ToggleControls - Added animated Checkbox , Switch and RadioButton toggle controls for use with ToggleChip and SplitToggleChip . These can be used instead of the static icons provided by ToggleChipDefaults ( switchIcon , checkboxIcon and radioIcon ).
    • Placeholder - Added experimental placeholder support. This has three distinct visual effects designed to work together.
    • Firstly a placeholder background brush effect used in containers such as Chip and Cards to draw over the normal background when waiting for content to load.
    • Secondly a modifier ( Modifier.placeholder() ) to draw a stadium shaped placeholder widget over the top of content that is being loaded.
    • Thirdly a modifier gradient/shimmer effect ( Modifier.placeholderShimmer() ) that is drawn over the top of the other effects to indicate to users that we are waiting for data to load.
      • All of these effects are designed to be coordinated and shimmer and wipe-off in an orchestrated fashion.
  • Core Compose dependencies updated from 1.2 to 1.3

API Changes

  • Font parameters ( fontFamily , fontWeight , fontStyle & fontSynthesis ) can now be specified directly as parameters of curvedText ( Idc422 )

Bug Fixes

  • curveText and basicCurvedText will now work properly with talkback (the have a properly sized and placed (but empty) compose-ui node associated with them, using the text as content description) ( I7af7c , b/210721259 )
  • Bug fix to the Picker when PickerState.repeatedItems = false to add an explicit setting of autoCentering params on the Pickers internal ScalingLazyColumn to ensure that it is possible to scroll the zero'th option to the center of the view. ( I8a4d7 )

Version 1.1.0-alpha07

5 октября 2022 г.

androidx.wear.compose:compose-foundation:1.1.0-alpha07 , androidx.wear.compose:compose-material:1.1.0-alpha07 , and androidx.wear.compose:compose-navigation:1.1.0-alpha07 are released. Version 1.1.0-alpha07 contains these commits.

Новые функции

  • We have added experimental placeholder support. This has three distinct visual effects designed to work together. Firstly a placeholder background brush effect used in containers such as Chip and Cards to draw over the normal background when waiting for content to load. Secondly a modifier ( Modifier.placeholder() ) to draw a stadium shaped placeholder widget over the top of content that is being loaded. Thirdly a modifier gradient/shimmer effect ( Modifier.placeholderShimmer() ) that is drawn over the top of the other effects to indicate to users that we are waiting for data to load. All of these effects are designed to be coordinated and shimmer and wipe-off in an orchestrated fashion. ( I3c339 )

API Changes

  • Added support for fontWeight , fontFamily , fontStyle and fontSynthesis in CurvedTextStyle , usable on curvedText and basicCurvedText . Those parameter can be used to specify the font and style to use on the curved text.( Iaa1a8 ),( I72759 )
  • Updated Modifier.scrollAway 's offset parameter to Dp for consistency with Modifier.offset (previously it was in pixels). Also, refactored as a LayoutModifier for efficiency. ( I9f94b )
  • As part of the new toggle controls API, we have renamed RadioButton's circleColor to ringColor . ( I28fa9 )
  • We have added animated Checkbox , Switch and RadioButton toggle controls for use with ToggleChip and SplitToggleChip . These can be used instead of the static icons provided by ToggleChipDefaults ( switchIcon , checkboxIcon and radioIcon ). ( I8a8c4 )

Version 1.1.0-alpha06

September 21, 2022

androidx.wear.compose:compose-foundation:1.1.0-alpha06 , androidx.wear.compose:compose-material:1.1.0-alpha06 , and androidx.wear.compose:compose-navigation:1.1.0-alpha06 are released. Version 1.1.0-alpha06 contains these commits.

Новые функции

  • We have added Modifier.scrollAway , which scrolls an item vertically in/out of view, based on scroll state (with overloads to work with Column , LazyColumn and ScalingLazyColumn ). ScrollAway is typically used to scroll a TimeText out of view as the user starts to scroll a list of items upwards. ( I61766 )

Bug Fixes

  • The PositionIndicator now is positioned and sized so that it only takes the space needed. This is useful, for example, if semantic information is added to it, talkback now gets the correct bounds of the PositionIndicator on screen. ( Ie6106 , b/244409133 )

Version 1.1.0-alpha05

7 сентября 2022 г.

androidx.wear.compose:compose-foundation:1.1.0-alpha05 , androidx.wear.compose:compose-material:1.1.0-alpha05 , and androidx.wear.compose:compose-navigation:1.1.0-alpha05 are released. Version 1.1.0-alpha05 contains these commits.

Bug Fixes

  • Button roles were added to InlineSlider and Stepper so that Talkback can recognise them as buttons. ( Icb46c , b/244260275 )
  • We have corrected the z-order of position and page indicators in the Scaffold. The indicators will now sit on top of the vignette and so will not be obscured by the vignette if it is present. ( Ib988f , b/244207528 )

Version 1.1.0-alpha04

24 августа 2022 г.

androidx.wear.compose:compose-foundation:1.1.0-alpha04 , androidx.wear.compose:compose-material:1.1.0-alpha04 , and androidx.wear.compose:compose-navigation:1.1.0-alpha04 are released. Version 1.1.0-alpha04 contains these commits.

API Changes

  • We have updated a number of the default colors in the MaterialTheme in order to improve accessibility as the original colors did not have sufficient contrast resulting in difficulties for users to differentiate chip/card/button backgrounds from the theme background color. The updated colors are surface(0xFF202124->0xFF303133), onPrimary(0xFF202124->0xFF303133), onSecondary(0xFF202124->0xFF303133), primaryVariant(0xFF669DF6->0xFF8AB4F8) and onError(0xFF202124->0xFF000000). The changes in colors though relatively subtle may impact existing screenshot tests. ( 81ab09 )

Bug Fixes

  • Fix a logic bug in ScalingLazyColumn that could result in lists with a small (typically exactly 2) number of list items not completing initialization and as a result being transparent. ( 504347 )

Version 1.1.0-alpha03

10 августа 2022 г.

androidx.wear.compose:compose-foundation:1.1.0-alpha03 , androidx.wear.compose:compose-material:1.1.0-alpha03 , and androidx.wear.compose:compose-navigation:1.1.0-alpha03 are released. Version 1.1.0-alpha03 contains these commits.

Новые функции

  • We have added a new outlined style for Chips and Buttons and new OutlinedChip and OutlinedButton composables that provide a transparent Chip/Button with a thin border. ( Id5972 )

API Changes

  • Added overloads for modifying button shapes ( Icccde )

Bug Fixes

  • We have corrected the size of the toggle control area of the ToggleChip as it was not matching its UX spec. The UX Spec calls for a 4.dp spacer between the label and a 24x24.dp toggle control icon area giving a total 28.dp width. However the implementation is incorrectly giving 36x24.dp toggle control area. This results in taking away 8.dp of usable text label area. NOTE: This bug fix gives additional space for the text label and as result can (positively) impact the text layout for overflowing text. If you have screenshot tests including ToggleChips they may need to be updated. ( I514c8 , b/240548670 )

Version 1.1.0-alpha02

July 27, 2022

androidx.wear.compose:compose-foundation:1.1.0-alpha02 , androidx.wear.compose:compose-material:1.1.0-alpha02 , and androidx.wear.compose:compose-navigation:1.1.0-alpha02 are released. Version 1.1.0-alpha02 contains these commits.

Новые функции

  • We have switched Compose for Wear OS dependencies on core Compose libraries from 1.2.0 to 1.3.0-alpha0X

API Changes

  • Added overloads for modifying chip shapes ( I02e87 )

Bug Fixes

  • We have animated the visibility of the vignette when showing/hiding Dialog, to be consistent with the existing scaling animation. ( Ida33e )
  • We have fixed a bug where a divide-by-zero could occur with some fling behavior when scrolling. ( I86cb6 )
  • Fixed a bug in the ChipDefaults.childChipColor() to ensure that the disabled background color is fully transparent. ( I2b3c3 , b/238057342 )

Version 1.1.0-alpha01

June 29, 2022

androidx.wear.compose:compose-foundation:1.1.0-alpha01 , androidx.wear.compose:compose-material:1.1.0-alpha01 , and androidx.wear.compose:compose-navigation:1.1.0-alpha01 are released. Version 1.1.0-alpha01 contains these commits.

API Changes

  • Picker's contentDescription parameter is now used only for the selected Picker option and takes a nullable String (previously, it was necessary to pass a mapping from option to the content description, but only the selected option was used). ( Ife6a7 )
  • We have made accessibility improvements to Picker so that multi-picker screens are navigable with screen readers and the content description is accessible ( I64edb )

Bug Fixes

  • We have updated the baseline profile rules packaged with the Wear Compose library ( I9c694 )
  • We have corrected the direction of the gradient for Chips in right to left mode. Was top left->bottom right, is now top right->bottom left. ( Ic2e77 )
  • We have updated the default gradients for Chip/ToggleChip/Card to bring them in line with latest UX spec. ChipDefaults.gradientBackgroundChipColors has been updated to start from 50% of primary rather than 32.5%. CardDefaults.cardBackgroundPainter has been updated to start from 30% of primary and end at 20% of onSurfaceVariant (was previously 20% to 10% onSurfaceVariant ). ToggleChip.toggleChipColors changes from a linear gradient of 75% surface to 32.5% primary to 0% surface to 50% primary. ( I43bbd )
  • We have added a background color ( MaterialTheme.color.surface ) behind Chip/ToggleChips that have gradient backgrounds in order to ensure that they are properly visible in the unlikely event that a light color is used behind them. ( Ibe1a4 , b/235937657 )
  • Picker items are now always center-aligned, fixing a bug when setting gradientRatio to zero had the side-effect of changing the alignment. ( I712b8 )

Версия 1.0

Version 1.0.2

7 сентября 2022 г.

androidx.wear.compose:compose-foundation:1.0.2 , androidx.wear.compose:compose-material:1.0.2 , and androidx.wear.compose:compose-navigation:1.0.2 are released. Version 1.0.2 contains these commits.

Bug Fixes

  • We have corrected the z-order of position and page indicators in the Scaffold. The indicators will now sit on top of the vignette and so will not be obscured by the vignette if it is present. ( Ib988f , b/244207528 )

Version 1.0.1

24 августа 2022 г.

androidx.wear.compose:compose-foundation:1.0.1 , androidx.wear.compose:compose-material:1.0.1 , and androidx.wear.compose:compose-navigation:1.0.1 are released. Version 1.0.1 contains these commits.

Bug Fixes

  • Fix a logic bug in ScalingLazyColumn that could result in lists with a small (typically exactly 2) number of list items not completing initialization and as a result being transparent. ( 076c61 )

Version 1.0.0

July 27, 2022

androidx.wear.compose:compose-foundation:1.0.0 , androidx.wear.compose:compose-material:1.0.0 , and androidx.wear.compose:compose-navigation:1.0.0 are released. Version 1.0.0 contains these commits.

Major features of 1.0.0

  • This is the first stable release of Compose for Wear OS ( read more ).
  • Compose for Wear OS builds upon the core Compose libraries providing additional wearable-specific components and, where appropriate, alternate implementations of core Compose components tailored to wearable devices.
  • For a list of the key components in Wear Compose see the release notes for ( Compose for Wear OS Beta01 ).

Bug Fixes

  • We have animated the visibility of the vignette when showing/hiding Dialog, to be consistent with the existing scaling animation. ( Ida33e )
  • We have fixed a bug where a divide-by-zero could occur with some fling behavior when scrolling. ( I86cb6 )
  • Fixed a bug in the ChipDefaults.childChipColor() to ensure that the disabled background color is fully transparent. ( I2b3c3 , b/238057342 )

Version 1.0.0-rc02

22 июня 2022 г.

androidx.wear.compose:compose-foundation:1.0.0-rc02 , androidx.wear.compose:compose-material:1.0.0-rc02 , and androidx.wear.compose:compose-navigation:1.0.0-rc02 are released. Version 1.0.0-rc02 contains these commits.

Bug Fixes

  • We have corrected the direction of the gradient for Cards in right to left (RTL) mode. It was top left->bottom right, and it is now top right->bottom left. ( Ic2e77 )
  • We have updated the default gradients for Chip/ToggleChip/Card to bring them in line with the latest UX spec. ChipDefaults.gradientBackgroundChipColors has been updated to start from 50% of primary rather than 32.5%. CardDefaults.cardBackgroundPainter has been updated to start from 30% of primary and end at 20% of onSurfaceVariant (was previously 20% to 10% onSurfaceVariant). ToggleChip.toggleChipColors changes from a linear gradient of 75% surface to 32.5% primary to 0% surface to 50% primary. ( I43bbd )
  • We have added a background color ( MaterialTheme.color.surface ) behind Chip/ToggleChips that have gradient backgrounds in order to ensure that they are properly visible in the unlikely event that a light color is used behind them. ( Ibe1a4 , b/235937657 )
  • We have updated the baseline profile rules packaged with the Wear Compose library ( I9c694 )

Version 1.0.0-rc01

June 15, 2022

androidx.wear.compose:compose-foundation:1.0.0-rc01 , androidx.wear.compose:compose-material:1.0.0-rc01 , and androidx.wear.compose:compose-navigation:1.0.0-rc01 are released. Version 1.0.0-rc01 contains these commits.

API Changes

  • Interfaces in compose libraries are now built using jdk8 default interface methods ( I5bcf1 )

Bug Fixes

  • We have removed the explicit call to fillMaxWidth() on list header as it is not needed and can result in problems if a ScalinglazyColumn has a mixture of ListHeader() and Chip() components as the width will tend to grow/shrink as ListHeader items are scrolled in/out of view. ( I37144 , b/235074035 )
  • We have fixed a bug in the ScalingLazyColumn that could result in the list items not drawing correctly until scrolled if the 0th list item was large enough (including padding) ( Ic6159 , b/234328517 )
  • We have made a small adjustment in the ScalingLazyColumn easing as items reach the edge of the screen to match UX spec updates. Old values CubicBezierEasing(0.25f, 0.00f, 0.75f, 1.00f) -> new values CubicBezierEasing(0.3f, 0f, 0.7f, 1f) . To keep the old behavior you can override the scalingParams of ScalingLazyColumn ( Ie375c )
  • We have added padding to the CompactChip in order to ensure that its tap target size is at least 48.dp high to meet the Material accessibility guidelines. This might impact any layouts you have using CompactChips as they will be taking up additional space. ( I3d57c )

Version 1.0.0-beta03

1 июня 2022 г.

androidx.wear.compose:compose-foundation:1.0.0-beta03 , androidx.wear.compose:compose-material:1.0.0-beta03 , and androidx.wear.compose:compose-navigation:1.0.0-beta03 are released. Version 1.0.0-beta03 contains these commits.

Новые функции

  • We have made ScalingLazyColumn work in Compose @Preview mode. ( I3b3b6 , b/232947354 )

API Changes

  • We have changed the default value for the ScalingLazyColumn.horizontalAlignment property from Start to CenterHorizontally to ensure that when list items do not fill the entire width of the column they will be aligned for maximum visibility. To switch back to the previous behavior set horizontalAlignment = Alignment.Start .( I9ed4b )

Известные проблемы

  • CompactChip's tap/touch height is smaller than Material accessibility guidelines. This will be corrected in the next release (15th June) . If you are using CompactChip this will affect your layouts as CompactChips will now have additional padding above and below. Please adjust and test your layouts or see the bug comments for a workaround to use the existing behavior. ( b/234332135 )

Bug Fixes

  • New demo to animate adding or removing a start text on a TimeText . ( I16d75 )
  • Add tests for HorizontalPageIndicator.PagesState ( I64ed0 )
  • Updating TimeText closer to UX specs ( Ib7ea1 )

Version 1.0.0-beta02

May 18, 2022

androidx.wear.compose:compose-foundation:1.0.0-beta02 , androidx.wear.compose:compose-material:1.0.0-beta02 , and androidx.wear.compose:compose-navigation:1.0.0-beta02 are released. Version 1.0.0-beta02 contains these commits.

Новые функции

  • Picker now always responds to scroll events even when in read-only mode. This avoids the need for users to first select a Picker by tapping, before they can scroll. In read-only mode, options other than that currently selected are obscured by a shim in gradientColor . ( I72925 )
  • We have changed the UX behavior of Chip/ToggleChip/CompactChip/SplitToggleChip to stop them from doing fillMaxWidth by default. Instead they will grow to fit their contents. To keep the previous behavior simply add modifier = Modifier.fillMaxWidth() ( I60a2c , b/232206371 )

Bug Fixes

  • CurvedTextStyle constructor taking a TextStyle now also respects the fontWeight (This may be added to the constructor and copy methods in future revisions of the API) ( Ieebb9 )
  • Edge swiping improvements. When Modifier.edgeSwipeToDismiss is used and a swipe to the left is triggered from the edge area, it no longer triggers swipe-to-dismiss when swipe direction changes to the right. Previously, it was possible to trigger swipe-to-dismiss by swiping to the left and then swiping to the right.( I916ea )
  • HorizontalPageIndicator now shows up to 6 pages on the screen. If there are more than 6 pages in total, it shows a half-size indicator on the left or right, with a smooth transition between pages.( I2ac29 )
  • Improved default snap behavior on ScalingLazyColumn and Picker ( I49539 )
  • Edge swiping improvements. When Modifier.edgeSwipeToDismiss is used, swipe-to-dismiss only triggers when first touch lands on the edge and swiped to the right, Previously it was possible to trigger swipe-to-dismiss by swiping from any part of the screen if a scroll reaches the start.( I8ca2a )

Version 1.0.0-beta01

May 11, 2022

androidx.wear.compose:compose-foundation:1.0.0-beta01 , androidx.wear.compose:compose-material:1.0.0-beta01 , and androidx.wear.compose:compose-navigation:1.0.0-beta01 are released. Version 1.0.0-beta01 contains these commits.

What's in Compose for Wear OS 1.0

The 1.0.0-beta01 of Compose for Wear OS marks an important milestone as the library is feature complete and the API locked.

Wear Compose Material components in the 1.0 release include:

  • Material Theme - used as a replacement for the Compose for Mobile MaterialTheme , provides the colors, shapes and typography for building components on Wearables that implement the Wear Material Design UX guidelines out of the box.
  • Button , CompactButton and ToggleButton - Button offers a single slot to take an icon, image or short text (3 characters max). Circular in shape with recommended sizes for default, large or small buttons. CompactButton offers a single slot to take any content (icon, image or text) and is circular in shape with background size extra small. CompactButton has optional transparent padding around the background that increases the clickable area. ToggleButton is a button that offers a single slot to take any content (short text, icon or image) and has on/off (checked/unchecked) states with coloring and different icons to show whether checked or not
  • Cards - used to display information about applications such as notifications. Flexible design for different use cases with AppCard and TitleCard giving different layouts and support for images as either card contents or backgrounds.
  • Chips - stadium shaped components similar to buttons, but with a larger area and multiple slots to allow for labels, secondary labels and icons. In different sizes and with support for images as backgrounds.
  • ToggleChips and SplitToggleChips - a Chip with a checked/unchecked state and the addition of a ToggleControl slot to show an icon such as a switch or radio button to show the checked state of the component. In addition, the SplitToggleChip has two tappable areas, one clickable and one toggleable.
  • CircularProgressIndicator - Wear Material progress indicator with two variations. The first expresses the proportion of completion of an ongoing task and supports a gap in the circular track between start and end angles. The second indicates indeterminate progress for an unspecified wait time.
  • curvedText - forms part of the DSL for describing CurvedLayouts , along with curvedRow and curvedColumn , to lay out components around circular devices. See Wear Component Foundation below for more details on CurvedLayout and CurvedModifier (this plays a similar role to Modifiers in the non curved world and allows for configuration of various aspects of layout, padding, gradients, etc).
  • Dialog, Alert and Confirmation - Dialog displays a full-screen dialog, layered over any other content, and supports swipe-to-dismiss. It takes a single slot which is expected to be opinionated Wear Material dialog content such as Alert or Confirmation. Alert is opinionated dialog content with slots for icon, title and message. It has overloads for either two negative and positive buttons shown side-by-side or a slot for one or more vertically stacked chips. Confirmation is opinionated dialog content that displays a message for a given duration. It has a slot for an icon or image (that could be animated).
  • HorizontalPageIndicator - shows horizontal page position in a fashion appropriate to the Wearable form factor. Designed to take the full screen and show a curved indicator on round devices. Can be used with the Accompanist page viewer.
  • Icon - A Wear implementation of Icon which takes color and alpha from the Wear Material Theme. For a clickable icon, see Button or Chip.
  • Picker - displays a scrollable list of items from which to pick. By default, items will be repeated 'infinitely' in both directions. Can be displayed in read-only mode to hide unselected options.
  • PositionIndicator - shows scroll position or other positional indication in a fashion appropriate to the Wearable form factor. Designed to take the full screen and shows a curved indicator on round devices.
  • Scaffold - implements the basic Wear Material Design visual layout structure. This component provides an API to put together several Wear Material components (such as TimeText , PositionIndicator and Vignette ) constructing the screen, ensuring proper layout strategy for them and collecting necessary data so these components will work together correctly.
  • ScalingLazyColumn - a scrolling scaling/fisheye list component that forms a key part of the Wear Material Design language. Provides scaling and transparency effects to the content items. ScalingLazyColumn is designed to be able to handle potentially large numbers of content items, which are only materialized and composed when needed.
  • Slider - allows users to make a selection from a range of values. The range of selections is shown as a bar, which can optionally be displayed with separators.
  • Stepper - a full-screen component that allows users to make a selection from a range of values, using increase/decrease buttons at the top and bottom of the screen, with a slot in the middle for Text or a Chip.
  • SwipeToDismissBox - handles the swipe-to-dismiss gesture. It takes a single slot for the background (only displayed during the swipe gesture) and the foreground content. Can optionally be combined with the androidx navigation library by using SwipeDismissableNavHost (see Wear Compose Navigation library below).
  • Text - A Wear implementation of the Compose Material Text component, taking color and alpha from the Wear Material Theme
  • TimeText - a component for showing Time and application status at the top of the screen. Adjusts to screen shape by using curved text on round screens.
  • Vignette - a screen treatment for use in the Scaffold that blurs top and bottom of screen when scrollable content is in use.

  • The following components are also included from Wear Compose Foundation:

  • CurvedLayout - Wear Foundation CurvedLayout is a layout composable that places its children in an arc, rotating them as needed. This is similar to a Row layout curved into a segment of an annulus. Note that the content of a CurvedLayout is not a composable lambda - rather, it is a DSL (domain-specific language). All elements in the CurvedLayout's DSL support an optional modifier parameter, created from CurvedModifier .

  • basicCurvedText - an element in the CurvedLayout DSL, basicCurvedText allows developers to easily write curved text following the curvature of a circle (usually at the edge of a circular screen). basicCurvedText can be only created within the CurvedLayout to ensure the best experience, like being able to specify the positioning, and using CurvedModifiers . Note that in most cases curvedText should be used instead, since it uses Material theming.

  • curvedComposable - wraps normal composable content so that it can be used with CurvedLayout . If curvedComposable has several elements inside, they will be drawn on top of each other (like a Box). To put several composables along a curve, wrap each one with curvedComposable .

  • curvedRow and curvedColumn - similar to Row and Column, curvedRow and curvedColumn can be nested inside a CurvedLayout to lay elements out as needed. For a curvedRow , the angular layout direction and radial alignment may be specified. For a curvedColumn , the angular alignment and radial direction may be specified.

  • CurvedModifier - all curved components accept a modifier parameter that can be created using CurvedModifier : background, size, weight and padding are supported.

  • The following component is also included from Wear Compose Navigation:

  • SwipeDismissableNavHost - provides a place in the Compose hierarchy for self-contained navigation to occur, with backwards navigation provided by a swipe gesture. Content is displayed within a SwipeToDismissBox , showing the current navigation level. During a swipe-to-dismiss gesture, the previous navigation level (if any) is shown in the background.

  • See previous release notes for the various Alpha releases for more details of what has been delivered.

API Changes

  • Added CurvedModifier.padding* functions. These are used to specify additional space to be added around a curved component. ( I4dbb4 )
  • Removed CompositionLocal internal class ( I42490 )
  • We have added constant values for Button , CompactButton and ToggleButton icon sizes, as guidance ( I57cab )
  • Add enabled parameter to AppCard and TitleCard . Now they have a similar API to androidx.compose.material Cards. When the parameter is set to false, the card will not be clickable. ( Idc48d , b/228869805 )

Bug Fixes

  • Stepper now disables the decrease and increase buttons when the lower/upper limits have been reached (and applies ContentAlpha.disabled to the iconColor) ( I4be9f )
  • We have added 1dp padding around Picker contents when drawn with a gradient to prevent jitter on text seen when swiping. ( I0b7b9 )
  • Add screenshot tests for PositionIndicator ( I5e8bc )
  • Add more tests for AppCard and TitleCard ( I85391 , b/228869805 )

Version 1.0.0-alpha21

April 20, 2022

androidx.wear.compose:compose-foundation:1.0.0-alpha21 , androidx.wear.compose:compose-material:1.0.0-alpha21 , and androidx.wear.compose:compose-navigation:1.0.0-alpha21 are released. Version 1.0.0-alpha21 contains these commits.

Новые функции

  • Added new curved modifiers to specify the background of a curved element: CurvedModifier.background , .radialGradientBackground and .angularGradientBackground ( I8f392 )
  • Allow curved text overflow mode (clip/ellipsis/visible) to be specified. ( I8e7aa )
  • Added CurvedModifier.weight modifier, similar to the one in Compose. This can be used on children of curvedRow and CurvedLayout (for width) and children of curvedColumn (for height). ( I8abbd )
  • Added CurvedModifier.size , .angularSize and .radialSize modifiers to specify the size of a curved element. ( I623c7 )

API Changes

  • Reorder parameters to ensure background is before color consistently across the Wear Compose API ( I43208 )
  • Removed clockwise & insideOut parameters and replaced with more expressive constants on new classes. Curved layout direction can now be LayoutDirection aware, and it is inherited when not specified ( If0e6a )
  • We have replaced autoCenter: Boolean with autoCenter: AutoCentringParams in order to fix an API issue with the ScalingLazyColumn . ( Ia9c90 )
  • We have renamed iconTintColor and toggleControlTintColor to iconColor and toggleControlColor throughout the API (Chip/ToggleChip/Dialog/Slider/Stepper/...) as the color is applied to the icon/toggleControl slot. ( Ied238 )
  • Rewrite PageIndicatorStyle enum into value class ( I2dc72 )
  • We have added RowScope/ColumnScope/BoxScope to some of the slots in our Composables to indicate to developers what the layouts assumptions are. This will allow developers to use additional modifiers on some slot content and avoid the need to provide extra layout elements. Additionally we have made some minor updates to the AppCard/TitleCard colors so that timeColor and appColor default to contentColor , these properties can still all be individually overridden if needed. ( I26b59 )
  • Made SwipeToDismissBoxState.Companion object private ( I39e84 )
  • Fix parameters order for InlineSlider and Stepper . A simple change to follow api guidelines ( I11fec )
  • We have removed the Saver object for SwipeToDismissBoxState as it was not used. ( Ifb54e )
  • We have updated CompactChip to bring it inline with the latest UX Specification. Padding has been reduced to horizontal = 12.dp and vertical = 0.dp. The font for label has been changed from button to caption1. The recommended icon sizes are 20x20 when both icon and label are present and 24x24 for an icon only compact chip. For the icon only use case we have also ensured that the icon is center aligned. ( Iea2be )
  • We have added a number of new fields to ScalingLazyListLayoutInfo to enable developers to know the amount of contentPadding and autoCenteringPadding that has been applied. These can be useful for developers when calculating fling/scroll ( I7577b )
  • We have implemented in/out transitions for Dialog. A showDialog parameter has been added and the Dialog now controls its own visibility (this enables Dialog to run the intro and outro animations when the Dialog is shown/hidden). Note that the outro animation is not performed when the user leaves the dialog via swipe-to-dismiss. We have also added a default value for state in the recently added SwipeToDismissBox overload. ( I682a0 )
  • In order to better support i18n and a11y we have changed ToggleChip and SplitToggleChip so that they no longer have a default for the toggleControl slot. We have also changed ToggleChipDefaults so that the following methods now return ImageVector rather than Icon (note that as they no longer return @Composables they have changed to start with lower case), SwitchIcon()->switchIcon() , CheckboxIcon->checkboxIcon() and RadioIcon()->radioIcon() - this allows and encourages developers to create their own Icon() composables with an appropriate contentDescription set. ( I5bb5b )
  • We have added a SwipeDismissableNavHostState parameter to SwipeDismissableNavHost . This supports use of edge-swiping on screens used as navigation destinations, because SwipeToDismissBoxState can now be hoisted and used to initialize both SwipeDismissableNavHostState and Modifier.edgeSwipeToDismiss on screens that require edge-swiping. ( I819f5 , b/228336555 )

Bug Fixes

  • Ensure curved layouts are updated when needed. ( Ie8bfa , b/229079150 )
  • Bug fix for https://issuetracker.google.com/issues/226648931 ( Ia0a0a , b/226648931 )
  • Removed unnecessary experimental annotations ( I88d7e )

Version 1.0.0-alpha20

April 6, 2022

androidx.wear.compose:compose-foundation:1.0.0-alpha20 , androidx.wear.compose:compose-material:1.0.0-alpha20 , and androidx.wear.compose:compose-navigation:1.0.0-alpha20 are released. Version 1.0.0-alpha20 contains these commits.

Новые функции

  • Add edgeSwipeToDismiss modifier for SwipeToDismiss . Allows swipeToDismiss to be active only on the left edge of the viewport. Used when the center of the screen needs to be able to handle horizontal paging, such as 2-d scrolling a Map or swiping horizontally between pages.( I3fcec , b/200699800 )

API Changes

  • Base implementation of CurvedModifiers , this opens the way to introduce ways to customize curved content (but no CurvedModifiers are provided yet, and the ability to create custom modifiers may be available later) ( I9b8df )
  • EdgeSwipe modifier documentation and default values update for better understanding .( I6d00d )
  • Add PageIndicator slot into Scaffold. By adding PageIndicator directly into Scaffold we might assure that it will be correctly shown on circular devices. ( Ia6042 )
  • Remove default Icons from InlineSlider and Stepper parameters. This will help developers to be more attentive to localization and accessibility requirements. Usages of default icons were shown in demos and samples. ( I7e6fd )
  • Replace Trailing and Leading parameter names with Start and End in TimeText ( Iaac32 )
  • We have added a SwipeToDismissBox overload with an onDismissed parameter to support the common usage of triggering a navigation event when the swipe gesture has completed. ( I50353 , b/226565726 )
  • Removed ExperimentalWearMaterialApi annotations from TimeText usage ( Ide520 )
  • We have marked ScalingLazyList/Column scope and info interfaces as sealed as they are not intended for external developers to implement and this will allow us to add new members in them in future without binary breaking changes. ( I7d99f )
  • We have added a new flingBehaviour property to the Picker and a PickerDefaults.flingBehaviour() method to enable configuration of the fling behavior such as adding RSB support. PickerState now implements the ScrollableState interface. ( Ib89c7 )

Bug Fixes

  • Update the Android Runtime (ART) baseline profile rules for Wear Compose libraries. ART can leverage profile rules on devices in order to compile ahead-of-time a specific subset of the application to improve the performance of the application. Note that this will have no effect on debuggable applications. ( Iaa8ef )
  • Improve documentation ( I2c051 )

Version 1.0.0-alpha19

23 марта 2022 г.

androidx.wear.compose:compose-foundation:1.0.0-alpha19 , androidx.wear.compose:compose-material:1.0.0-alpha19 , and androidx.wear.compose:compose-navigation:1.0.0-alpha19 are released. Version 1.0.0-alpha19 contains these commits.

API Changes

  • Renamed CurvedRow to CurvedLayout , and reworked to be a scope with a DSL. Using this DSL, more complex curved layouts can be specified using a series of nested curvedRow and curvedColumn (Which are the curved layout equivalents of Row and Column). Inside these layout elements, three elements can be used: curvedComposable (to add any @Composable), basicCurvedText (foundation's curved text) and curvedText (wear material aware curved text). ( Ib776a )
  • Make the side for the PositionIndicator configurable. The basic PositionIndicator's position can now be configured to be End (layout direction-aware), OppositeRsb (takes into account screen rotation, to position itself opposite to the physical RSB), or the absolutes Left & Right. ( I2f1f3 )
  • For SwipeToDismissBox , we have renamed SwipeDismissTarget .Original to SwipeToDismissValue.Default and SwipeDismissTarget.Dismissal to SwipeToDismissValue.Dismissed . We have also moved SwipeToDismissBoxDefaults.BackgroundKey and SwipeToDismissBoxDefaults.ContentKey to SwipeToDismissKeys.Background , SwipeToDismissKeys.Content respectively. ( I47a36 )
  • We have added a read-only mode to Picker, for screens with multiple Pickers where only one Picker is editable at a time. When the Picker is read-only, it displays the currently selected option, and a label if one has been provided. ( I879de )
  • SwipeToDismissBoxState has been refactored to restrict the scope of ExperimentalWearMaterialApi to Modifier.swipeable and SwipeableState , which are now used internally. SwipeToDismissBoxState now has currentValue , targetValue , isAnimationRunning and snapTo members to support common use cases - please let us know if you require any further properties to be made available. Also fixed the behavior of SwipeableState in the case where the swipe offset is within a rounding error of an anchor. ( I58302 )

Bug Fixes

  • Simplified and fixed code to detect if the content of a ScalingLazyColumn can be scrolled (used to decide if we display a scrollbar or not) ( I7bce0 )
  • Fixed a bug on Position Indicator when used with more than one state and switching between them ( I320b5 )
  • We have updated the default Compose for Wear OS theme typography/fonts to match our latest UX guidance. Of note display1 (40.sp) and display2 (34.sp) are now smaller than their previous values and various other minor updates to line height and line spacing have been made. ( Ie3077 )
  • We have added resistance to SwipeToDismissBox so that motion only happens when swiping to dismiss and not at all in the opposite direction. ( Ifdfb9 )
  • We have changed some of the default parameter values for the CircularProgressIndicator functions to bring them in-line with Wear Material Design UX guidance. For the Spinner/Indeterminant version the size (40->24.dp), indicatorColor (primary->onBackground), trackColor transparency (30%->10%) and stroke width (4->3dp) have been updated. For the Progress/Determinate version the trackColor transparency (30%->10%) has been updated. ( I659cc )
  • We have updated the default scaling params of the ScalingLazyColumn in-line with the latest Wear Material Design UX specifications. Visually this results in list items starting to be scaled closer to the list center, but being less scaled at the list edge than before. ( Ica8f3 )
  • Some adjustments to ScalingLazyColumnDefaults.snapFlingBehavior to improve the end of the animation ( If3260 )

Version 1.0.0-alpha18

March 9, 2022

androidx.wear.compose:compose-foundation:1.0.0-alpha18 , androidx.wear.compose:compose-material:1.0.0-alpha18 , and androidx.wear.compose:compose-navigation:1.0.0-alpha18 are released. Version 1.0.0-alpha18 contains these commits.

API Changes

  • Several improvements to PositionIndicator: ShowResult renamed PositionIndicatorVisibility. Some performance improvements to avoid recomputations when not needed ( Iaed9d )
  • The recommended coloring for the SplitToggleChip has been updated. SplitToggleChip's now have a solid colored background when checked or unchecked with the coloring of the ToggleControl being the primary indication of whether the component is checked or not. We have added a new ToggleDefaults.splitToggleChipColors() to support the new color scheme. We have also simplified the toggleChipColors() methods removing the splitBackgroundOverlayColor ( I7e66e )
  • We have added unadjustedSize to the ScalingLazyListItemInfo as it is not safe to calculate the original item size using the scaled size and scaling factor due to float maths precision. ( I54657 , b/221079441 )
  • Add HorizontalPageIndicator . It represents a total number of pages and a selected page. Might be linear or curved, depending on the shape of the device. It also supports custom indicator shape, which defines how each indicator is visually represented. ( Iac898 )
  • We have updated PickerState so that the numberOfOptions can be updated. This supports use-cases such as a DatePicker , when the number of days in the month changes depending on the month selected. The constructor parameter for PickerState has changed to initialNumberOfOptions accordingly. ( Iad066 )
  • Hide the PositionIndicator when is a scrollbar and can't scroll. ( Id0a7f )
  • For consistency with Scaffold, our full-screen Dialog component now displays a PositionIndicator and a Vignette . We are also now using ScalingLazyColumn instead of Column , which means that the Dialog contents are now in ScalingLazyListScope (and typically need to be enclosed by item { /* content */ }). Dialog supports the verticalArrangement parameter accordingly. ( Idea13 )
  • We have changed the name of ToggleChip and SplitToggleChip toggleIcon property to toggleControl to better align with Material Design in order to help designers and developers navigate the API. ( If5921 , b/220129803 )
  • We have added a new entry caption3 to the Wear Material Theme Typology.Caption3 is a small font used for the extra long-form writing like legal texts. ( I74b13 , b/220128356 )

Bug Fixes

  • Stop the snapping animation when we are there. ( Idb69d )
  • Animate changes in PositionIndicator. ( I94cb9 )
  • Based on UI/UX feedback we have changed the ScalingLazyColumn autoCentering so that it will provide only enough space to make sure the items with index ScalingLazyListState.initialCenterItemIndex or higher will be able to be fully scrolled to the center of the viewport. This allows developers to place one or two items about the item initially in the center which are not scrollable into the middle. This will mean that an autoCenter'ing ScalingLazyColumn will not be able to scroll above the initialCenterItemIndex/initialCenterItemScrollOffset ( I22ee2 )
  • We have added a demo for a Date Picker and fixed a bug in PickerState where the initiallySelectedOption was not applied until the Picker had been displayed. ( Id0d7e )
  • In order to reduce the clipping of wider ScalingLazyColumn items on circular screens we have increased the default horizontal content padding from 8 to 10 dp. ( I0d609 )
  • Ensure the PositionIndicator is shown when scrolling. ( Ied9a2 )

Version 1.0.0-alpha17

February 23, 2022

androidx.wear.compose:compose-foundation:1.0.0-alpha17 , androidx.wear.compose:compose-material:1.0.0-alpha17 , and androidx.wear.compose:compose-navigation:1.0.0-alpha17 are released. Version 1.0.0-alpha17 contains these commits.

Новые функции

  • We have added snap support that can be used with ScalingLazyColumn . Set flingBehavior = ScalingLazyColumnDefaults.flingWithSnapBehavior(state) to enable snap support. ( I068d3 , b/217377069 )
  • We have added demos for Picker used to select a time in either 24 hour or 12 hour clock. ( Ie5552 )

API Changes

  • Fix an issue with TimeText custom fonts & styles on square device ( Iea76e )
  • ScalingLazyListLayoutInfo now has reverseLayout , viewportSize and orientation properties matching those from LazyListLayoutInfo ( I4f258 , b/217917020 )
  • ScalingLazyColumn now has a userScrollEnabled property matching that from LazyList ( I164d0 , b/217912513 )
  • Pickers now have a gradient on the top and bottom by default ( Iab92a )

Bug Fixes

  • We have modified ScalingLazyColumn so that it no longer greedily fills all of the space in its parent. Instead it will take its size from the size of its contents. This makes it consistent with the behaviour of LazyColumn . If you want to reinstate the old behaviour then pass Modifier.fillMaxWidth()/width()/widthIn() to the ScalingLazyColumn ( I51bf8 )
  • We have improved the exception message in SwipeDismissableNavHost.kt that was triggered if the navigation backstack was empty. ( I1b1dc )

Version 1.0.0-alpha16

February 9, 2022

androidx.wear.compose:compose-foundation:1.0.0-alpha16 , androidx.wear.compose:compose-material:1.0.0-alpha16 , and androidx.wear.compose:compose-navigation:1.0.0-alpha16 are released. Version 1.0.0-alpha16 contains these commits.

Новые функции

  • Add CircularProgressIndicator . Progress indicators display the length of a process or an unspecified wait time. Supports a gap (cutout) for TimeText or other components if used full-screen. ( Iab8da )

API Changes

  • Pickers now have a flingBehavior parameter, the default value makes them snap to the closest option when scrolling/flinging. ( I09000 )
  • Additional integer API for InlineSlider and Stepper ( I1b5d6 )

Bug Fixes

  • We have changed the default initialCenterItemIndex for the ScalingLazyListState from 0->1. This means that unless overridden on state construction with ScalingLazyListState.rememberScalingLazyListState(initialCenterItemIndex = ) then the 2nd list item (index == 1) will be placed in the center of the viewport at initialization and the 1st (index == 0) item will be placed before it. This allows for a better default visual effect out of the box as most of the viewport will be filled with list items. ( I0c623 , b/217344252 )
  • We have reduced the ScalingLazyColumn default extraPadding that is provided to ensure that there are plenty of list items to draw (even when we are scaling some of them down in size) from 10% to 5%. This will avoid composing extra list items that might not appear in the viewport. If non standard scalingParams are being used (more extreme scaling for instance) the developer can adjust extra padding using viewportVerticalOffsetResolver . ( I76be4 )
  • Fix an issue with TimeText on multiple lines on square device ( Ibd3fb )
  • We have modified ScalingLazyColumn so that it no longer greedily fills all of the space in its parent. Instead it will take its size from the size of its contents. This makes it consistent with the behavior of LazyColumn . If you want to reinstate the old behavior then pass Modifier.fillMaxSize() to the ScalingLazyColumn - NOTE: This change is incomplete and will be addressed in a follow up change in the next Alpha release. ( I3cbfa )

Version 1.0.0-alpha15

January 26, 2022

androidx.wear.compose:compose-foundation:1.0.0-alpha15 , androidx.wear.compose:compose-material:1.0.0-alpha15 , and androidx.wear.compose:compose-navigation:1.0.0-alpha15 are released. Version 1.0.0-alpha15 contains these commits.

API Changes

  • We have added a new property autoCentering to the ScalingLazyColumn . When true (the default) this will ensure that all items including the first and last can be scrolled so that they are visible in the center of the lists viewport. Note that if using auto-centering you will probably want to set vertical content padding to 0.dp. If both autoCentering and vertical content padding are provided then they will both result in additional space being available before the first and after the last list items allowing them to be scrolled even further. ( I2a282 , b/214922490 )
  • We have added a Dialog component that enables any composable to trigger a full screen dialog that sits on top of other content. When shown, the dialog supports swipe-to-dismiss and will show its parent's content in the background during the swipe gesture. The dialog content is expected to be Alert or Confirmation (renamed from earlier components AlertDialog and ConfirmationDialog ) - Alert , Confirmation and Dialog are all in the androidx.wear.compose.material.dialog package. Alert and Confirmation can be used as navigation destinations. Also, added ColumnScope to Alert and Confirmation parameters as necessary. ( Ia9014 )
  • We have removed onSurfaceVariant2 from the Compose for WearOS Material Theme Colors and replaced uses in the library with onSurfaceVariant . ( Icd592 )
  • Added a method to programmatically select an option on the PickerState , the initially selected option can now also be specified when creating a PickerState . ( I92bdf )
  • We have added support for customizing the fling behavior of the ScalingLazyColumn . ( I1ad2e , b/208842968 )
  • We have added NavController.currentBackStackEntryAsState() to the Wear.Compose.Navigation library. ( If9028 , b/212739653 )
  • Added Modifier.onRotaryScrollEvent() and Modifier.onPreRotaryScrollEvent() for Wear devices with a rotating side button.( I18bf5 , b/210748686 )

Version 1.0.0-alpha14

January 12, 2022

androidx.wear.compose:compose-foundation:1.0.0-alpha14 , androidx.wear.compose:compose-material:1.0.0-alpha14 , and androidx.wear.compose:compose-navigation:1.0.0-alpha14 are released. Version 1.0.0-alpha14 contains these commits.

Новые функции

  • We have added a number of methods to ScalingLazyListState to allow developer control over scrolling to specific list items and also setting the initial list item and offset.

    As part of this change we have also modified the ScalingLazyList so that it is oriented around the center of the viewport of the ScalingLazyList rather than the start of the viewport.

    A new property anchorType: ScalingLazyListAnchorType = ScalingLazyListAnchorType.ItemCenter has been added to the ScalingLazyList to control whether the center ( ScalingLazyListAnchorType.ItemCenter ) or Edge ( ScalingLazyListAnchorType.ItemStart ) should be aligned to the viewport's centerline.

    As a result the ScalingLazyListItemInfo.offset and ScalingLazyListItemInfo.adjustedOffset have changed and will now reflect the offset of the item with respect to both the position of the list item and the anchorType of the list. Eg for a ScalingLazyColumn with anchorType of ItemCenter and an list item positioned with its center on the centerline of the viewport the offset would be 0 .

    The new methods are scrollTo , animatedScrollTo , centerItemIndex , and centerItemOffset . ( I61b61 )

  • We have added a back button handler to SwipeDismissableNavHost , so that pressing back navigates to the previous level in the navigation hierarchy. ( I5b086 , b/210205624 )

Version 1.0.0-alpha13

December 15, 2021

androidx.wear.compose:compose-foundation:1.0.0-alpha13 , androidx.wear.compose:compose-material:1.0.0-alpha13 , and androidx.wear.compose:compose-navigation:1.0.0-alpha13 are released. Version 1.0.0-alpha13 contains these commits.

API Changes

  • We have made RangeIcons internal (referenced internally by InlineSlider and Stepper ). ( I927ec )

Bug Fixes

  • Fixed an issue where SwipeDismissableNavHost would add a destination to the Compose hierarchy before it has reached the CREATED Lifecycle state, resulting in an IllegalStateException . This fix was a prerequisite to updating dependency on navigation-compose to 2.4.0-beta02 and beyond. ( I40a2b , b/207328687 )

  • Added a Drawables enum class for getting drawable resources within the Wear Compose library, so that reflection is no longer needed. This fixes a bug where library drawables were removed when minifyEnabled=true or shrinkResources=true ). ( Ib2a98 )

  • Added tests for Stepper in Wear Compose ( I2d03a )

  • Added samples for SwipeDismissableNavHost in Wear Compose Navigation. ( I85f06 )

Version 1.0.0-alpha12

December 1, 2021

androidx.wear.compose:compose-foundation:1.0.0-alpha12 , androidx.wear.compose:compose-material:1.0.0-alpha12 , and androidx.wear.compose:compose-navigation:1.0.0-alpha12 are released. Version 1.0.0-alpha12 contains these commits.

Новые функции

  • We have added a Stepper component which allows users to make a selection from a range of values. Stepper is a full-screen control with increase and decrease buttons at the top and bottom, and a slot in the middle (expected to take either a Chip or Text). The button icons can be customized if required. ( I625fe )

  • We have added 2 new composables for displaying dialogs: AlertDialog waits for a response from the user and displays a title, icon, message and either a) two buttons for simple positive/negative choices or b) vertically stacked chips or toggle chips for more flexible choices, ConfirmationDialog displays an acknowledgement with a timeout. This simple dialog has slots for a title and an (animated) icon. ( Ic2cf8 )

API Changes

  • Add units (millis) to suggested dialog duration values. ( I09b48 )

Version 1.0.0-alpha11

November 17, 2021

androidx.wear.compose:compose-foundation:1.0.0-alpha11 , androidx.wear.compose:compose-material:1.0.0-alpha11 , and androidx.wear.compose:compose-navigation:1.0.0-alpha11 are released. Version 1.0.0-alpha11 contains these commits.

Новые функции

  • We have added a picker component that lets the user select an item from a scrolling list. By default, the list of selectable items is repeated 'infinitely' in both directions, to give the impression of a rotating cylinder seen from the side. Two features will be added in later releases: snapping to a value after a swipe/fling; adding a function to PickerState to set/scroll to the current value. ( I6461b )

API Changes

  • Added a ScalingLazyItemScope and some new modifiers fillParentMaxSize/fillParentMaxWidth/fillParentMaxHeight to allow list items to be sized based on the size of the parent container. Items can be set to fill all or a fraction of the parent's size. This exposes functionality already available in the LazyRow/Column ( I4612f )
  • Added support to ScalingLazyColumn to allow items to have a key. Also added convenience methods to allow adding of items from Arrays and Lists. ( Ic1f89 )

Bug Fixes

  • Additional examples for TimeText ( I8cb64 )

Version 1.0.0-alpha10

November 3, 2021

androidx.wear.compose:compose-foundation:1.0.0-alpha10 , androidx.wear.compose:compose-material:1.0.0-alpha10 , and androidx.wear.compose:compose-navigation:1.0.0-alpha10 are released. Version 1.0.0-alpha10 contains these commits.

Новые функции

  • Added an InlineSlider for wear compose. InlineSlider allows users to make a selection from a range of values. The range of selections is shown as a bar between the minimum and maximum values of the range, from which users may select a single value. ( If0148 )

  • Check out the new Compose for WearOS Codelab !

API Changes

  • Macrobenchmark now has a minSdkVersion of 23 . ( If2655 )

Bug Fixes

  • Update transition handling in SwipeDismissableNavHost in a SideEffect ( I04994 , b/202863359 )
  • Update transition handling in SwipeDismissableNavHost ( I1cbe0 , b/202863359 )

Version 1.0.0-alpha09

October 27, 2021

androidx.wear.compose:compose-foundation:1.0.0-alpha09 , androidx.wear.compose:compose-material:1.0.0-alpha09 , and androidx.wear.compose:compose-navigation:1.0.0-alpha09 are released. Version 1.0.0-alpha09 contains these commits.

Новые функции

  • We have launched the Developer Preview of Compose on Wear OS - see our blog post which reviews the main composables and links to further resources to starting using them.

API Changes

  • We have added support for developers to be able to customize all of the colors in the Wear Material Design Color theme. ( I4759b , b/199754668 )

Bug Fixes

  • Added SwipeToDismissBox samples that persist state ( Ibaffe )
  • Added links to developer.android.com guides from KDocs for CurvedText, TimeText and SwipeToDismissBox. ( I399d4 )
  • SwipeDismissableNavHost now throws if there's no current destination (indicates that the NavGraph was not built with the wear.compose.navigation.composable utility function) ( I91403 )
  • Added additional documentation and examples for time source usage in TimeText ( I4f6f0 )

Version 1.0.0-alpha08

October 13, 2021

androidx.wear.compose:compose-foundation:1.0.0-alpha08 , androidx.wear.compose:compose-material:1.0.0-alpha08 , and androidx.wear.compose:compose-navigation:1.0.0-alpha08 are released. Version 1.0.0-alpha08 contains these commits.

API Changes

  • We have renamed AppCard and TitleCard body properties to content and moved them to the end of the property list to allow them to be provided as a trailing lambda. Also renamed bodyColor to contentColor for consistency with the new slot names. ( I57e78 )

Bug Fixes

  • Added links to developer.android.com guides from KDocs for button, card, chip, theme, position indicator and scaling lazy column components. ( I22428 )
  • Fix WearOS SwipeToDismissBox sometimes not handling swipes. ( I9387e )
  • Added samples for Button, CompactButton, Chip, CompactChip, AppCard, TitleCard, ToggleButton, ToggleChip, SplitToggleChip ( Iddc15 )
  • Added microbenchmark performance tests for Card, Chip, ToggleChip, TimeText and ScalingLazyColumn. ( If2fe9 )

Version 1.0.0-alpha07

September 29, 2021

androidx.wear.compose:compose-foundation:1.0.0-alpha07 , androidx.wear.compose:compose-material:1.0.0-alpha07 , and androidx.wear.compose:compose-navigation:1.0.0-alpha07 are released. Version 1.0.0-alpha07 contains these commits.

Новые функции

  • Added a CurvedText component in material, a component allowing developers to easily write curved text following the curvature of a circle (usually at the edge of a circular screen). ( I19593 )

API Changes

  • Added tests for TimeText ( Idfead )
  • Transform ArcPaddingValues into an interface. ( Iecd4c )
  • Added animation to SwipeToDismissBox ( I9ad1b )
  • Added hasBackground parameter to the SwipeToDismissBox API so that the swipe gesture can be disabled when there is no background content to display. ( I313d8 )
  • rememberNavController() now takes a optional set of Navigator instances that will be added to the returned NavController to better support optional Navigators such as those from Accompanist Navigation Material . ( I4619e )
  • Reference NamedNavArgument from navigation-common and remove copy from wear.compose.navigation. ( I43af6 )

Bug Fixes

  • Fixed CurvedRow test flakiness on smaller devices. ( If7941 )
  • Fixed possible flickering on CurvedRow when the content updates, and ensures the curved row is remeasured ( Ie4e06 )
  • ChipDefaults.gradientBackgroundChipColors() has been updated in line with UX Spec changes. The gradient now starts with MaterialTheme.colors.primary with alpha 32.5% and ends with MaterialTheme.colors.surface with alpha @ 0% over a background of MaterialTheme.colors.surface @ 75% alpha. ( Id1548 )
  • We have updated the colors for ToggleChips when in the selected state to match the latest Wear Material Design UX Spec guidance. When selected ToggleChips now have a gradient background from MaterialTheme.color.surface @ 0% alpha, top left, to MaterialTheme.color.primary @ 32% alpha, bottom right, over a background of MaterialTheme.color.surface @ 75% alpha. This results in a more subtle difference between checked and unchecked for the ToggleChip. ( Idd40b )

Version 1.0.0-alpha06

September 15, 2021

androidx.wear.compose:compose-foundation:1.0.0-alpha06 , androidx.wear.compose:compose-material:1.0.0-alpha06 , and androidx.wear.compose:compose-navigation:1.0.0-alpha06 are released. Version 1.0.0-alpha06 contains these commits.

Новые функции

  • We have added Scaffold a top level application composable that provides a structure for handling PositionIndicators (like Scroll or Volume) position, an area at the top of the screen for displaying the time and application status, and also supports a Vignette to blur the screen top and bottom edge for scrollable content. The main area of the Scaffold is where the application contents are placed. ( I5e0bf )
  • Added TimeText implementation for Wear Compose ( I5654c )

Wear Compose Navigation Library

  • We have added the first release of the Wear Compose Navigation library, which provides integration between the Wear Compose and Androidx Navigation libraries. It provides a simple means to navigate between @Composable functions as the destinations in your application.

  • This initial release provides:

    • A SwipeDismissableNavHost composable that hosts a navigation graph and provides backwards navigation via swipe gestures
    • NavGraphBuilder.composable extension to assist with constructing navigation graphs
    • rememberSwipeDismissableNavController() to allow hoisting state
  • Example usage where we create two screens and navigate between them:

    val navController = rememberSwipeDismissableNavController()
    SwipeDismissableNavHost(
        navController = navController,
        startDestination = "start"
    ) {
        composable("start") {
            Column(
                horizontalAlignment = Alignment.CenterHorizontally,
                verticalArrangement = Arrangement.Center,
                modifier = Modifier.fillMaxSize(),
            ) {
                Button(onClick = { navController.navigate("next") }) {
                    Text("Go")
                }
            }
        }
        composable("next") {
            Column(
                horizontalAlignment = Alignment.CenterHorizontally,
                verticalArrangement = Arrangement.Center,
                modifier = Modifier.fillMaxSize(),
            ) {
                Text("Swipe to go back")
            }
        }
    }
    
  • Wear Compose Navigation is packaged as a separate library so that simple WearCompose applications that implement their own hand-rolled navigation are not required to depend on the Androidx Navigation library.

API Changes

  • Updated SwipeDismissableNavHost to support rememberSaveable by setting the key identity for background and content ( I746fd )
  • We have added a PositionIndicator adapter that can handle LazyListState ( I21b88 )
  • Updated SwipeToDismissBox to support rememberSaveable ( Ie728b )
  • We have added reverseLayout support to the ScalingLazyColumn. This allows for the reversing of the direction of scrolling and layout ( I9e2fc )
  • Deprecated performGesture and GestureScope , which have been replaced by performTouchInput and TouchInjectionScope . ( Ia5f3f , b/190493367 )
  • We have renamed VignetteValue to VignettePosition and renamed VignetteValue.Both renamed to VignettePosition.TopAndBottom. ( I57ad7 )
  • We have renamed ScalingLazyColumnState to ScalingLazyListState, ScalingLazyColumnItemInfo to ScalingLazyListItemInfo, ScalingLazyColumnLayoutInfo to ScalingLazyListLayoutInfo and ScalingLazyColumnScope to ScalingLazyListScope in case we decide to add a ScalingLazyRow implementation in the future. ( I22734 )

Bug Fixes

  • Updated CompactChip documentation to describe what happens if neither an icon nor a label is provided. ( I4ba88 )
  • We have made some adjustments to the Wear card components. ( I6b3d0 )
    1. TitleCard spacing between Title and Body reduced from 8.dp to 2.dp.
    2. TitleCard header font changed from body to title3.
    3. Card background gradient changed to make the background appear darker.

Version 1.0.0-alpha05

1 сентября 2021 г.

androidx.wear.compose:compose-foundation:1.0.0-alpha05 and androidx.wear.compose:compose-material:1.0.0-alpha05 are released. Version 1.0.0-alpha05 contains these commits.

API Changes

  • Mark ArcPaddingValues as @Stable ( I57deb )
  • ScalingLazyColumnState now implements the ScrollableState interface giving developers programmatic access to scroll the component. ( I47dbc )

Bug Fixes

  • We have reduced the spacing between Icon and Text in Chip and ToggleChip to bring them in line with updates to the UX Spec. ( I83802 )

Version 1.0.0-alpha04

18 августа 2021 г.

androidx.wear.compose:compose-foundation:1.0.0-alpha04 and androidx.wear.compose:compose-material:1.0.0-alpha04 are released. Version 1.0.0-alpha04 contains these commits.

Новые функции

  • Added a SwipeToDismissBox and swipeable modifier that can be used to support a left-to-right swipe-to-dismiss gesture. Although independent of navigation components, this is expected to be used to exit one screen and navigate to another. Added integration tests to demo swipe-to-dismiss. ( I7bbaa )
  • We have added ScalingLazyColumnItemInfo and ScalingLazyColumnLayoutInfo interfaces to ScalingLazyColumnState class to enable developers to know the actual positions and sizes of items in the ScalingLazyColumn after scaling has been applied. We have also fixed a bug with the way that scaling was calculated when 'top' content padding is applied to the ScalingLazyColumn. ( I27c07 )

API Changes

  • Add CurvedTextStyle class to specify curved text styling Options. Similar to TextStyle, but now only supports color, fontSize and background. More styling options will be added in the future. ( I96ac3 )
  • We have added ScalingLazyColumnItemInfo and ScalingLazyColumnLayoutInfo interfaces to ScalingLazyColumnState class to enable developers to know the actual positions and sizes of items in the ScalingLazyColumn after scaling has been applied. We have also fixed a bug with the way that scaling was calculated when 'top' content padding is applied to the ScalingLazyColumn. ( I27c07 )
  • Added @ExperimentalWearMaterialApi to SwipeDismissTarget enum, part of the SwipeToDismissBox API. ( I48b5e )

Bug Fixes

  • Added test material for SwipeToDismissBox ( I9febc )

Version 1.0.0-alpha03

August 4, 2021

androidx.wear.compose:compose-foundation:1.0.0-alpha03 and androidx.wear.compose:compose-material:1.0.0-alpha03 are released. Version 1.0.0-alpha03 contains these commits.

API Changes

  • Added CurvedText component, that allows developers to easily write text following the curvature a circle (usually at the edge of a circular screen) ( Id1267 )
  • We have renamed CardDefaults.imageBackgroundPainter() to CardDefaults.imageWithScrimBackgroundPainter() to make it clear that the background image with have a scrim drawn over it. ( I53206 )
  • Adding ScalingLazyColumn component that provides a list component for Wear Material that gives a fisheye view with the list contents scaling down in size and becoming transparent as they scale towards the edge of the component. ( I7070c )

Bug Fixes

  • We changed the default color of the appName content in AppCard in response to a UX Spec update. The default color for the appName is now MaterialTheme.colors.onSurfaceVariant . Additionally added a missing parameter doc description for the title slot. ( Ic4ad1 )

Version 1.0.0-alpha02

July 21, 2021

androidx.wear.compose:compose-foundation:1.0.0-alpha02 and androidx.wear.compose:compose-material:1.0.0-alpha02 are released. Version 1.0.0-alpha02 contains these commits.

Новые функции

  • Added a new class CurvedRow to laid out composables in an arc ( I29941 )
  • Added a new type of card for use in applications (TitleCard), also add support for having images as the background to Cards to emphasize their contents ( I53b0f )

API Changes

  • Add support for radial alignment to CurvedRow (similar to the vertical alignment in a row) ( Id9de5 )
  • Add a new class CurvedRow to laid out composables in an arc ( I29941 )
  • Added a new type of card for use in applications (TitleCard), also add support for having images as the background to Cards to emphasize their contents ( I53b0f )
  • Added toggle icons (checkbox, switch and radio buttons) to ToggleChipDefaults to make it easier for developers to configure ToggleChip and SplitToggleChips ( I7b639 )
  • The start and end content padding for Chips has been updated so that it is consistently 14.dp regardless of whether the Chip has an icon present or not (was previously 12.dp if icon present and 14.dp if not) ( I34c86 )

Bug Fixes

  • Add tests for CurvedRow ( I93cdb )
  • Tying Wear Compose dependencies to Compose 1.0.0-rc01. ( Ie6bc9 )
  • Changed the handing of background image painting in Cards and Chips so that the image is Cropped rather than being stretched in order to maintain image proportions. ( I29b41 )
  • Added more demos and integration tests for Button and ToggleButton. ( 5e27ed2 )
  • Added more Chip tests to cover the content colors for imageBackgroundChips ( Ia9183 )

Version 1.0.0-alpha01

July 1, 2021

androidx.wear.compose:compose-foundation:1.0.0-alpha01 and androidx.wear.compose:compose-material:1.0.0-alpha01 are released. Version 1.0.0-alpha01 contains these commits.

Новые функции

Wear Compose is a Kotlin, Compose-based library that supports Wear Material design, an extension of Material Design for WearOS wearables. This first alpha release contains early, functional implementations of the following:

  • Material theme - configures the colors, typography and shapes consistently across the components used from this library.
  • Chip, CompactChip - chips are stadium shaped and variations are available to take icon, label and secondary label content.
  • - ToggleChip, SplitToggleChip - a specialized type of chip that includes a slot for a bi-state toggle icon such as a radio button or checkbox. In addition, the SplitToggleChip has two tappable areas, one clickable and one toggleable.
  • Button, CompactButton - buttons are circular in shape, with a single content slot for an icon or minimal text (maximum 3 characters).
  • ToggleButton - a button that turns an action on or off, with a single slot for icon or minimal text (maximum 3 characters).
  • Card, AppCard - rectangular shaped with rounded corners, offering slots for content such as app icon, time, title and body.

Future releases will extend the Widget set adding support for Wear Material Design pickers, sliders, lists, page indicators, dialogs, scroll rsb indicators, toasts and more.

Additionally support will be provided for other Wearable Specific features such as curved layouts and text, as well as scaffolding to make it easy for developers to build Wearable apps/overlays.

Wear Compose Material is designed with the same principles as Compose Material, although being targeted at wearables. The Wear Compose Material library should be used in place of the Compose Material library when building for a Wearable device.

The two “Material” libraries should be considered mutually exclusive and should not be mixed in the same app. If developers find themselves including the Compose Material library in their dependencies it would suggest that either a) there are components missing from the Wear Compose Material library, please let us know what you need, or b) are using a component that we do not recommend for use on a Wearable Device.