Интерфейс создания писем
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(Справочная документация по API для всех пакетов Compose)
| Последнее обновление | Основная версия | Release Candidate | Бета-версия | Альфа-версия |
|---|---|---|---|---|
| 7 октября 2026 г. | 1.12.1 | - | 1.13.0-beta01 | - |
Структура
Compose – это сочетание семи идентификаторов группы Maven в androidx. Каждая группа содержит определенный набор функций, для которых есть отдельные примечания к выпуску.
В таблице ниже перечислены группы и ссылки на примечания к каждому выпуску.
| Группа | Описание |
|---|---|
| compose.animation | Создавать анимацию в приложениях Jetpack Compose, чтобы повышать удобство для пользователей. |
| compose.compiler | Преобразуйте функции @Composable и включите оптимизацию с помощью плагина компилятора Kotlin. |
| compose.foundation | Создавайте приложения Jetpack Compose с помощью готовых блоков и расширяйте их, чтобы создавать собственные элементы системы проектирования. |
| compose.material | Создавайте интерфейсы Jetpack Compose с помощью готовых компонентов Material Design. Это точка входа более высокого уровня для Compose, предназначенная для предоставления компонентов, соответствующих описанным на сайте www.material.io. |
| compose.material3 | Создавайте интерфейсы Jetpack Compose с помощью компонентов Material Design 3 – следующего поколения Material Design. Material 3 включает обновленные темы и компоненты, а также функции персонализации Material You, такие как динамические цвета. Он разработан с учетом нового визуального стиля Android 12 и системного интерфейса. |
| compose.runtime | Основные строительные блоки модели программирования и управления состоянием Compose, а также основная среда выполнения для плагина компилятора Compose. |
| compose.ui | Основные компоненты Compose UI, необходимые для взаимодействия с устройством, в том числе макет, отрисовка и ввод. |
Как объявлять зависимости
Чтобы добавить зависимость от Compose, необходимо добавить в проект репозиторий Maven от Google. Подробная информация приведена в репозитории Google Maven.
Добавьте в файл build.gradle приложения или модуля зависимости для нужных артефактов:
Яркий
plugins { id 'org.jetbrains.kotlin.plugin.compose' } dependencies { implementation "androidx.compose.ui:ui:1.12.1" } android { buildFeatures { compose true } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
plugins { kotlin("plugin.compose") } dependencies { implementation("androidx.compose.ui:ui:1.12.1") } android { buildFeatures { compose = true } kotlinOptions { jvmTarget = "1.8" } }
Подробнее о зависимостях приведено в статье Добавление зависимостей сборки.
Отзыв
Ваши отзывы помогают нам улучшать Jetpack. Если вы обнаружите проблемы или решите что-то предложить, отправьте отзыв. Прежде чем создавать новую проблему, ознакомьтесь с существующими. Вы можете добавить свой голос к существующей проблеме, нажав на значок звездочки.
Дополнительную информацию можно найти в документации по системе отслеживания ошибок.
Версия 1.13
Версия 1.13.0-beta01
7 октября 2026 г.
Выход androidx.compose.ui:ui-*:1.13.0-beta01. Версия 1.13.0-beta01 содержит эти коммиты.
Изменения в API
- В версии 1.13 мы убрали
Modifier.interactionBarrier()из общедоступного API. (I47974, b/564575045, b/347038246) - Обновлены API
PolygonShape:CornerRoundingперенесен на верхний уровень с фабрикамиdp()иfraction(), а расширенияtransformed()иscaledToFit()заменены на изменяемыеPolygonShape.transform(PolygonShapeTransformScope.() -> Unit)иPolygonShape.copy(). (If5970) - Параметр
onValueChangeтеперь является обязательным дляSlider,VerticalSliderиRangeSlider. Удалены ранее скрытые устаревшие API в компонентахSliderиRangeSlider, в том числе реализацияDraggableStateвSliderStateи устаревшие перегрузкиSaver. ПользовательisVerticalудален из чат-группы "SliderState". Устаревший перегрузчикSliderDefaults.Thumb, который занимаетSliderState, заменен на перегрузчикisVertical. (I3fdc1) - Класс
PostureвMediaQueryзаменен наWindowPosture, который предоставляет доступ к физическимWindowFold(FoldStateиFoldOrientation). ВWindowPostureдобавлены удобные свойстваisTabletopиisFlat, а явное положение "Книга" удалено. (Id9e8e) - Теперь библиотеки предназначены для Kotlin 2.2 и требуют kotlinc 2.2 (I82396, b/498369605).
- Добавлен параметр
@FloatRangeвBlurStop.fraction, изменен параметрfallOffRadiusпо умолчанию вBlurRadiusSpec.radialGradientнаDp.Unspecified, переименован параметрradiusвblurRadiusSpecвModifier.blurи переименован параметрBlurScope.radiusвblurRadiusSpec. (I91dbc, b/556335791)
Исправление ошибок
- Исправлена ошибка IllegalArgumentException ("LayoutNode not found in RectList"), возникавшая при запросе линий выравнивания во время измерения. (Icec9e, b/549552303)
- Теперь
VectorPainterбудет использовать внутренние графические ресурсы (ImageBitmap) при отрисовке одного и того же элементаImageVectorв нескольких композициях. Это позволяет избежать лишних загрузок текстур и снизить использование памяти, что повышает производительность в таких случаях, как списки с повторяющимися значками. Эту оптимизацию можно отключить с помощьюComposeUiFlags.isVectorDrawCacheSharingEnabled. (I91b41) - Исправлена ошибка, из-за которой AndroidTextPaint.setTextMotion не удалял LINEAR_TEXT_FLAG при переходе к FontHinting или None linearity. (I8c19c)
- Исправлена проблема, из-за которой фокус TalkBack при исследовании касанием мог перескакивать на встроенный AndroidView (например, WebView), перекрытый контентом Compose UI. (I11372, b/561099702)
- Исправлена ошибка, из-за которой при вызове
Color.toColorLong()или установке цвета, наложенного наColor.Unspecified, в Paint мог произойти сбой сIllegalArgumentException. (Ia365b, b/557521315) - Зависимость
androidx.lifecycle:lifecycle-runtimeбыла обновлена до версии 2.10.0. Эта версия необходима для выполнения встроенных проверок lint времени выполнения жизненного цикла с AGP версии 9.5.0-alpha04 или более поздней. (I99bfd, b/556807521) - Исправлено извлечение фиксированных параметров в инструментах для функций, у которых больше 10 параметров. (Ib167d)
- Устранена проблема, из-за которой деактивированные узлы макета не удалялись из очереди макета, что приводило к сбою во время повторного измерения. (Ie64a5)
Версия 1.13.0-alpha03
9 сентября 2026 г.
Выход androidx.compose.ui:ui-*:1.13.0-alpha03. Версия 1.13.0-alpha03 содержит эти коммиты.
Изменения в API
- Перегрузки текстового поля Material 2, принимающие параметры
value, onValueChange, устарели. Перейдите на перегрузку, в которой для сохранения состояния используетсяTextFieldState. (I6b841, b/556234973) - Добавьте общий API, чтобы отключить
WindowInsetsRulersглобально до создания первого корневого элемента Compose. Удалите параметр Android onlyComposeView.disableWindowInsetsRulers()и используйте общий параметрWindowInsetsRulers.disable()(Iadc8f). - Добавлены функции расширения
PolygonShape.transformedиPolygonShape.scaledToFitв Compose Foundation для преобразования и подгонки многоугольников. (I3f327) - Модификатор переименовал функцию
LineHeight.Trim.isTrimLastLineBottom()вLineHeight.Trim.trimsLastLineBottomиLineHeight.Trim.isTrimFirstLineTopвLineHeight.Trim.trimsFirstLineTop(I02211) - В файл
PlatformTestConfigв разделComposeUiTestConfig.platformдобавлено полеboundsAssertionTolerance, позволяющее настраивать допустимое отклонение для утверждения границ по умолчанию на уровне среды или правила. (I7819d, b/545673912) - Перегрузки
BasicTextField, принимающие параметрыvalue, onValueChange, устарели. Перейдите на перегрузкуBasicTextField, в которой для сохранения состояния используетсяTextFieldState. (I636bf, b/552879150) - В соответствии с
BasicTextField(value, onValueChange),VisualTransformationтакже устарел, поскольку он доступен только через этот вариантTextField. Существующие преобразования должны быть перенесены вOutputTransformation. (I636bf, b/552879150) - Добавлен элемент
LineHeightStyle.Mode.PerLine, позволяющий рассчитывать высоту строки независимо для каждой строки, поддерживая разные размеры шрифта в одном абзаце без перекрытия. (I41738) - Передача
LazyLayoutCacheWindowиLazyListPrefetchStrategyчерезLazyListStateбольше не поддерживается. Вместо этого нужно передаватьLazyLayoutCacheWindowв composable-функцию. (I71f19) - Добавлен API
Modifier.blur { ... }для поддержки прогрессивного размытия (например, градиентов и специальных шейдеров) (Ie6595, b/481685669). - Добавлен Modifier.
interactionBarrier(), чтобы блокировать сенсорные, фокусные и специальные возможности. (I7c1b7, b/347038246) - В
WindowInfoдобавлено свойство расширенияisCrossWindowBlurEnabled, позволяющее разработчикам запрашивать и отслеживать состояние размытия окон в системе Android. (If38e2, b/538405295) - Добавлен параметр
LocalWindow CompositionLocal, позволяющий получать текущий объектandroid.view.Window, что упрощает управление API на уровне окна из Composables. (I4d4ff, b/221889664)
Исправление ошибок
- Включено
isMinimalistLocalsEnabledпо умолчанию. (Ibb4eb, b/523295932) - По умолчанию включена оптимизация высоты строки. Это может привести к небольшим различиям в некоторых показателях текста, например в высоте или пути выбора (I5575a).
compileSdkдля библиотек Compose обновлены до версии 37.1. Это потребует транзитивного обновленияcompileSdkдля всех приложений и библиотек, использующих Compose. (I05b0f)- Исправлена проблема, из-за которой вставки IME
WindowInsetsRulersне помечались как анимированные во время прогнозируемого возврата, а также проблема, из-за которойimePaddingне обновлялся при переключении фокуса между текстовыми полями. (Id4562, b/537386261, b/539686000) - Устранена проблема, из-за которой жесты масштабирования на трекпаде игнорировались, когда
ComposeViewразмещался в стандартном элементеViewGroupAndroid. (I80f79)
Внешний вклад
- Устранена утечка Activity, возникавшая при отсоединении и повторном присоединении
ComposeViewв одном кадре, например при изменении порядка с помощьюremoveViewиaddView. (Ib5129, b/547675867)
Версия 1.13.0-alpha02
26 августа 2026 г.
Выход androidx.compose.ui:ui-*:1.13.0-alpha02. Версия 1.13.0-alpha02 содержит эти коммиты.
Изменения в API
- Добавлено новое семантическое свойство
BackgroundColorдля Modifier.background (I7eec3, b/518049030). - Теперь вы можете создавать
Verticesиз существующих массивов примитивов. (Ifaba8, b/496412761) VectorPainterтеперь будет использовать внутренние графические ресурсы (ImageBitmap) при отрисовке одного и того же элементаImageVectorв нескольких композициях. Это позволяет избежать лишних загрузок текстур и снизить использование памяти, что повышает производительность в таких случаях, как списки с повторяющимися значками. Эту оптимизацию можно отключить с помощьюComposeUiFlags.isVectorDrawCacheSharingEnabled. (I35639, b/331283180)- Добавление помощника
requestFocusForChildInLocalBounds(Ib1a48)
Версия 1.13.0-alpha01
12 августа 2026 г.
Выход androidx.compose.ui:ui-*:1.13.0-alpha01. Версия 1.13.0-alpha01 содержит эти коммиты.
Изменения в API
- Добавлен флаг функции
isVelocityTrackerMinSampleSizeFixEnabled(Ic9b51, b/533444810, b/533775739, b/523705159). - Удален устаревший класс аннотаций
ExperimentalVelocityTrackerApi. (I6f9c6, b/483449576) - Удален флаг isClearNestedScrollCoroutineScopeFixEnabled (Iedfd7, b/506963276)
TextFieldStateтеперь сохраняет и восстанавливает информацию о стиле текста.AnnotatedString.Annotation.Saverтеперь является общедоступным, что позволяет сохранять и восстанавливать объектыAnnotatedString.Annotation. (I8b533, b/135556699)- В
ComposeTestConfigдобавлены функцииTestFailurePolicyиTestFailureHandlerдля поддержки специальных обработчиков событий сбоя и контекста артефактов сбоя в тестах интерфейса Compose. (Ib1a85, b/414802953, b/291106656, b/430644575) - Добавлен атрибут
SemanticsProperties.alpha, чтобы показывать итоговые значения альфа-канала для родительских и дочерних узлов макета. (Ifddb6, b/524035059) - Устарели перегрузки
createComposeRule,createAndroidComposeRuleиcreateEmptyComposeRuleв пакетеui-test-junit4v2, которые принимают отдельные параметры. Используйте перегрузки, принимающиеComposeUiTestConfig, или перегрузки без параметров, в которых используетсяComposeUiTestConfigпо умолчанию. Обратите внимание, что значениеComposeUiTestConfigпо умолчанию устанавливает режим вводаInputMode.Touchв начале каждого теста. Из-за этого существующие тесты, в которых ожидается режим клавиатуры (InputMode.Keyboard), могут завершиться неудачно. Чтобы исправить затронутые тесты, явно передайтеComposeUiTestConfig(inputMode = InputMode.Keyboard)и удалите любую логику настройки режимов ввода вручную. Вы также можете задать значениеAndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false, чтобы временно отключить установку режима ввода по умолчанию в начале каждого теста и сохранить прежнее поведение при переносе тестов. Этот флаг будет удален в будущем, поэтому, если сбои происходят только в небольшом количестве тестов, рекомендуется устранить их, изменив конфигурацию. (Idfb86, b/504195741) - Вызовы функций
createComposeRuleиcreateAndroidComposeRuleбез аргументов (например,createComposeRule()илиcreateAndroidComposeRule<MyActivity>()) теперь используют значение по умолчаниюComposeUiTestConfig, которое устанавливает начальный режим вводаInputMode.Touchв начале каждого теста. Это гарантирует, что устройство находится в чистом состоянии, и предотвращает утечку изменений режима ввода из предыдущих тестов. Однако новый режим по умолчанию может привести к сбоям в существующих тестах, которые ожидают режим клавиатуры (InputMode.Keyboard). Чтобы исправить затронутые тесты, явно передайтеComposeUiTestConfig(inputMode = InputMode.Keyboard)и удалите любую логику настройки режимов ввода вручную. Вы также можете задать для параметраAndroidComposeUiTestFlags.isInputModeSetForDeviceTests = falseзначение, которое временно отключит установку режима ввода по умолчанию в начале каждого теста и сохранит прежнее поведение при переносе тестов. Этот флаг будет удален в будущем, поэтому, если сбои происходят только в небольшом количестве тестов, рекомендуется устранить их, изменив конфигурацию. (Idc4dd, b/267253920, b/504195741) - Добавлены аннотации для переопределяемых пустых базовых методов в Compose с помощью
@EmptySuper, чтобы указать, что переопределяемые реализации не должны вызывать super. (Id407b) ExposedDropdownMenuтеперь является функцией расширения дляExposedDropdownMenuBoxScope, а не элементом. Возможно, вам потребуется обновить код, добавив новый импорт. (Ie8a65, b/356452026)- Добавлены свойства
blurBehindRadius,backgroundBlurRadius,scrimAlphaиwindowShapeвDialogProperties, а такжеblurBehindRadiusиscrimAlphaвPopupProperties. Теперь разработчики могут настраивать размытие фона и окна, а также непрозрачность затемнения непосредственно в диалоговых окнах и всплывающих окнах. ЗначениеwindowShapeпозволяет обрезать размытие фона диалогового окна по скругленным углам. (I5d437) - Удален флаг функции. Теперь кнопки создания правильно сохраняют фокус доступности и не мерцают, когда активна функция "Исследовать касанием", поскольку события наведения курсора правильно отмечаются как обработанные. (Ib1c80)
- В класс
FontVariation.Settingsдобавлены перегрузки функции merge для объединения других коллекций настроек или переопределения настроек в коде. (I6340c) - Добавлен параметр
variationSettingsв интерфейс шрифтов. По умолчанию используется новый параметрFontVariation.Empty. Оптимизирован конструктор varargFontVariation.Settings, чтобы использоватьasList()и избежать выделения памяти для копирования массива. (I9c22f) - Обновлено свойство
NestedScrollDispatcher.coroutineScope, чтобы безопасно возвращать отмененный объектCoroutineScope, когда он не прикреплен или откреплен. (I9b112, b/535290281) - Устарели перегрузки
runComposeUiTest,runAndroidComposeUiTestиAndroidComposeUiTestEnvironment, которые принимают отдельные параметрыeffectContext,runTestContextиtestTimeout. Используйте перегрузки, принимающиеComposeUiTestConfig, или перегрузки без параметров, в которых используетсяComposeUiTestConfigпо умолчанию. Обратите внимание, что значениеComposeUiTestConfigпо умолчанию устанавливает режим вводаInputMode.Touchв начале каждого теста. Из-за этого существующие тесты, в которых ожидается режим клавиатуры (InputMode.Keyboard), могут завершиться неудачно. Чтобы исправить затронутые тесты, явно передайтеComposeUiTestConfig(inputMode = InputMode.Keyboard)и удалите любую логику настройки режимов ввода вручную. Вы также можете задать для параметраAndroidComposeUiTestFlags.isInputModeSetForDeviceTests = falseзначение, которое временно отключит установку режима ввода по умолчанию в начале каждого теста и сохранит прежнее поведение при переносе тестов. Этот флаг будет удален в будущем, поэтому, если сбои происходят только в небольшом количестве тестов, рекомендуется устранить их, изменив конфигурацию. (Ia6d55, b/504195741) - Вызовы
runComposeUiTest,runAndroidComposeUiTestиAndroidComposeUiTestEnvironmentс лямбда-выражением в конце теперь используют значение по умолчаниюComposeUiTestConfig, которое устанавливает начальный режим вводаInputMode.Touchв начале каждого теста. Это гарантирует, что устройство находится в чистом состоянии, и предотвращает утечку изменений режима ввода из предыдущих тестов. Однако новый режим по умолчанию может привести к сбоям в существующих тестах, которые ожидают режим клавиатуры (InputMode.Keyboard). Чтобы исправить затронутые тесты, явно передайтеComposeUiTestConfig(inputMode = InputMode.Keyboard)и удалите любую логику настройки режимов ввода вручную. Вы также можете задать для параметраAndroidComposeUiTestFlags.isInputModeSetForDeviceTests = falseзначение, которое временно отключит установку режима ввода по умолчанию в начале каждого теста и сохранит прежнее поведение при переносе тестов. Этот флаг будет удален в будущем, поэтому, если сбои происходят только в небольшом количестве тестов, рекомендуется устранить их, изменив конфигурацию. (I8c85d, b/504195741) - Добавлен символ @
CheckResultв функцииSemanticsNodeInteraction.isDisplayed() иisNotDisplayed(), чтобы их возвращаемые значения проверялись. Это предотвращает незаметные сбои при тестировании, когда разработчики по ошибке используют эти функции вместо API утверждений. (I1b447, b/508178494) - Флаг
AndroidComposeUiFlag.isDelayAndroidViewsHandlerCreationEnabledприведет к тому, чтоViewGroup, содержащийAndroidView, будет создан только при добавленииAndroidViewдля повышения производительностиComposeView, у которых нетAndroidView. Если флаг отключен, содержащийся вViewGroupобъект создается и прикрепляется, когдаComposeViewприкрепляется к окну. (I306a3, b/524283041) - В
NestedScrollDispatcherдобавлен альтернативный APIcoroutineScopeOrNull()для доступа к родительской области сопрограммы диспетчера. (I18c0f) - Измените
clearCallbacksнаrunAndClearCallbacks, чтобы действия по очистке выполнялись всегда. (If4720, b/526700075) ComposeTestConfigпереименован вComposeUiTestConfigи перемещен из пакета v2 в родительский пакетandroidx.compose.ui.test. (I1d2a1, b/504195741)- В функцию
SemanticsNodeInteraction.captureToImage() добавлен параметрtimeoutMillis(по умолчанию 2000 мс), позволяющий задавать специальное время ожидания для проходов перерисовки. (Ib7d62, b/249501063) - Добавлена история изменений для непрямых указателей (Ie62d2, b/526961645).
- Добавлено новое семантическое свойство
hintTextдля представления текста подсказки в текстовых полях. Это улучшает поддержку специальных возможностей за счет сопоставления сAccessibilityNodeInfo.hintText. (Ib65da, b/448376876) - Оптимизированное разрешение
CompositionLocalпутем динамического разрешения изLocalOwnerиLocalAndroidComposeViewпо запросу, которое можно переключать с помощьюComposeUiFlags.isMinimalistLocalsEnabled. (I2bf6d) - У пользователя
androidx.benchmarkтеперьminSdk(24). (Ic2a85) - В параметр
AndroidComposeUiFlagsдобавлен экспериментальный флагisPropagateHideFromAccessibilityToMergingChildrenEnabled, позволяющий управлять распространением параметраhideFromAccessibilityна дочерние объекты при объединении. (Ie41ff, b/483506400) - Переведены из экспериментальных в стабильные API для продвигаемых товаров
ComposeUiTestи связанные с ними API для тестирования (включая вариантыComposeTestRuleиwaitUntil). (Iaec77, b/471148519, b/485124363) - Исправлен порядок навигации
TalkBackв объединенных группах обхода. При необходимости это изменение можно отменить, отключивAndroidComposeUiFlags.isTraversalGroupSortingEnabled. (I5ae09, b/285043826) - Удалена устаревшая экспериментальная вспомогательная функция
IndirectPointerEvent. (I05dee, b/499336763, b/501098299, b/501098376, b/513249467) - Замените экспериментальный API @AnimationToolingApi на API @RestrictTo с более строгими гарантиями отслеживания. (Ia4fd1, b/524317805)
- Добавлен селектор
onDescendants(), позволяющий найти все семантические узлы в поддереве заданного узла. (Id6b9b, b/444588117) - Устаревшие вспомогательные API
waitUntilNodeCount,waitUntilAtLeastOneExists,waitUntilExactlyOneExistsиwaitUntilDoesNotExist, которые не принимаютuseUnmergedTree. Добавлены новые перегрузки, принимающиеuseUnmergedTree, чтобы поддерживать ожидание узлов в неслитом дереве семантики. (If675f, b/268432145) - В
SemanticsNodeInteractionутверждения о размере и положении (assertWidthIsEqualTo,assertHeightIsEqualTo,assertTouchWidthIsEqualTo,assertTouchHeightIsEqualTo,assertPositionInRootIsEqualTo,assertTopPositionInRootIsEqualTo,assertLeftPositionInRootIsEqualTo) добавлен параметрtolerance, позволяющий разработчикам настраивать порог сравнения и повышать надежность тестирования на экранах с разной плотностью пикселей. (I3a477, b/202752461) - Теперь при тестировании Compose поддерживается синхронизация основного потока. Теперь вы можете безопасно вызывать API синхронизации (например,
waitForIdle() иrunOnIdle()) и выполнять утверждения или действия Compose непосредственно в обратных вызовах основного потока или потока интерфейса. (I0247a, b/498478569) - Представлена новая модель конфигурации (
ComposeTestConfig) для Compose Test API, которая упрощает управление параметрами и повышает масштабируемость. Добавлена поддержка настройки режима ввода (сенсорный экран/клавиатура) непосредственно черезComposeTestConfig, что обеспечивает автоматическую настройку и сброс для предотвращения нестабильности тестов из-за утечки состояния. Добавлены новые перегрузки дляrun*ComposeUiTestиcreate*ComposeRule, которые принимают объектComposeTestConfig. (Ia3da9, b/267253920, b/504195741) - Исправлен сбой в Compose Preview при использовании
PreviewParameterProviderсо свойствами Media Query (Posture,PointerPrecisionи т. д.) путем изменения их базового представления сStringнаInt. (Ic8f92, b/489939558) - В параметры
hasTextExactlyиassertTextEqualsдобавлен параметрincludeInputText, чтобы обеспечить точное соответствие исходного текста и текста на изображении. (Iee329, b/519026043)
Исправление ошибок
- Оптимизированный файл
SaveableStateRegistry.performSave(), чтобы предотвратить распределениеHashMap. ИспользуетScatterMap. (I7d510) - Цвета текста, заданные в AccessibilityNodeInfo.ExtraRenderingInfo для текстовых элементов. (I11c94, b/518049030)
- Устранена проблема, из-за которой при попытке доступа к
NestedScrollDispatcher.coroutineScopeOrNullво время отсоединения узла макета возникала ошибкаIllegalStateExceptionвместо возврата значенияnull. (I55634, b/533444810) - Оптимизированная инициализация на уровне файла свойств класса значений верхнего уровня
compose:uiс помощью динамических методов получения. (I34184) - Оптимизированная инициализация объектов-компаньонов для
ui-unitклассов значений (TextUnit) с помощью динамических методов получения. (If4a99) - Оптимизирована инициализация объектов-компаньонов для классов значений
ui-graphics(BlendMode,Colorи т. д.) с помощью динамических методов получения. (Iaa86a) - Оптимизирована инициализация объектов-компаньонов классов значений (
Key,CompositingStrategyи т. д.) с помощью динамических методов получения.compose:ui:ui(I1a340) - Оптимизирована инициализация сопутствующих объектов классов текстовых значений
compose:ui(TextAlign,TextOverflow,ImeActionи т. д.) с помощью динамических методов получения. (I776e0) - Оптимизирована инициализация сопутствующего объекта для классов инструментов
compose:uiи тестовых значений (AnimatedVisibilityState,MouseButton,ScrollWheel) с помощью динамических геттеров. (I23e1b) - Оптимизированная инициализация объектов-компаньонов классов значений единиц измерения
compose:ui(Dp,DpOffset,TextUnitTypeи т. д.) с помощью динамических методов получения. (If5eb5) - Оптимизирована инициализация сопутствующих объектов классов значений геометрии
compose:ui(Offset,Size,CornerRadius) с помощью динамических методов получения. (I3b110) - Оптимизированная инициализация сопутствующих объектов классов значений
compose:ui(Role,FocusDirection,PointerEventTypeи т. д.) с помощью динамических методов получения. (Ie35dd) - Правильно обрабатывайте
BaselineShift.None,BaselineShift.UnspecifiedиBaselineShift(0f), чтобы избежать ненужных медленных проходов макета. (I4350c) - Исправлена проблема, из-за которой значения Dp, содержащие отрицательный ноль (-0,0), по-разному ведут себя при сравнении или проверке на равенство с числами с плавающей запятой. (I7dbcf, b/525506543)
- Удалена информация об API (Ia8066)
Внешний вклад
Alignment.topRatio,Trim.isTrimFirstLineTop()иTrim.isTrimLastLineBottom()теперь общедоступны (I84f62)
Версия 1.12
Версия 1.12.1
9 сентября 2026 г.
Выход androidx.compose.ui:ui-*:1.12.1. Версия 1.12.1 содержит эти коммиты.
Версия 1.12.0
12 августа 2026 г.
Выход androidx.compose.ui:ui-*:1.12.0. Версия 1.12.0 содержит эти коммиты.
### Скачиваемые вариативные шрифты и настройка без конфигурации (ui-text-google-fonts)
• Вариативные шрифты и сертификаты GMS с нулевой конфигурацией!
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontVariation
import androidx.compose.ui.text.googlefonts.Font
import androidx.compose.ui.text.googlefonts.GoogleFont
val fontFamily = FontFamily(
Font(
googleFont = GoogleFont("Google Sans Flex"),
// Automatically uses default GMS certificates!
variationSettings = FontVariation.Settings(
FontVariation.weight(900),
FontVariation.slant(0f)
)
)
)
──────
### Поддержка расширенной цветовой гаммы (WCG) (ui-graphics)
Сохранение широкой цветовой гаммы: * Цветовые пространства, отличные от sRGB (например, AdobeRgb, DisplayP3), заданные в Paint или Shader, сохраняются в API 29 и более поздних версий. * В более ранних версиях API используется цветовое пространство sRGB.
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Paint
import androidx.compose.ui.graphics.colorspace.ColorSpaces
val wcgColor = Color(0.9f, 0.5f, 0.1f, colorSpace = ColorSpaces.AdobeRgb)
val paint = Paint().apply {
color = wcgColor // Preserved on API 29+
}
──────
### Градиенты ячеистой сети с аппаратным ускорением (ui)
• Painter API: Modifier.meshGradient заменен на MeshGradientPainter, который использует Canvas.drawMesh с аппаратным ускорением.
• Использование: используйте MeshGradientPainter внутри Modifier.paint.
import androidx.compose.ui.draw.paint
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.MeshGradientPainter
val meshPainter = remember {
MeshGradientPainter(rows = 1, columns = 1, hasBicubicColor = true) {
setVertex(0, 0, Offset(0f, 0f), Color.Red)
setVertex(0, 1, Offset(1f, 0f), Color.Blue)
setVertex(1, 0, Offset(0f, 1f), Color.Green)
setVertex(1, 1, Offset(1f, 1f), Color.Yellow)
}
}
Box(Modifier.fillMaxSize().paint(meshPainter))
──────
### 4. Интеграция с Менеджером учетных данных (интерфейс)
Автозаполнение: * Добавлено свойство семантики credentialRequest низкого уровня для текстовых полей API 34+.
import androidx.compose.ui.semantics.credentialRequest
import androidx.compose.ui.semantics.CredentialRequestData
import androidx.compose.ui.semantics.semantics
BasicTextField(
value = value,
onValueChange = onValueChange,
modifier = Modifier.semantics {
if (Build.VERSION.SDK_INT >= 34) {
credentialRequest = CredentialRequestData(request, callback)
}
}
)
──────
### 5. Автоматические звуки взаимодействия (ui)
Звуки нажатий и навигации: * Поддержка звуков нажатий и навигации, совместимых с Android, с помощью конфигурации звука платформы. * Отказ. Используйте оболочку SoundEffectOnInteraction, чтобы отключить звуки для поддерева.
import androidx.compose.ui.platform.SoundEffectOnInteraction
// Opt-out of sounds for everything inside
SoundEffectOnInteraction(enabled = false) {
Button(onClick = {}) {
Text("Silent Button")
}
}
### 6. Интеграция Espresso для гибридных интерфейсов (ui-test)
Ограничьте взаимодействия Compose иерархией View, соответствующей Espresso ViewInteraction.
import androidx.compose.ui.test.junit4.onRootWithViewInteraction
import androidx.test.espresso.Espresso.onView
// Match RecyclerView row using Espresso
val specificRow = onView(allOf(withId(R.id.row), hasDescendant(withText("Item #5"))))
// Scope Compose interactions to that row
composeTestRule.onRootWithViewInteraction(specificRow)
.onNodeWithTag("fav_icon")
.performClick()
Версия 1.12.0-rc01
29 июля 2026 г.
Выход androidx.compose.ui:ui-*:1.12.0-rc01. Версия 1.12.0-rc01 содержит эти коммиты.
Версия 1.12.0-beta02
1 июля 2026 г.
Выход androidx.compose.ui:ui-*:1.12.0-beta02. Версия 1.12.0-beta02 содержит эти коммиты.
Версия 1.12.0-beta01
17 июня 2026 г.
Выход androidx.compose.ui:ui-*:1.12.0-beta01. Версия 1.12.0-beta01 содержит эти коммиты.
Изменения в API
- Неприменимо (перенос внутреннего флага функции разработчика) (Iaf2c4, b/368702588)
- Н/Д – перенесен флаг функции. (I24668, b/521811270)
- Добавлен флаг экспериментальной функции
ComposeUiFlags.isTrackpadPinchReinterpretationEnabled– повторно интерпретировать жесты масштабирования на сенсорной панели как события мыши с коэффициентами масштабирования. (Id3477, b/478053727) - Переименована тестовая функция для запуска событий непрямого указателя (I3ee35, b/509618414).
- Добавлена оптимизация в
BasicTextиBasicTextField, благодаря которой высота строки для текста с параметром softwrap=false теперь рассчитывается более оптимально (I2150a).
Исправление ошибок
- Оптимизированное распространение состояния захвата прокрутки по вложенным композициям, чтобы предотвратить ненужную перекомпоновку интерфейса. (I05830)
- Включен флаг экспериментальной функции
ComposeUiFlags.isTrackpadPinchReinterpretationEnabledпо умолчанию. (I35ab8, b/478053727) - Исправлена ошибка при обработке ресурсов векторной графики, из-за которой игнорировались родительские элементы
<clip-path>, если они содержали вложенные элементы<group>. (Id4ea9, b/474530439) - Добавлена поддержка стандартных правил повтора тестирования JUnit 4 в
AndroidComposeTestRuleпутем повторной генерации внутренней тестовой среды и области действия сопрограммы между попытками выполнения. (Iafaa7, b/235383900)
Внешний вклад
- Добавлен интерфейс
AndroidClipboardдля тестирования, позволяющий имитировать реализацию буфера обмена (Ie4d72, b/512924975). - Добавлена обратная совместимость для вариантов
TextAttributecommitText()иsetComposingText(). В SDK версии 37 и выше сервисы специальных возможностей могут сообщать, выбран ли предложенный текст. Для SDK версии ниже 37 не влияет на голосовую обратную связь (то есть сохраняется существующее поведение). (I90e3d, b/439879822)
Версия 1.12.0-alpha03
19 мая 2026 г.
Выход androidx.compose.ui:ui-*:1.12.0-alpha03. Версия 1.12.0-alpha03 содержит эти коммиты.
Изменения в API
- Добавлены новое свойство
credentialRequestSemantics и вспомогательная функцияCredentialRequestDataв API 34 и более поздних версий, чтобы текстовые поля Jetpack Compose можно было интегрировать с менеджером учетных данных Android через фреймворк автозаполнения. (Ida2bf, b/488446455) - Добавлена фабричная функция
ParagraphIntrinsics, которая принимает аргументsoftWrapи другие. Мы можем использовать его как сигнал о том, что текст отображается в одну строку, и выполнять определенные оптимизации. (I66ca4, b/485495112) - Добавлена поддержка автоматических звуков взаимодействия (кликов и навигации с помощью фокуса) для компонентов Compose с новым компонентом
SoundEffectOnInteraction, позволяющим отказаться от этой функции. Обратите внимание, что в результате этого изменения слушатели кликов теперь должны вызываться из основного потока, что может повлиять на небольшое количество тестовых случаев. (I78f65) - Стабилизирована фабричная функция
Font, принимающая значениеvariationSettings. (I183f2) - Стабилизированы свойство
ResourceFontloadingStrategyи методcopy. (I40d84) - Стабилизированы API
InterceptPlatformTextInputиPlatformTextInputInterceptor. (Id2784) - Чтобы улучшить разделение платформ, функции
registerIdlingResourceиunregisterIdlingResourceбыли перенесены в функции расширения. Возможно, вам потребуется обновить импортированные данные. (I21d3d, b/471148519) - В
ComposeTestRuleдобавленоrunWithoutImplicitWait, а вComposeUiTest– , чтобы повысить эффективность тестирования во время проверки штата. Этот API позволяет выполнять блок кода с отключенной неявной синхронизацией, избегая избыточных синхронизаций для каждого запроса узла. Это значительно ускоряет выполнение тестов, особенно тех, в которых вручную просматриваются кадры и проверяются несколько свойств, например при тестировании анимации. (Ie00e9, b/490270394) - Аннотацию
@PreviewWrapperтеперь можно применять к классам аннотацийMultiPreview, что позволяет разработчикам создавать многократно используемые предварительно настроенные конфигурации предпросмотра. (I8ae66, b/511170361) - Добавлен элемент
MeshGradientPainterдля отрисовки сетчатых градиентов. ЭлементModifier.meshGradientудален. Вместо него используйтеMeshGradientPainterс элементомModifier.paint.MeshGradientRendererтеперь доступен только сотрудникам компании. (I2d170, b/508110246) - Теперь правила можно предоставлять по отдельности, указав лямбда-функцию, которая определяет, можно ли предоставить правило, а также отдельную лямбда-функцию, которая предоставляет значение правила. Лямбда-функция
isRulerProvidedне наблюдается и должна быть оптимистичной в отношении того, можно ли предоставить значение. Лямбда-функцияrulerProviderнаблюдается, поэтому при изменении любого значения она обновит значение линейки и всех ее читателей. (Ie9089) - В экспериментальном API стилей добавлена поддержка создания собственных типов стилей с пользовательскими областями действия. Это позволяет создавать подмножества свойств, которые можно задать с помощью стиля (например, полностью удалить графический слой или текстовые свойства), а также расширять область действия независимо от других стилей (например, поддерживать синтаксис
playing { }только в composable-функцииMediaPlayer). Это изменение нарушает совместимость с двоичными файлами и исходным кодом. Основное изменение, нарушающее совместимость с исходным кодом, заключается в том, что вспомогательные функции вStyleScopeтеперь являются функциями расширения (например,fun contentProperty(all: Dp)теперь функция расширения). Чтобы код, вызывающий эти методы, компилировался правильно, достаточно импортировать нужные функции расширения или все символы из androidx.compose.foundation.styles. (I1ef27, b/493676648) - Добавляет
updatePointerBy()с аргументом по умолчанию для идентификатора указателя. (I99f30, b/502001776) DeferredTargetAnimationбольше не является экспериментальным, удалите opt-in." в androidx-main- Добавлен флаг
isClearNestedScrollCoroutineScopeFixEnabledдля управления исправлением. (Ibd394, b/505343254) DeferredTargetAnimationбольше не является экспериментальной функцией. Отключите ее. (I1e4ae, b/500030165)- Новый перечислитель для поддержки триггеров в ui-tooling (I6e198, b/478807872)
ComposeViewContextможно создать без прикрепления отпечатка. При этом по-прежнему требуется, чтобы до вызоваsetContent()была прикреплена ссылка на представление. (Id0952)
Исправление ошибок
- Исправлена ошибка, из-за которой параметр
focusRestorerне восстанавливал фокус при нескольких вызовах сохранения для одного макета (I10277, b/505371994). - Предыдущее улучшение производительности привело к тому, что стало невозможно отслеживать неприкрепленные
ComposeViews. Теперь это можно делать без ущерба для эффективности. (I9b2c5, b/508650647) - Теперь при изменении
ComposeViewContextкомпозиция создается заново, чтобы обеспечить более быстрый доступ кComposeViewContext. (I3b3a8, b/487364963) - Разрешить Compose задавать цвета, отличные от sRGB, для рисования и шейдеров в Android, сохраняя широкую цветовую гамму за счет правильного сопоставления цветовых пространств Compose с эквивалентами платформы. Цветовые пространства, которые не поддерживаются для операций отрисовки платформы (например, CIE XYZ, CIE Lab, OkLab) или недоступны на текущем уровне API, будут безопасно заменены цветовым пространством sRGB. (I3efb5, b/388511109)
Внешний вклад
- Псевдоним типа
androidx.compose.ui.platform.NativeClipboardустарел, используйте вместо негоandroid.content.ClipboardManagerнапрямую (Ibc611). - Замените свойство
Clipboard.nativeClipboardна расширениеClipboard.nativeClipboardManager, чтобы не раскрывать тип платформы в наборе источниковcommonMainчерезtypealias(Ibc611).
Версия 1.12.0-alpha02
6 мая 2026 г.
Выход androidx.compose.ui:ui-*:1.12.0-alpha02. Версия 1.12.0-alpha02 содержит эти коммиты.
Изменения в API
- Добавлен модификатор
MeshGradient. (Ia9a08, b/455752719) - Удаляет встроенные обратные вызовы для отладки автозаполнения. Та же функциональность доступна при регистрации из
AutofillManager.AutofillCallback. (I631c7, b/502279690) - Поддержка настроек вариаций для скачиваемых шрифтов (Ic25c7, b/496278020)
- Функции
mediaQueryиderivedMediaQueryтеперь возвращают общий тип вместоBoolean, что позволяет более гибко использовать их при создании адаптивных интерфейсов. (I93830, b/498698350)
Версия 1.12.0-alpha01
22 апреля 2026 г.
Выход androidx.compose.ui:ui-*:1.12.0-alpha01. Версия 1.12.0-alpha01 содержит эти коммиты.
Изменения в API
- Удален флаг функции
ComposeUiFlags.isIndirectPointerNavigationGestureDetectorEnabled(I82be3, b/455601135) - Сделано
mediaQueryвстроенной функцией (Ie9457, b/498698350) - Функция
ComposeViewContextбольше не является экспериментальной, поэтому аннотацияExperimentalComposeViewContextApiбыла удалена (I32eca). ComposeView.disableWindowInsetsRulers()теперь не экспериментальная функция (Ia81a5)- Добавлен API
hasPendingWork(), позволяющий пассивно проверять, есть ли у интерфейса Compose UI незавершенные задачи, не вызывая ожидания и не переводя часы вперед. Это полезно для ручных тестов часов, чтобы определить, когда завершаются анимации или другие фоновые задачи. (Ic54e3) - Удален флаг функции
AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled(I7fd25, b/491111451). - Удален флаг функции
AndroidComposeUiFlags.isSharedFontEnabled(I2cebe, b/479898293) - Добавлены дополнительные варианты
KeyboardType, чтобы дополнить набор поддерживаемых вариантов клавиатуры на устройствах Android, включая дату, время, дату и время, десятичное число со знаком и т. д. (I3713e, b/202353328) - Удален флажок
AndroidComposeUiFlags.isSharedHapticsEnabled(I6a1d4, b/479895628) - Удален флаг
AndroidComposeUiFlags.isSharedClipboardManagerEnabled(I41e3c, b/479895130) - Удалена пометка
AndroidComposeUiFlags.isSharedViewConfigurationEnabled(I6d3aa, b/479890645) - Удален флаг функции
AndroidComposeUiFlags.isSharedDrawingEnabled. (I27912, b/479849019) - Удален флаг функции
AndroidComposeUiFlags.isSharedAccessibilityManagerEnabled(I6b726, b/479845566) - Удалить флаг
AndroidComposeUiFlags.isSharedWindowInfoEnabled(Ife9a9, b/479837249) - Удалите флажок
AndroidComposeUiFlags.isSharedComposeViewContextEnabled. (Ic522a, b/479834257) - Добавлены настройки вариантов, позволяющие настраивать скачиваемые вариативные шрифты (Ifdc93, b/223262013).
- Добавлены настройки вариантов, позволяющие настраивать скачиваемые переменные шрифты (I390af, b/223262013).
- Удалить флажок
isTraversableDelegatesFixEnabled(Ia7dfe, b/485962494) - На платформах
ComposeTestRuleиComposeUiTestдобавлены функцииrunWhenIdleиawaitAndRunWhenIdle, которые позволяют повысить эффективность тестирования и стабильность состояния. Эти API синхронизируют интерфейс один раз, а затем выполняют блок кода без дополнительных синхронизаций для каждой операции. Это значительно ускоряет выполнение тестов и делает их более надежными, особенно если в тесте используется много свойств, например при тестировании анимации. (Iabf66, b/490270394) - Добавляет
LayerOutsetsкGraphicsLayerиModifier.graphicsLayer, которые можно использовать, чтобы увеличить видимые границы слоя за пределы его измеренного размера. Это позволяет избежать неявного поведенияclipToBounds, когда слой переносится в буфер за пределами экрана. (Ic1189) - По умолчанию отключена регистрация событий ввода автозаполнения. Теперь их можно включить с помощью метода
ComposeView.setAutofillDebugEnabled. (I5b430, b/487947860) - Изменен VelocityTracker, чтобы использовать реализацию, предоставленную Android Framework (настраивается с помощью
AndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled). (Ibc7e2, b/359962905) - Если для параметра
AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabledзадано значение true, дочерние объекты View всегда будут иметь макет, вызываемый после измерения во время прохода макета. Compose не всегда размещает дочерний элемент после измерения, но для правильного управления состоянием это необходимо. (Ib4fe9, b/430974758) - Добавление
isVirtualвLayoutInfo(I3e5cd, b/494243978) - Удален флаг
isGraphicsLayerShapeSemanticsEnabled. (I44be0, b/455600081) - Добавлен новый Font API, позволяющий использовать скачиваемые шрифты без необходимости вручную добавлять сертификаты шрифтов в базу кода. (I30b86, b/479454159)
- Добавлен параметр
onRootWithViewInteraction, позволяющий ограничить семантический поиск Compose определенными представлениями Android . Это упрощает тестирование гибридных интерфейсов, напримерRecyclerViews, без необходимости использовать уникальные теги тестирования в рабочем коде . (Ic02c4, b/175226753)
Исправление ошибок
- Теперь API
captureToImage()позволяет захватывать всплывающее окно или диалоговое окно вместе с его якорем в одном растровом изображении. (I9b83a, b/443137545) - Обновлена версия Compose
compileSdkдо API 37. Это означает, что при использовании Compose требуется минимальная версия AGP 9.2.0. (Id45cd, b/413674743) - Если в семантике задано значение
ContentDataType.None, Compose не будет отправлять события автозаполнения. Это позволит избежать расходов на инициализацию, связанных с запросом сервисов автозаполнения. (I8fbda, b/487947860)
Версия 1.11
Версия 1.11.4
1 июля 2026 г.
Выход androidx.compose.ui:ui-*:1.11.4. Версия 1.11.4 содержит эти коммиты.
Версия 1.11.3
17 июня 2026 г.
Выход androidx.compose.ui:ui-*:1.11.3. Версия 1.11.3 содержит эти коммиты.
Версия 1.11.2
19 мая 2026 г.
Выход androidx.compose.ui:ui-*:1.11.2. Версия 1.11.2 содержит эти коммиты.
Версия 1.11.1
6 мая 2026 г.
Выход androidx.compose.ui:ui-*:1.11.1. Версия 1.11.1 содержит эти коммиты.
Версия 1.11.0
22 апреля 2026 г.
Выход androidx.compose.ui:ui-*:1.11.0. Версия 1.11.0 содержит эти коммиты.
Версия 1.11.0-rc01
8 апреля 2026 г.
Выход androidx.compose.ui:ui-*:1.11.0-rc01. Версия 1.11.0-rc01 содержит эти коммиты.
Версия 1.11.0-beta02
25 марта 2026 г.
Выход androidx.compose.ui:ui-*:1.11.0-beta02. Версия 1.11.0-beta02 содержит эти коммиты.
Изменения в API
- Переименование API
PreviewWrapperдля обеспечения согласованности (I62659, b/490085948) ComposeViewContextпозволяетComposeViewсоздавать композицию, не будучи прикрепленным к иерархии View. Чтобы начать писать письмо без прикрепленного файлаComposeView, используйтеAbstractComposeView.createComposition(composeViewContext). (I46e6f)- В API для тестирования сенсорной панели для
panEndиscaleEndдобавлен параметрdelayMillis(If80fe).
Исправление ошибок
ClipboardиClipboardManagerтеперь запрашивают системный сервис при первом вызове метода (If0016, b/487947860).- Фокус будет правильно восстанавливаться в контейнерах с отложенной инициализацией, где повторно используются узлы и группы фокуса (I18d36, b/481564275).
- Всплывающее окно с
clippingEnabled = falseтеперь корректно использует все границы окна для отображения от края до края (I206408, b/327017902).
Версия 1.11.0-beta01
11 марта 2026 г.
Выход androidx.compose.ui:ui-*:1.11.0-beta01. Версия 1.11.0-beta01 содержит эти коммиты.
Изменения в API
- В диалоговое окно Jetpack Compose добавлена поддержка пользовательских
windowToken(Ic7728) - В Jetpack Compose Popups добавлена поддержка специальных значений
windowTokenиwindowType. (I0a04f) - Представляем интерфейс
PreviewWrapperи поставщика аннотаций. Это позволит разработчикам легко добавлять в трейлеры собственные функции. (I29f54, b/484306729) - Если для свойства
AndroidComposeUiFlags.isSharedFontEnabledзадано значение true, экземпляры объектов, связанных со шрифтами, напримерFontLoaderиFontFamilyResolver, можно использовать в нескольких экземплярахComposeViewвнутриComposeViewContext. (I403e8) - Процессоры семантики Compose будут использовать view.handler вместо
mainLooper, что позволит избежать сбоев в представлениях, использующих обработчики, отличные от основного. (I671c3, b/486235925) - Добавлен флаг
isSkipNonImportantSemanticsNodesHitTestEnabled, который защищает исправление ошибки для семантического тестирования попаданий, влияющего на функцию "Нажми, чтобы исследовать" вTalkBack. (I2933f, b/481011169, b/454377558, b/461360154) - Добавлена поддержка показа диалоговых окон Jetpack Compose из сервисов Android. Теперь разработчики могут показывать диалоговые окна в наложенных окнах, задавая тип окна с помощью нового параметра
windowTypeвDialogProperties. (I7c504, b/478214962) - Переименованы свойства
PointerInputChangeиHistoricalChangeдля получения значений масштабирования и панорамирования. (I989a8, b/481333653) - Добавлены новые функции для API тестирования сенсорной панели, позволяющие имитировать различные кривые и ввод для жеста на сенсорной панели. (I290fb, b/473603145, b/479213358)
- Разделяет новый параметр
PointerEventType.PanнаPointerEventType.PanStart,PointerEventType.PanMoveиPointerEventType.PanEnd. Аналогичным образом правилоPointerEventType.Scaleбыло разделено наPointerEventType.ScaleStart,PointerEventType.ScaleChangeиPointerEventType.ScaleEnd. Это разделение позволяет передавать дополнительную информацию о начале и конце жестов масштабирования и панорамирования, интерпретируемых платформой. Затем обработчики ввода указателя в Compose могут использовать эту информацию для правильного обнаружения событий, особенно для определения момента завершения панорамирования или масштабирования. (I4daf6, b/479285849, b/481333653) - Если
AndroidComposeUiFlags.isSharedHapticsEnabledимеет значение true,ComposeViewContextсодержит экземпляр общего контроллера тактильной обратной связи. (Icd79a) - Добавлены экспериментальные API
mediaQuery,derivedMediaQueryиUiMediaScope(отмечены как@ExperimentalMediaQueryApi), которые позволяют создавать адаптивный интерфейс на основе размеров окна, положения устройства и других характеристик устройства и среды. (I2d21e, b/479800750)
Исправление ошибок
- Устранена проблема, из-за которой символы
Modifier.dropShadowиModifier.innerShadow, относящиеся к блоку, не перерисовывались при динамическом изменении параметра Shape (Форма). (Ida262, b/486202623) - Исправлена ошибка, из-за которой встроенный контент неправильно размещался в макетах RTL с текстом LTR или в макетах LTR с текстом RTL. (I09789)
- Исправлена ошибка, из-за которой при использовании
ComposeViewв переходе между фрагментами возникало исключение. (Ia425f, b/484100557)
Внешний вклад
- Добавьте свойство
InputTextSuggestionState, чтобы определять различные состояния, в которых может находиться ввод транслитерации, когда доступны предложения по замене текста. Также добавлен параметрTextCompositionRange, позволяющий отслеживать диапазон текущего текста транслитерации. Нулевое значение указывает на отсутствие композиции. (I7a67f, b/476472318)
Версия 1.11.0-alpha06
25 февраля 2026 г.
Выход androidx.compose.ui:ui-*:1.11.0-alpha06. Версия 1.11.0-alpha06 содержит эти коммиты.
Изменения в API
- Флаг
ComposeUiFlags.areWindowInsetsRulersEnabledзаменен на APIComposeView.disableWindowInsetsRulers(). (Idcdb4, b/455590696) - Перемещен флаг экспериментальной функции для Android
isAccessibilityShowOnScreenNestedScrollingEnabledв (I1c13a) - Добавлена поддержка функции "Подняться" (I1c13a).
- Теперь можно сообщать о семантических узлах, которые находятся за пределами экрана и являются дочерними элементами частично видимых объединяемых узлов в контейнерах с возможностью прокрутки. Это улучшит взаимодействие пользователей с программами чтения с экрана и другими подобными сервисами (I71df9, b/434782764).
- Если для параметра
AndroidComposeUiFlags.isSharedClipboardManagerEnabledзадано значение true, экземплярами, связанными с буфером обмена, можно делиться междуComposeViewsс помощьюComposeViewContext(I65e2c). ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabledудалено (I6e14a, b/455601894)
Версия 1.11.0-alpha05
11 февраля 2026 г.
Выход androidx.compose.ui:ui-*:1.11.0-alpha05. Версия 1.11.0-alpha05 содержит эти коммиты.
Изменения в API
AndroidComposeUiFlags.isSharedWindowInfoEnabledпереносит информацию изWindowInfoвComposeViewContext. Отключение флага оставляетWindowInfoпод управлениемAndroidComposeView(I3b364)- Общие структуры в
ComposeViewбудут перенесены в общийComposeViewContext. Это первое изменение, которое переноситCoroutineContextвComposeViewContext. Если для параметраAndroidComposeUiFlags.isSharedComposeViewContextEnabledзадано значение true, данные будут передаваться автоматически. Если значение равно false, они не передаются. (I9364d, b/461566955) - Добавлена поддержка жестов на сенсорной панели и преобразования событий ввода с сенсорной панели в события мыши. Теперь события указателя сенсорной панели, управляющие курсором, например на планшетах или ноутбуках, будут в основном регистрироваться как события указателя мыши. Это улучшит поведение при проскальзывании указателя, прокрутке и наведении. Жесты панорамирования и масштабирования также будут регистрироваться с дополнительной информацией, доступной в изменениях событий указателя. Новые типы PointerEventType.Pan и PointerEventType.Scale указывают, что эти значения будут заданы (Id071a, b/315527861, b/459831570).
Исправление ошибок
- Отправьте
CONTENT_CHANGE_TYPE_CHECKEDдля изменения переключаемого свойства. (I6ac64, b/476894689, b/474538004, b/475754416)
Внешний вклад
- Псевдоним типа
androidx.compose.ui.graphics.NativePaintустарел. Вместо него используйтеandroid.graphics.Paintнапрямую (I6303c, b/477394763). - Замените расширение
Paint.asFrameworkPaint()наPaint.nativePaint, чтобы не раскрывать тип платформы в наборе источниковcommonMainчерезtypealias(I6303c, b/477394763). - Добавлена поддержка ключей движения
NumPad(I1ff12).
Версия 1.11.0-alpha04
28 января 2026 г.
Выход androidx.compose.ui:ui-*:1.11.0-alpha04. Версия 1.11.0-alpha04 содержит эти коммиты.
Изменения в API
- Добавлен
TestCoroutineScheduler, чтобы можно было использоватьrunCurrent()и обеспечить доступ к общему экземпляру планировщика. (Iea662, b/254115946) - Добавлена поддержка перехода к вложенной прокрутке в ответ на
android.R.id.accessibilityActionShowOnScreenот специальных возможностей. (Ib2723, b/431148846)
Исправление ошибок
- Исправлено преобразование пользовательского цветового пространства RGB для Android. Пользовательские преобразования в оттенки серого некорректно конвертировались между пользовательскими цветовыми пространствами Compose и Android RGB.(ebd45,b/377021410)
Версия 1.11.0-alpha03
14 января 2026 г.
Выход androidx.compose.ui:ui-*:1.11.0-alpha03. Версия 1.11.0-alpha03 содержит эти коммиты.
Изменения в API
- Удален флажок
ComposeUiTestFlags.isStandardTestDispatcherSupportEnabled. В API версий 2run*ComposeUiTestиcreate*ComposeRuleпо умолчанию используетсяStandardTestDispatcher. Чтобы продолжить использоватьUnconfinedTestDispatcher, вы можете применять устаревшие варианты API, но мы настоятельно рекомендуем перейти на API версии 2, чтобы лучше контролировать выполнение сопрограмм. (Iecc9c, b/455601592) - Добавлены API
androidx.compose.ui.test.junit4.v2.create*ComposeRule. В новых API по умолчанию используетсяStandardTestDispatcher, чтобы лучше имитировать рабочую среду, в которой сопрограммы ставятся в очередь, а не выполняются немедленно. Подробную информацию об этом вы найдете в руководстве по переходу. (I1870e, b/254115946) - Добавлены API
androidx.compose.ui.test.v2.run*ComposeUiTest. В новых API по умолчанию используетсяStandardTestDispatcher, чтобы лучше имитировать рабочую среду, в которой сопрограммы ставятся в очередь, а не выполняются немедленно. Подробную информацию об этом вы найдете в руководстве по переходу. (I4f782, b/254115946) - Теперь можно делиться распространенными структурами в
ComposeView. Если для параметраComposeUiFlags.isSharedComposeViewContextEnabledзадано значение true, данные будут передаваться автоматически. Если значение равно false, они не передаются. (I0d1b4, b/463540495, b/460468959, b/461503366, b/463641813)
Исправление ошибок
- Исправлена ошибка, из-за которой удаление всего контента из
ComposeViewне приводило к удалению нарисованного контента. (I8b382, b/299503084) - Исправлена ошибка, из-за которой происходил сбой при использовании композиции с возможностью приостановки, анимированной с помощью
LookaheadScope. (I7e649, b/469669851) - Устранена проблема, из-за которой передача слишком длинных строк в сервис автозаполнения приводила к сбою. Чтобы этого не происходило, текст теперь автоматически усекается до допустимой длины перед отправкой.
- Исправлена ошибка, из-за которой при определенных условиях выход из наведения мог привести к клику (a3d5a0f).
- Исправлена отправка событий наведения стилуса для тестов и подготовлены тесты мыши для новых тестов стилуса. (9ca9bc9)
- Добавлена поддержка перемещения элементов интерфейса с помощью указателя. (d0742b0, b/BUD_ID)
- Исправлена ошибка в Jetpack Compose
Popup, из-за которой вPopupPositionProviderпередавались абсолютные координаты границ якоря, что приводило к неправильному размещению всплывающих окон. При расчете положения всплывающих окон теперь используются правильные относительные координаты.(1f7edf,b/469940907)
Версия 1.11.0-alpha02
17 декабря 2025 г.
Выход androidx.compose.ui:ui-*:1.11.0-alpha02. Версия 1.11.0-alpha02 содержит эти коммиты.
Изменения в API
- API
MultiModalInjectionScopeтеперь стабильны. К ним относятсяperformKeyInputиperformRotaryScrollInput, а также их базовые API для ключей и ротации. Экспериментальная аннотация удалена. (Ie8bbc, b/261561237) - Добавлены API для тестирования сенсорной панели. Они похожи на API для тестирования мыши и позволяют имитировать поведение трекпада планшета или ноутбука. Основные точки входа:
SemanticsNodeInteraction.performTrackpadInputиMultiModalInjectionScope.trackpad(I2ce67), b/432326139.
Исправление ошибок
- Исправлена проблема совместимости при использовании колесика мыши для прокрутки: теперь прокрутка будет выполняться только в том случае, если она была выполнена в Compose, а не отправлена в Compose. (I5e0c4),
Версия 1.11.0-alpha01
3 декабря 2025 г.
Выход androidx.compose.ui:ui-*:1.11.0-alpha01. Версия 1.11.0-alpha01 содержит эти коммиты.
Изменения в API
- Удаляет флаг интерфейса
isSemanticAutofillEnabled, поскольку семантическое автозаполнение включено по умолчанию. (I849cf, b/455587954) - Изменен способ, которым метод traversable находит
findNearestAncestorподходящие узлы. Теперь делегаты одного типа (NodeKind) будут видны во время обхода. Изменение защищено флагомisTraversableDelegatesFixEnabled. (Ia3165, b/280804097) - Добавление сопоставления
TextEntryKeyдляANI#isTextEntryKey(Ifde7b, b/399540654) Modifier.onFirstVisible()устарел, поскольку его поведение вводит в заблуждение и не всегда соответствует контракту, заявленному в названии. Например, если добавить его к элементуLazyColumn, обратный вызов будет вызываться каждый раз, когда этот элемент становится видимым после прокрутки. Это не то, чего могли ожидать пользователи модификатора с таким названием. Рекомендуем использоватьModifier.onVisibilityChanged()и вручную отслеживать, был ли макет виден ранее, в зависимости от требований конкретного варианта использования. (Ia7095, b/447601783)- Добавлен параметр
MeasuredSizeAwareModifierNode, который необходим при использовании обратного вызоваonRemeasured(). Если вам не нужны другие обратные вызовы, используйте этот интерфейс напрямую, а не более общийLayoutAwareModifierNode. (If6fb0)
Версия 1.10
Версия 1.10.6
25 марта 2026 г.
Выход androidx.compose.ui:ui-*:1.10.6. Версия 1.10.6 содержит эти коммиты.
Версия 1.10.5
11 марта 2026 г.
Выход androidx.compose.ui:ui-*:1.10.5. Версия 1.10.5 содержит эти коммиты.
Версия 1.10.4
25 февраля 2026 г.
Выход androidx.compose.ui:ui-*:1.10.4. Версия 1.10.4 содержит эти коммиты.
Версия 1.10.3
11 февраля 2026 г.
Выход androidx.compose.ui:ui-*:1.10.3. Версия 1.10.3 содержит эти коммиты.
Версия 1.10.2
28 января 2026 г.
Выход androidx.compose.ui:ui-*:1.10.2. Версия 1.10.2 содержит эти коммиты.
Версия 1.10.1
14 января 2026 г.
Выход androidx.compose.ui:ui-*:1.10.1. Версия 1.10.1 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой при использовании
LookaheadScopeпроисходил сбой композиции с возможностью приостановки (I7e649, b/469669851). - Исправлена ошибка в Jetpack Compose
Popup, из-за которой вPopupPositionProviderпередавались абсолютные координаты границ якоря, что приводило к неправильному размещению всплывающих окон. При расчете положения всплывающих окон теперь используются правильные относительные координаты.(1f7edf,b/469940907)
Версия 1.10.0
3 декабря 2025 г.
Выход androidx.compose.ui:ui-*:1.10.0. Версия 1.10.0 содержит эти коммиты.
Версия 1.10.0-rc01
19 ноября 2025 г.
Выход androidx.compose.ui:ui-*:1.10.0-rc01. Версия 1.10.0-rc01 содержит эти коммиты.
Исправление ошибок
- Корректно отправлять обратные вызовы
visibilityChangedсо значением false, когдаminDurationMsне равно нулю. (2ac08b8, b/456384555) - Не вызывать обратный вызов
onVisibilityChanged, если узел изначально не виден. (3969e8d, b/447364998)
Версия 1.10.0-beta02
5 ноября 2025 г.
Выход androidx.compose.ui:ui-*:1.10.0-beta02. Версия 1.10.0-beta02 содержит эти коммиты.
Версия 1.10.0-beta01
22 октября 2025 г.
Выход androidx.compose.ui:ui-*:1.10.0-beta01. Версия 1.10.0-beta01 содержит эти коммиты.
Изменения в API
- Добавлена оптимизация для отправки изменений фокуса. Эту функцию можно отключить с помощью параметра
isOptimizedFocusEventDispatchEnabled = false(I919fb, b/449228515). - Все API для косвенного сенсорного ввода переименованы в API для косвенного ввода указателем, чтобы соответствовать API для ввода указателем. (I238ce, b/451607214)
- Функции
TextDirection,TextAlign,Hyphens,FontSynthesisиvalueOfтеперь вызывают исключениеIllegalArgumentException, если получают неизвестное значение. (I07c67) - Обновите
CompositionDataTree.makeTree, чтобы передавать значения по умолчанию вместо функции-обертки. (Id64a6, b/445229688) - API правил тестирования
createComposeRule,createAndroidComposeRuleиcreateEmptyComposeRule, которые принимают параметрeffectContext, стабильны, а для параметра по умолчанию задано значениеEmptyCoroutineContext. (If400c, b/450540702) UnplacedStateAwareModifierNodeпереименован вUnplacedAwareModifierNode(I6a551, b/449719932)- Отменить оптимизацию сбора контента (Ic000b, b/442364065)
- Добавлен флаг функции
ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled. Это позволило оптимизировать производительность, так как запросы координат, напримерLayoutCoordinates.positionInRoot(), используют кешированные смещения, которые уже есть вRectManager, вместо того чтобы при каждом вызове проходить по всему дереву. (Ieaadc)
Исправление ошибок
PlaceholderSpanтеперь правильно использует нелинейное масштабирование шрифтов для определения размера (Id2ead, b/324462728).- Используйте
ViewCompat, чтобы выполнять константы тактильной обратной связи, поддерживаемые на уровне платформы, полагаясь на ее резервную поддержку для более новых констант. (Ib5a00)
Версия 1.10.0-alpha05
8 октября 2025 г.
Выход androidx.compose.ui:ui-*:1.10.0-alpha05. Версия 1.10.0-alpha05 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой вложенные всплывающие окна неправильно размещались в верхней части экрана. Теперь они правильно прикрепляются к родительскому всплывающему окну. (Id4603, b/191279752)
- Исправлена проблема с переходом фокуса на другие представления в иерархии. (I95223, b/446028624)
- Исправлены поля со встроенными параметрами, отсутствующие в инспекторе в лямбда-выражениях, сгенерированных Kotlin 2.2.20 (I9855d, b/447110005)
- Исправлена проблема с теневым затенением ресурсов автозаполнения между модулями интерфейса и основными модулями (I5da5a).
Внешний вклад
- Объект
UiModesпереименован в AndroidUiModes, чтобы показать, что его константы взяты из Android API. (Ia0a77)
Версия 1.10.0-alpha04
24 сентября 2025 г.
Выход androidx.compose.ui:ui-*:1.10.0-alpha04. Версия 1.10.0-alpha04 содержит эти коммиты.
Изменения в API
- Вариант правила тестирования Compose, принимающий параметр
CoroutineContext, стал стабильным. Аннотация "экспериментальный" удалена, и разработчикам больше не нужно включать этот API. (I74e6e) - Поле "
ComposeUiFlags.isRectTrackingEnabled" удалено. Эта логика не всегда включена. (Id78df) - Удалено устаревшее встроенное переопределение
Updater#set, поскольку предоставленное значение слишком часто упаковывалось (Id679e) - Отметьте семантическое свойство
onAutofillTextкак устаревшее. (I6f81c) - Представлен
UnplacedStateAwareModifierNode. Он предоставляет обратный вызов, который вызывается, когда ранее размещенная раскладка больше не размещается. (I8fdd8, b/309776096) - Исправлена документация по свойству
RetainObserver.onRetainedи добавлено свойствоRetainObserver.onUnused, которое является аналогом свойстваRememberObserver.onAbandoned. (Ia6fc5) - Добавлен
onVisibilityChangedNode(), который создаетModifier.Node, используемыйModifier.onVisibilityChanged()через делегирование, что позволяет расширить эту функцию в вашем собственномModifier.Node. (I70d84, b/443001320)
Исправление ошибок
- Устранена проблема, из-за которой встроенный контент не отображался, если он был расположен в последней строке многострочного текста с многоточием, несмотря на то что перед многоточием был размещен заполнитель. (I76aaf, b/441829208)
Версия 1.10.0-alpha03
10 сентября 2025 г.
Выход androidx.compose.ui:ui-*:1.10.0-alpha03. Версия 1.10.0-alpha03 содержит эти коммиты.
Изменения в API
- Переименовывает
DelegatableNode.invalidateLayoutForSubtreeвDelegatableNode.invalidateMeasurementForSubtree. (I94257, b/430106107) - Удаляет лишний сопоставитель
isInHiddenAccessibilitySubtree. (I4476c, b/443792965) - Добавлены трассировки стека Compose на основе групповых ключей, которые по умолчанию включены для всех минифицированных приложений. Сопоставление ProGuard для этих трассировок будет генерироваться плагином Gradle компилятора Compose, начиная с Kotlin 2.3.0. (Ifbcb5)
Modifier.skipToLookaheadSizeтеперь использует лямбда-функцию, которая по умолчанию включена и позволяет пропускать размеры только при активном общем переходе, как иModifier.skipToLookaheadPosition. (Ibe0f5, b/432485585)- Правило
ComposeUiFlags.isOutOfFrameDeactivationEnabledудалено, и теперь эта функция всегда включена. (I421ed) - Переместите фабричные функции для создания экземпляров
FillableDataв сопутствующий объект. Вместо вызоваFillableData(value)используйте новые методы фабрики:FillableData.createFrom(value). (I2e200, b/441719650) - Добавлен новый узел модификатора
BeyondBoundsLayoutModifierNode, позволяющий выполнять поиск фокуса за пределами макета. (I39be1, b/416133658) FocusTargetModifierNode.requestFocus()передает фокус одному из своих дочерних элементов, если сам не может его получить. Теперь это соответствуетFocusRequester.requestFocus()иFocusRequesterModifierNode.requestFocus(). Если вам не нужно такое поведение, установите для флагаComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabledзначение false в приложении. (Icca5c, b/436863604)- Укажите размер окна на основе DP в
WindowInfo(I9322b, b/424442112). - Удалена пометка
isNestedScrollDispatcherNodeFixEnabled. (If451a) - Добавлена поддержка значений даты в автозаполнении в API
FillableData.val dateMillisValue: Long– для получения информации о дате; соответствующий конструкторFillableData(dateMillisValue: Long)– для создания экземпляровFillableDataна основе даты. (Id072a)
Внешний вклад
- Объект
UiModesиспользуется для объявления констант, которые применяются в аннотацииUiMode(I03cb8).
Версия 1.10.0-alpha02
27 августа 2025 года
Выход androidx.compose.ui:ui-*:1.10.0-alpha02. Версия 1.10.0-alpha02 содержит эти коммиты.
Изменения в API
- Обновите
FillableData, чтобы поддерживать нетекстовые компоненты, такие как переключатели и списки, включая логические и целочисленные значения внутриFillableDataи конструкторы фабрик для создания логических и списочных экземпляровFillableData, которые преобразуются вAutofillValueплатформы. Также добавляются соответствующие семантические свойства и действия. (Ia8105, Icc5cf) - В режиме без сенсорного управления система представления назначает фокус по умолчанию одному из доступных для выбора элементов на экране. Эта функция добавлена в Compose и может быть включена при активации
ComposeUiFlags.isInitialFocusOnFocusableAvailable. (Ib9178) - Удалена пометка
isPointerInteropFilterDispatchingFixEnabled. (Iaa589) - Удалена пометка
isNestedScrollInteropPostFlingFixEnabled. (I2a756) - Добавьте семантические сопоставители
isHiddenFromAccessibility()иisInHiddenAccessibilitySubtree(). (I9f5a1) - В
MainTestClockдобавлен методrunCurrent(), чтобы запускать все задачи, срок выполнения которых наступил, в планировщике. Это необходимо для поддержки тестирования наStandardTestDispatcher, где задачи добавляются в планировщик, а не выполняются сразу, если их задержка составляет 0 мс. Чтобы в тесте использовался объектStandardTestDispatcher, создайте объектComposeTestRuleи передайте ему объектStandardTestDispatcher. По умолчанию тестирование выполняется наUnconfinedTestDispatcher, поэтому вызовrunCurrent()не требуется. - Добавлена поддержка тестирования на устройстве
StandardTestDispatcher. Раньше тестовый фреймворк настраивался (и до сих пор настраивается) с помощьюUnconfinedTestDispatcher, который немного отличается от рабочей среды. Теперь вы можете изменить эту настройку, создав собственнуюStandardTestDispatcherи добавив ее вeffectContextпри созданииComposeTestRule(или при вызове runComposeUiTest). (I334d0, b/254115946) - Обновление кода для создания дерева узлов из
SlotTree. (I997d3)
Исправление ошибок
- Теперь Compose UI устанавливает на устройства Android
RetainScopesс учетом жизненного цикла. Теперь по умолчанию значения с пометкойretainсохраняются при изменении конфигурации. (Id4a09, b/177562901)
Внешний вклад
- Добавлена возможность для
VelocityTrackerрассчитывать скорость указателя на основе отслеживаемых событий указателя с использованием поведения, характерного для платформы. (I621e8)
Версия 1.10.0-alpha01
13 августа 2025 г.
Выход androidx.compose.ui:ui-*:1.10.0-alpha01. Версия 1.10.0-alpha01 содержит эти коммиты.
Изменения в API
- Теперь при нажатии кнопки мыши или сенсорной панели в
ComposeViewфокус будет автоматически сбрасываться, если нажатие происходит за пределами узла, на котором установлен фокус. В результате пользователь сможет убрать фокус, нажав на экран, что более ожидаемо, чем текущее поведение при использовании указателя. От этого поведения можно отказаться с помощью нового APIAbstractComposeView.isClearFocusOnPointerDownEnabled. (I6322b, b/282963174) - Добавлен интерфейс
FillableDataдля поддержки различных типов компонентов автозаполнения, помимо текстовых. (If9bd2) - Новый API, позволяющий динамически включать и отключать общие элементы, а также учитывать, выполняется ли переход между ними. Новый API для настройки альтернативных границ целевого элемента, если целевой общий элемент удаляется во время перехода. Новый API для получения
LayoutCoordinatesLookaheadScope. (I18dd4, b/409819304, b/395670637) - Добавлен флаг
isNestedScrollInteropIntegerPropagationEnabled, позволяющий управлять экспериментом по отправке правильных целых чисел во вложенный элемент прокрутки. (If8316) - Добавлен параметр
requestFocusForChildInRootBounds()вDelegatableNode, чтобы переместить фокус на дочерний элемент, который перекрывает заданный прямоугольник. (I001ef) - Удалены флаги
isOnScrollChangedCallbackEnabled,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled,isFlingContinuationAtBoundsEnabled,isAutomaticNestedPrefetchEnabled,DragGesturePickUpEnabled,isPointerInteropFilterDispatchingFixEnabled,isNestedScrollInteropPostFlingFixEnabled,isNestedScrollDispatcherNodeFixEnabled(I36c18) - Добавлена аннотация
@CheckResultдля функций поиска и выбораSemanticsNode, чтобы обеспечить использование возвращаемых значений. (I6f86e, b/201652748) - Улучшение процесса захвата контента (I3c7c0)
- Добавлен параметр
CompositionLocal, который можно использовать для изменения кисти подсветки успешного заполнения функции "Автозаполнение". (I52329) - Добавлен новый интерфейс Interpolatable, который позволяет автоматически выполнять интерполяцию между разными типами, если один тип знает, как преобразовать другой. Этот интерфейс используется в нескольких типах композиции, например "Кисть" и "Фигура", но его можно использовать и отдельно. (I58eab)
- Теперь Scrollable лучше поддерживает события прокрутки колесиком мыши в двух измерениях. В
MouseInjectionScopeпоявился новый тестовый API, который помогает тестировать варианты использования. Мы также добавили новую перегрузку для методов прокрутки вMouseInjectionScopeи флаг для управления новым поведением под названиемisMouseWheel1DAxisLockingEnabled(I136df). - Добавьте
DeviceConfigurationOverridesдля типа и состояния клавиатуры, типа и состояния навигации, состояния сенсорного экрана и типа режима интерфейса (I282f0). - Добавлен новый
LineHeightStyle.Modeпод названиемTight. Этот режим позволяет задавать меньшую высоту строки, даже если из-за этого могут обрезаться более высокие символы. (Id3849) BaselineShiftтеперь имеет значение "Не указано", чтобы предотвратить упаковку.BaselineShift,Hyphens,LineBreak,TextAlignиTextDirectionтеперь имеют вспомогательные функцииisSpecified.Hyphens,TextAlign,TextDecorationиTextDirectionтеперь имеют методыvalueOf()и value, обеспечивающие эффективную сериализацию и десериализацию. (I8d44c)- Добавлен новый интерфейс метода
getDisplayName, позволяющий задавать специальные отображаемые имена для экземпляров параметров предварительного просмотра. (I19bdf, b/241699422) - Теперь при сравнении значений Dp с Unspecified с помощью операторов "меньше" или "больше" всегда возвращается значение false. При использовании
Dp.compareTo(Unspecified)всегда возвращается значение 0. Если задать для флагаComposeUiUnitFlags.isDpCompareToChangedзначение false, то дляDp.compareTo()будет восстановлено прежнее поведение, при котором сравнение Unspecified с less-than и greater-than не всегда возвращает false, аcompareTo()с Unspecified ведет себя так же, какFloat.compareTo(). (Ifa88b, b/429221319)
Исправление ошибок
- Перенос значения minSdk по умолчанию с API 21 на API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- Исправлена ошибка, из-за которой не удавалось создать новый
AndroidComposeViewsво время перехода. (I2e23e, b/340894487, b/287484338) - Исправлена ошибка цвета при использовании класса VectorDrawable, в котором используется один цвет, а
fillColorне является ни полностью непрозрачным, ни полностью прозрачным. (I3b041, b/328677973) - Исправлена проблема, из-за которой значки, загруженные с помощью
painterResourceс цветами, относящимися к определенной теме, не обновлялись при смене темы. (I85ea0, b/424416571) - Добавлены семантические элементы
onFillDataиfillableData(I45d9e) - В
StateRestorationTesterтеперь всегда включено кодирование состояния для определенной платформы. Это позволяет привести поведение тестов в соответствие с реальным восстановлением состояния приложения, например с помощью Parcelization в Android. (I38211, b/408154192, b/382294247) - Устранены периодические сбои при запросе фокуса. (57b31a11, b/431111149)
Версия 1.9
Версия 1.9.5
19 ноября 2025 г.
Выход androidx.compose.ui:ui-*:1.9.5. Версия 1.9.5 содержит эти коммиты.
Версия 1.9.4
22 октября 2025 г.
Выход androidx.compose.ui:ui-*:1.9.4. Версия 1.9.4 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой встроенный текстовый контент исчезал, если он находился в последней строке многострочного текста с многоточием, даже если встроенный контент не был в области многоточия. (I76aaf, b/441829208)
- Исправлена ошибка, из-за которой обратные вызовы модификатора
onLayoutRectChangedне всегда вызывались, когда значениеdebounceMillisне равно нулю. (72aba47, b/445324854)
Версия 1.9.3
8 октября 2025 г.
Выход androidx.compose.ui:ui-*:1.9.3. Версия 1.9.3 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой модификаторы
onVisibilityChanged/onFirstVisible/onLayoutRectChangedне получали обратные вызовы, если у перемещаемого макета было более 170 потомков. (4f2fdd, b/445356774)
Версия 1.9.2
24 сентября 2025 г.
Выход androidx.compose.ui:ui-*:1.9.2. Версия 1.9.2 содержит эти коммиты.
Исправление ошибок
Modifier.onVisibilityChanged()теперь правильно активируется, когда узел отсоединяется или используется повторно. (Ic5ce20)Modifier.onVisibilityChanged()иonLayoutRectChanged()теперь правильно обрабатывают родительские макеты, используяplaceWithLayer()для размещения дочерних элементов. (Ia05ac9)- Для
Modifier.onVisibilityChanged()иonLayoutRectChanged()правильно уведомляйте в пограничных случаях, например при удалении слоя или модификатора слоя или при обновлении свойств слоя. (Ia05ac)
Версия 1.9.1
10 сентября 2025 г.
Выход androidx.compose.ui:ui-*:1.9.1. Версия 1.9.1 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка цвета при использовании класса VectorDrawable, в котором используется один цвет, а
fillColorне является ни полностью непрозрачным, ни полностью прозрачным. (I3b041, b/328677973)
Версия 1.9.0
13 августа 2025 г.
Выход androidx.compose.ui:ui-*:1.9.0. Версия 1.9.0 содержит эти коммиты.
Важные изменения с версии 1.8.0
- Важные изменения в версии 1.9.0 описаны в этой записи блога.
- Для проверок Lint, поставляемых вместе с Compose, теперь требуется AGP версии 8.8.2 или более поздней. Если вы не можете обновить AGP, обновите Lint отдельно, используя версию
android.experimental.lint.version=8.8.2(или более новую) в файлеgradle.properties. Чтобы выполнять проверки Compose lint в IDE, требуется Android Studio Ladybug или более новая версия. - Важное изменение: узлы модификатора
graphicsLayerтеперь реализуютSemanticsModifierNode. Это может привести к добавлению новыхSemanticsNodesв семантическое дерево и, следовательно, к сбоям в тестах, которые делают предположения о структуре семантического дерева. Например, тесты, в которых используются методыonChild,onParent,onSiblingи другие подобные методы для создания утверждений, могут завершиться неудачно, если между текущим и целевым узлами будет добавлен новый узел. Чтобы устранить эти ошибки, лучше всего добавитьtestTagнепосредственно в целевой узел. Другой подход – использовать менее строгий сопоставитель, напримерonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
Версия 1.9.0-rc01
30 июля 2025 г.
Выход androidx.compose.ui:ui-*:1.9.0-rc01. Версия 1.9.0-rc01 содержит эти коммиты.
Исправление ошибок
- Исправлена проблема, из-за которой значки, загруженные с помощью
painterResourceс цветами, относящимися к теме, не обновлялись при изменении темы системы. (I85ea0, b/424416571) - Исправлены ошибки в API 21(Lollipop) и 28(Pie), из-за которых важные графические методы переименовывались во время оптимизации. (Iebf99, b/425120571, b/420462749)
- Убедитесь, что сначала вызываются новые модификаторы
onLayoutRectChanged. (l9aa91), (lb348a) - Исправлена ошибка, из-за которой неправильно аннулировался кеш смещения, в результате чего модификаторы
onLayoutRectChangedвызывались с неверными координатами (ibd4cd), (lddc57). - Исправлена ошибка, из-за которой при использовании модификаторов
onLayoutRectChangedдля повернутых или скошенных макетов передавались неверные координаты (lddc57, b/426750475).
Внешний вклад
- Исправлена ошибка, из-за которой при прокрутке исчезали элементы
dragAndDropSourceвLazyList. Спасибо, Виктор Рендина! (dc3bcd3, b/425894792)
Версия 1.9.0-beta03
16 июля 2025 г.
Выход androidx.compose.ui:ui-*:1.9.0-beta03. Версия 1.9.0-beta03 содержит эти коммиты.
Исправление ошибок
- Исправлена проблема, из-за которой равномерно размытые внутренние тени неправильно смещались.
Версия 1.9.0-beta02
2 июля 2025 г.
Выход androidx.compose.ui:ui-*:1.9.0-beta02. Версия 1.9.0-beta02 содержит эти коммиты.
Изменения в API
- Изменяет сопутствующий объект на экспериментальный, чтобы он соответствовал классу. (I8452a)
- Удален экспериментальный флаг
isTrackFocusEnabled(I003fd).
Исправление ошибок
- Если
WindowInsetsне нарушает контентComposeView, значенияWindowInsetsRulersне предоставляются. (I71221)
Версия 1.9.0-beta01
18 июня 2025 г.
Выход androidx.compose.ui:ui-*:1.9.0-beta01. Версия 1.9.0-beta01 содержит эти коммиты.
Критические изменения
- Узлы модификатора
graphicsLayerтеперь реализуютSemanticsModifierNode. Это может привести к добавлению новыхSemanticsNodesв семантическое дерево и, следовательно, к сбоям в тестах, которые делают предположения о структуре семантического дерева. Например, тесты, в которых используются методыonChild,onParent,onSiblingи другие подобные методы для создания утверждений, могут завершиться неудачно, если между текущим и целевым узлами будет добавлен новый узел. Чтобы устранить эти ошибки, лучше всего добавитьtestTagнепосредственно в целевой узел. Другой подход – использовать менее строгий сопоставитель, напримерonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
Изменения в API
- Интерфейс
ShadowContextтеперь запечатанный (I3ce40). - Добавлен межмодульный способ создания события непрямого взаимодействия (для тестирования) (I22e4c).
- Делает
IndirectTouchEvent.nativeEventэкспериментальной. (I6fda5) - Изменяет поверхность API на основе отзывов совета по API. (Ibf378)
- Удалите константу
FrameRateCategory.NoPreference. ПереименуйтеModifier.requestedFrameRateвModifier.preferredFrameRate. (I2f976) WindowInsetsRulers: значение параметра "rulersIgnoringVisibility" изменено на максимальное. ФункцияgetDisplayCutoutBounds()теперь является расширением функцииPlacementScope. Значение "WindowInsetsAnimationProperties" изменено на "WindowInsetsAnimation", а значение "getAnimationProperties()" – на "getAnimation()". (I3816f)- Изменен курс "
ShadowParams" на "Shadow" (I11cca) - Изменение пакета для API частоты кадров с
androidx.compose.ui.uiнаandroidx.compose.ui(I8994e) - Изменено значение
InsetsRulers, чтобы оно соответствовало общему коду с названиемWindowInsetsRulers. Упрощенный API, в котором все вставки имеют значениеWindowInsetsRulers. Свойства анимации, не связанные с линейками, были извлечены в классAnimationProperties.WindowInsetsRulers.innermostOf()можно использовать для объединения несколькихWindowInsetsRulers. (I2f0c6, b/415012444) - Добавлен API для инструментов, позволяющий анализировать информацию об источнике, добавленную компилятором Compose. (Iceaf9, b/408492167)
Исправление ошибок
- Флаг для
isGetFocusedRectReturnEmptyEnabledудален, поскольку функция полностью проверена. (Ife722) - Исправлена ошибка в
performScrollToNode, из-за которой в некоторых случаях не удавалось достичь целевого узла. После этого исправления в таких случаях всегда будет достигаться целевой узел. Побочным эффектом этого изменения является то, что точное положение прокрутки в конце действия теперь может быть другим, что влияет на тесты скриншотов и тесты, которые делают предположения о точном положении прокрутки. (I2c8a1)
Версия 1.9.0-alpha04
4 июня 2025 г.
Выход androidx.compose.ui:ui-*:1.9.0-alpha04. Версия 1.9.0-alpha04 содержит эти коммиты.
Изменения в API
- Добавлены API модификаторов для настраиваемых теней. (I2058d, b/160665122)
- Добавьте свойство
SemanticsModifierNode.isImportantForBounds, которое определяет, следует ли учитывать узел при вычислении границ. По умолчанию для этого свойства задано значение true. Если задать значение false, узел не будет учитываться при определении границ. (I7ebec) - Добавьте фабричную функцию
SemanticsPropertyKeyдля объявления семантических свойств, относящихся к Android, которые доступны как дополнительные возможности специальных возможностей, предоставляемые черезAccessibilityNodeInfo.getExtras. (I2ed51) - Удалено использование
ComposeUiFlags.isRemoveFocusedViewFixEnabledи устаревший флаг. (I50328) - Добавлена новая настраиваемая структура теней. К ним относятся
DropShadowPainterиInnerShadowPainter, а также зависимостиDropShadow/InnerShadow. Теневая инфраструктура является общей, поэтому одни и те же сгенерированные тени можно использовать в нескольких местах вызова, не генерируя их заново n раз. (I24f7a, b/160665122) - Добавлены функции
CompositeShaderиCompositeShaderBrush, которые позволяют создавать композитные результаты на основе двух шейдеров. Также добавьтеShaderBrush#transform, чтобы задать матрицу преобразования для шейдера. (I2621a, b/160665122)
Исправление ошибок
- Исправлена ошибка в
NestedScrollInteropConnection, из-за которой методы передачи контента были расположены в неправильном порядке относительно представлений. (I56ad4) - Ранее диалоговые окна, которые занимали весь экран, не отображались в области выреза. Эта ошибка исправлена, и теперь диалоговые окна с
decorFitsSystemWindows = falseиusePlatformDefaultWidth = falseмогут занимать область выреза на экране. (I9e975) - Исправлена ошибка, из-за которой зеленый индикатор фокуса
TalkBackне появлялся после включения, когда приложение Compose работало в фоновом режиме. (Ifd12a)
Версия 1.9.0-alpha03
20 мая 2025 г.
Выход androidx.compose.ui:ui-*:1.9.0-alpha03. Версия 1.9.0-alpha03 содержит эти коммиты.
Изменения в API
- Флаг
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledпозволяет задать для прямоугольника пустое значение, если в элементеComposeViewнет объектов, на которые можно перевести фокус. Это предотвращает выбор представления для фокусировки. Это особенно важно, когда у IME есть параметр NEXT, который может попытаться сфокусироваться наComposeView, иrequestFocus()не удастся. (Ibd0e2, b/369256395) - Представляем флаг
isNestedScrollDispatcherNodeFixEnabled. (I0d24a) - Переименовать
DialogProperties'dialogContentTitleвwindowTitle(Ibd27b) - Были добавлены модификаторы
Modifier.onFirstVisibleиModifier.onVisibilityChanged, которые являются модификаторами высокого уровня, созданными на основеModifier.onLayoutRectChanged. Эти модификаторы созданы специально для обработки множества распространенных требований приложений, таких как регистрация показов, автоматическое воспроизведение видео и т. д. Они разработаны с учетом производительности, поэтому их можно использовать в критически важных сценариях на основе списков без риска снижения скорости прокрутки. В дополнение к этим API модификаторов были добавлены дополнительные API дляRelativeLayoutBounds, чтобы поддерживать эти варианты использования, а также упростить разработчикам создание собственных модификаторов, которые точно соответствуют их потребностям. (I759b8) - Измените значение
setDiagnosticStackTraceEnabledна experimental, чтобы учесть будущие изменения этой функции. (I11db3) - Добавлены
Modifier.scrollable2D,Scrollable2DStateи сопутствующие API для создания состояний. Также добавлены общие функции расширения прокрутки. (Ic61c8, b/214410040) - 64-разрядные значения цвета в Compose нельзя напрямую сравнивать с
ColorLongsв Android, поскольку идентификаторы цветового пространства для некоторых цветовых пространств расположены не по порядку. Чтобы преобразовывать цвета в цветовые пространства Android и обратно, добавлены два новых API:toColorLong()иfromColorLong(). (I36899) - Добавлено свойство
ViewConfiguration.minimumFlingVelocity, позволяющее задавать нижнюю границу скорости прокрутки. (I11aab)
Версия 1.9.0-alpha02
7 мая 2025 г.
Выход androidx.compose.ui:ui-*:1.9.0-alpha02. Версия 1.9.0-alpha02 содержит эти коммиты.
Изменения в API
- Добавьте в
dialogContentTitleзначениеDialogProperties, которое задает заголовок окна контента. bf9d670
Исправление ошибок
- Внутренние тесты пока не завершены, поэтому линейки для отступов окон временно отключены. 8d1402
- Исправлено добавление изменений, связанных с указателем, в
VelocityTrackerвDragGestureNode. Теперь это можно контролировать с помощью нового флагаisAdjustPointerInputChangeOffsetForVelocityTrackerEnabled.254ddb
Версия 1.9.0-alpha01
23 апреля 2025 г.
Выход androidx.compose.ui:ui-*:1.9.0-alpha01. Версия 1.9.0-alpha01 содержит эти коммиты.
Изменения в поведении
- Для проверок Lint, поставляемых вместе с Compose, теперь требуется AGP версии 8.8.2 или более поздней. Если вы не можете обновить AGP, обновите Lint отдельно, используя версию
android.experimental.lint.version=8.8.2(или более новую) в файлеgradle.properties. Чтобы выполнять проверки Compose lint в IDE, требуется Android Studio Ladybug или более новая версия.
Изменения в API
- Удаляет флаг, чтобы включить операторы трассировки для отслеживания пути попадания (отладка). (I1b2a1)
InnerRectRulersиOuterRectRulesтеперь являются методами. Из общедоступного APIRectRulersудален параметр name.DerivedRulersтеперь можно выбрать в качестве конструктора для вертикальной и горизонтальной линеек. МетодыMergedHorizontalRulersиMergedVerticalRulersбыли заменены методамиminOfиmaxOfдля создания экземпляров. (Iee89f, b/408192133)- Прекратить поддержку функции
androidx.compose.ui.LocalSavedStateRegistryOwnerи заменить ее наandroidx.savedstate.compose.LocalSavedStateRegistryOwner. (I5439f, b/377946781) - Добавьте
Modifier.keepScreenOn, чтобы экран не переходил в спящий режим, когда пользователь находится рядом (Ib5af4, b/408284174). - Добавлено новое семантическое свойство
Shape, которое можно задать, если форма элемента интерфейса отличается от его ограничивающего прямоугольника, например если у прямоугольника закругленные углы. (I1376f) - Исправлена проблема с отправкой событий указателя в
AndroidViewsи добавлен флагisPointerInteropFilterDispatchingFixEnabledдля защиты изменений. (I0e272, b/372055500, b/408002332) FocusRestorerбольше не закрепляет ранее выбранный объект. Пользователи должны использовать ключ, чтобы убедиться, что у ранее выбранного элемента тот же хеш композиции, и фокус будет успешно восстановлен. (I4203b, b/330696779)- Разрешить функции создания текста запускать
ViewTreeObserver.OnScrollChanged. Это поведение реализовано с помощью флагаisOnScrollChangedCallbackEnabled. Мы также добавили расширенную версию свойстваDelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286) - Поддержка
currentCompositeKeyHashпрекращена. Используйте вместо негоcurrentCompositeKeyHashCode. Новый API кодирует тот же хеш с помощью большего количества битов, что экспоненциально снижает вероятность того, что две случайные несвязанные группы в иерархии композиции будут иметь один и тот же ключ хеша. (I4cb6a, b/177562901) - Для проектов, выпущенных с Kotlin 2.0, требуется KGP 2.0.0 или более поздней версии (Idb6b5).
- Добавлена поддержка проверки кода для
FocusRequester, чтобы убедиться, что он запоминается в композиции (I6bf91). - Добавлена возможность задавать предпочитаемую частоту кадров или категорию частоты кадров, с которой должен отрисовываться элемент Composable (Ie5201).
- Показывать нативные объявления
MotionEventна устройствах Android. (I17286) - Добавление
getChecked() + setChecked(int), устареваниеisChecked + setChecked(boolean)(Iaac9d) - Модификатор
graphicsLayerтеперь принимаетblendModeиcolorFilter(Iab0e6). - Добавлен локальный для запроса ресурс
LocalResources. При изменении конфигурации функцияLocalResources.currentбудет перекомпонована, поэтому вызовы API, напримерstringResource(), будут возвращать обновленные значения. (I50c13, b/274786917) - Добавлен экспериментальный API для композиций, позволяющий обрабатывать косвенные сенсорные события (Icff57).
- В этом выпуске улучшены отчеты о необработанных исключениях, возникающих на этапах макета и отрисовки композитного контента. Раньше необработанное исключение приводило к сбою в работе средства запуска тестов и преждевременному завершению набора тестов. Теперь об этих исключениях можно сообщать более корректно, не завершая набор тестов. (I9928b, b/314128080)
- Прекращена поддержка экспериментального API
GlobalAssertions. Он был предназначен для проверки доступности, поэтому вместо него используйтеenableAccessibilityChecks(). (I50aa5) SemanticsNodeInteraction.performTextInputSelectionбольше не является экспериментальной функцией. Теперь она поддерживает дополнительный параметрrelativeToOriginal, который позволяет применять выделение к исходному или преобразованному тексту. (I3a905, b/261561038, b/277018945)- Добавлен API для создания пользовательских маркированных списков с помощью
AnnotatedString(I1d066, b/383269496, b/139326648) - Мы отказались от использования параметра
runWithTimingDisabledв пользу параметраrunWithMeasurementDisabled, который более точно описывает поведение: все показатели приостановлены. Кроме того, мы добавили суперклассMicrobenchmarkScope, поскольку нельзя переопределить функциюrunWithMeasurementDisabled, чтобы открыть доступ, так как она встроена. (I9e23b, b/389149423, b/149979716) - Обновлен API устройств ui-tooling, в который добавлены новые устройства. (Ia2ac1)
- Добавьте в коллекцию размеров экрана для предпросмотра вариант "Планшет в вертикальном расположении", чтобы разработчики учитывали большие окна (Ia1976).
- Добавлен API для значений трассировки, позволяющий отмечать/регистрировать трассировку со значениями в определенный момент времени. Значения трассировки в Prefetto отображаются в виде новой дорожки, которую можно посмотреть на временной шкале трассировки. В Android они реализованы с помощью
Trace.setCounter. (Idcf48)
Исправление ошибок
- Исправлена отправка наблюдателей в композиции с возможностью приостановки, чтобы избежать отправки запомненных и забытых объектов в одном приложении (I570b2, b/404645679, b/407931790).
- Теперь можно задавать свойства диалогового окна с помощью
android:dialogTheme, когда дляdecorFitsSystemWindowsустановлено значение false (I7922f, b/246909281). - Исправлена ошибка, из-за которой любое событие движения, зафиксированное за пределами диалогового окна, могло закрыть это окно. (Ia78fd)
- Для проверок Compose Lint теперь требуется минимальная версия AGP 8.8.2 из командной строки и Android Studio Ladybug для поддержки IDE. Если вы используете более раннюю версию AGP, вы можете задать значение
android.experimental.lint.version=8.8.2в файле gradle.properties, чтобы обновить версию Lint, не затрагивая AGP. (I6f2a8) - Добавлено новое семантическое свойство
InputText, которое позволяет получить значениеtextfieldдо применения преобразования выходных данных. (Iae46a, b/395911609, b/176949051) - Перемещен
enableAccessibilityChecks()API, который включает проверку специальных возможностей для Android, в отдельные пакеты, которые являютсяcompose:ui:ui-test-accessibility, если вы не используетеTestRuleиcompose:ui:ui-test-junit4-accessibilityпри вызовеTestRule(I3c318, b/391560768). - Добавлена поддержка стека вызовов Compose в
LaunchedEffectиrememberCoroutineScope(I705c0, b/354163858)
Внешний вклад
- Изменение экспериментальной функции
runComposeUiTest, чтобы она принимала блокировку приостановки. Также добавлена устаревшая функцияrunComposeUiTestдля обеспечения совместимости с двоичными файлами (I3b88c, b/361577328).
Версия 1.8
Версия 1.8.3
18 июня 2025 г.
Выход androidx.compose.ui:ui-*:1.8.3. Версия 1.8.3 содержит эти коммиты.
Исправление ошибок
- Флаг для
isGetFocusedRectReturnEmptyEnabledудален, поскольку функция полностью проверена. (Ife722) - Флаг
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledпозволяет задать для прямоугольника пустое значение, если в элементеComposeViewнет объектов, на которые можно перевести фокус. Это предотвращает выбор представления для фокусировки. Это особенно важно, когда у IME есть параметр NEXT, который может попытаться перейти кComposeView, ноrequestFocus()не сработает. (Ibd0e2, b/369256395)
Версия 1.8.2
20 мая 2025 г.
Выход androidx.compose.ui:ui-*:1.8.2. Версия 1.8.2 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка NullPointerException, возникающая при удалении диалогового окна во время активного потока событий в диалоговом окне (6a7e7f).
- Исправлена ошибка, из-за которой значение
onLayoutRectChangeне обновлялось в соответствии с ограниченным временным интервалом при выполнении обновлений, связанных только с отрисовкой. (03b82d)
Версия 1.8.1
7 мая 2025 г.
Выход androidx.compose.ui:ui-*:1.8.1. Версия 1.8.1 содержит эти коммиты.
Исправление ошибок
- Исправлены некоторые проблемы с
onLayoutRectChangedиLazyLayoutd791b11 - Пропускать запросы на повторное измерение для готовых объектов. Эта ошибка влияла на производительность прокрутки ленивых макетов, поскольку в некоторых случаях предзагрузка работала неэффективно, а измерение выполнялось в пределах кадра. 742087a
Версия 1.8.0
23 апреля 2025 г.
Выход androidx.compose.ui:ui-*:1.8.0. Версия 1.8.0 содержит эти коммиты.
Важные изменения с версии 1.7.0
- В Compose 1.8 добавлена поддержка семантического автозаполнения. Убедитесь, что вы используете UI и Foundation версии 1.8 или более поздней, так как для автозаполнения текстовых компонентов требуются последние версии обоих модулей. Примеры использования API и подробную информацию можно найти в документации по автозаполнению здесь.
- Compose 1.8 поддерживает дополнительные типы виброотклика:
Confirm,ContextClick,GestureEnd,GestureThresholdActivate,Reject,SegmentFrequentTick,SegmentTick,ToggleOn,ToggleOff,VirtualKey. Доступ к ней можно получить черезLocalHapticFeedback. На устройствах Android она доступна по умолчанию, если Vibrator API указывает, что тактильная обратная связь поддерживается. - Стабильными стали несколько API для работы с фокусом, в том числе
Modifier.focusRestorer(),onEnterиonExitFocusProperties(I6e667). Теперь при звонке на номерrequestFocusможно указатьFocusDirection. Мы добавили APIrequestFocus(FocusDirection)вfocusRequesterиFocusTargetModifierNode, чтобы можно было задавать направление фокусировки. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)
Версия 1.8.0-rc03
9 апреля 2025 г.
Выход androidx.compose.ui:ui-*:1.8.0-rc03. Версия 1.8.0-rc03 содержит эти коммиты.
Исправление ошибок
- Отключает некоторые исправления для взаимодействия с фокусом, которые привели к регрессии. (b9d998, b/369256395, b/378570682, b/376142752, b388590015/, b/389994198, b/391378895)
Версия 1.8.0-rc02
26 марта 2025 г.
Выход androidx.compose.ui:ui-*:1.8.0-rc02. Версия 1.8.0-rc02 содержит эти коммиты.
Исправление ошибок
- Устранена проблема, из-за которой при удалении из списка LazyList встроенных в иерархию Compose представлений с фокусом происходила повторная композиция. (765562)
Версия 1.8.0-rc01
12 марта 2025 г.
Выход androidx.compose.ui:ui-*:1.8.0-rc01. Версия 1.8.0-rc01 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой приложение закрывалось при удалении элемента
AndroidView, на котором был установлен фокус, когда активна экранная клавиатура. (Ic725a) - Исправлены некоторые проблемы, связанные с реализацией нового состояния фокуса. (b/395895685)
- Исправлена проблема, из-за которой не работало автозаполнение при использовании
LaunchedEffectдля запроса фокуса на текстовом поле. (b/392539099)
Версия 1.8.0-beta03
26 февраля 2025 г.
Выход androidx.compose.ui:ui-*:1.8.0-beta03. Версия 1.8.0-beta03 содержит эти коммиты.
Изменения в API
- Перенесли API
enableAccessibilityChecks(), который включает проверки специальных возможностей для Android, в отдельные пакеты:compose:ui:ui-test-accessibility, если вы не используете TestRule, иcompose:ui:ui-test-junit4-accessibilityпри вызовеTestRule(I547ef, b/391560768). - Добавлено новое семантическое свойство
InputText, которое позволяет получить значение текстового поля до применения преобразования. (Iae46a)
Исправление ошибок
- Исправлена проблема, из-за которой сервисы автозаполнения сохраняли преобразованный текст вместо исходного. (Iae46a, b/395911609, b/176949051)
Версия 1.8.0-beta02
12 февраля 2025 г.
Выход androidx.compose.ui:ui-*:1.8.0-beta02. Версия 1.8.0-beta02 содержит эти коммиты.
Новые функции
- Добавлена проверка lint, которая предупреждает о вызовах
Configuration#screenWidth/heightDp. Вместо них можно использоватьLocalWindowInfo.current.containerSize, чтобы получить текущий размер окна.
Версия 1.8.0-beta01
29 января 2025 г.
Выход androidx.compose.ui:ui-*:1.8.0-beta01. Версия 1.8.0-beta01 содержит эти коммиты.
Изменения в API
ContextualFlowRowиContextualFlowColumnотмечены как устаревшие. Этот экспериментальный компонент был представлен в версии 1.7 и ещё не был стабилизирован, а его реализация была признана нежелательной. В будущем может быть предоставлен компонент, решающий задачи, для которых был предназначен этот компонент.- В версии 1.7 были добавлены экспериментальные перегрузки функций
FlowRowиFlowColumn, которые включают параметрoverflow. Использование этого параметра прекращено. Вместо него можно использовать перегрузки без этого параметра. По умолчанию для этих перегрузок будет использоваться поведение "Clip", как и раньше. - Многие задачи, для которых используется
ContextualFlowRow, можно решить с помощью FlowRow, но это не всегда так.ContextualFlowRowполностью реализуется в пространстве пользователя, и вы можете попытаться скопировать его реализацию и адаптировать ее по своему усмотрению. В будущем мы планируем реализовать эти функции другим способом. (Ibafec)
- В версии 1.7 были добавлены экспериментальные перегрузки функций
- Ресурс
SemanticsNodeInteraction.semanticsId()уже удален. Используйте вместо негоSemanticsNodeInteraction.fetchSemanticsNode().id. (Ie397a) - Старые API автозаполнения больше не поддерживаются. Вместо него используйте новый API на основе семантики. (I943ff)
- Переписать
requestAutofillAPI, чтобы он не зависел от менеджера автозаполнения. (Id1929)
Исправление ошибок
- Устранена проблема с фокусом, из-за которой элемент
requestFocus()с бессмысленным параметромpreviouslyFocusedRect(связанным с направлением фокуса) пропускал элементComposeView. (Ifdc2f, b/388590015) - Исправлена ошибка, приводившая к исключению NullPointerException при использовании
GraphicsLayer.record { this@ContentDrawScope.drawContent() }. Если вы записываетеdrawContent()таким образом, убедитесь, что используете функцию расширенияGraphicsLayer#recordвнутриDrawScope, а не функцию-членGraphicsLayer. (I75fc0, b/389046242) - Исправлена ошибка, из-за которой многоточие в макете текста иногда переводилось неправильно во время анимации. Подробнее: b/389707025 (Ie55b1, b/389707025).
Версия 1.8.0-alpha08
15 января 2025 г.
Выход androidx.compose.ui:ui-*:1.8.0-alpha08. Версия 1.8.0-alpha08 содержит эти коммиты.
Изменения в API
- Сделать класс
AutofillManagerабстрактным. (I0a3b0) - Исправлены различные проблемы, связанные с фокусом, в том числе сбои, когда IME пытается установить фокус на
ComposeViewбез элементов, на которые можно установить фокус, изменение фокуса в дочернем элементеAndroidViewsи запрос фокуса, оставляющий элементAndroidView. (Ia03c3, b/369256395, b/378570682, b/376142752) - Изменить "
FocusEnterExitScope.cancelFocus()" на "cancelFocusChange()" (I89959) - Теперь вы можете рассчитывать композитные окклюзии с помощью
RectInfo.calculateOcclusions(). - Добавлена функция расширения для
DelegatableNode, позволяющая зарегистрировать прослушиватель для глобальных изменений макета. (I68b59)
Исправление ошибок
- Активность, которая используется в качестве хоста для тестируемой composable-функции при использовании
ComposeContentTestRule.setContent, теперь использует темуTheme.Material.Light.NoActionBar, чтобы избежать перекрытияActionBarс тестовым контентом при таргетинге на SDK 35. Чтобы отключить это поведение, удалите зависимость отui-test-manifestи добавьте запись activity в файл AndroidManifest.xml тестового приложения дляComponentActivityс выбранной темой. (I7ae1b, b/383368165) - Шрифты ресурсов с одинаковыми настройками вариантов теперь не будут перекешироваться, что предотвратит применение неправильных настроек вариантов. (If3dff, b/372044241)
AnnotatedString.fromHtmlтеперь поддерживает теги<ul>/<li>. (I7c2fe, b/299662276, b/139326648)
Внешний вклад
- Добавлен новый интерфейс буфера обмена и локальный состав для него. (I80809)
Версия 1.8.0-alpha07
11 декабря 2024 г.
Выход androidx.compose.ui:ui-*:1.8.0-alpha07. Версия 1.8.0-alpha07 содержит эти коммиты.
Изменения в API
- Владелец
LayoutNodeтеперь доступен для инструментов. (I26f7f) - Для локального использования композиции
LocalAutofillHighlightColorзадайте тип "Цвет". (I0e05b) - Сохраните устаревший тег
UrlAnnotationи его методы как экспериментальные. (Ic0021)
Исправление ошибок
- Исправлен сбой
IndexOutOfBoundsExceptionпри использованииLinkAnnotationвнутриBasicTextили Text composable (be7605, b/374115892). - Устранена проблема, из-за которой заполненные текстовые поля с пользовательской фигурой не обрезали линию индикатора. (I4f87f, b/380704151)
- Исправлена ошибка, из-за которой на длинных скриншотах отсутствовал фон. (I4d57a)
- Теперь в этой библиотеке используются аннотации JSpecify для проверки на наличие нулевых значений, которые применяются к типам. Разработчикам на Kotlin следует использовать следующий аргумент компилятора, чтобы обеспечить правильное использование:
-Xjspecify-annotations=strict(это значение по умолчанию, начиная с версии 2.1.0 компилятора Kotlin). (Idfef8, b/326456246) - Добавлена поддержка широкой цветовой гаммы и цветов HDR в Compose при работе на устройствах с Android Q и более поздних версий. (Icd8be, b/379135036)
- Если шрифт из ресурса не загружается, теперь будет использоваться шрифт по умолчанию. Раньше в таких случаях возникала ошибка. (Ib6a49)
- Исправлена проблема с потерей фокуса при отсоединении и повторном подключении
AndroidView. (I53446) - Принять
requestFocus()из действия "За пределами макета". (Ia8461)
Внешний вклад
- Добавьте
BringIntoViewResponderModifierNodeв интерфейс, чтобы реализовать функцию "Показать на экране" на уровне платформы. (Ia6dd8)
Версия 1.8.0-alpha06
13 ноября 2024 г.
Выход androidx.compose.ui:ui-*:1.8.0-alpha06. Версия 1.8.0-alpha06 содержит эти коммиты.
Изменения в API
- Добавляет модификатор
stylusHoverIcon. (Iff20a, b/331289114) - Менеджер автозаполнения теперь является интерфейсом. (I84914, b/376080755)
- Добавляет
requestFocus(FocusDirection)вfocusRequesterиFocusTargetModifierNode, чтобы можно было фокусироваться в определенном направлении. (I5d9ec, b/245755256) FocusProperties.enterиFocusProperties.exitзаменены наonEnterиonExit, в которых вместо параметраFocusDirectionиспользуется область действия получателя. (I6e667)- Добавлена поддержка автозаполнения на текстовой панели инструментов. (Ie6a4c)
- Изменения в API для
Modifier.focusRestorer()(I99c03):- название параметра изменено на fallback;
- параметр теперь является
FocusRequester, а не лямбда-функцией. - параметр теперь не может иметь значение NULL, а по умолчанию имеет значение Default.
- Удаление аннотации
@Experimentalиз интерфейса менеджера автозаполнения. Функция ещё в разработке, но мы не хотим добавлять в этот выпуск экспериментальный API (Id8398). LocalHapticFeedbackтеперь предоставляет реализациюHapticFeedbackпо умолчанию, когда Vibrator API указывает, что тактильная обратная связь поддерживается. ВHapticFeedbackTypeдобавлены следующие элементы:Confirm,ContextClick,GestureEnd,GestureThresholdActivate,Reject,SegmentFrequentTick,SegmentTick,ToggleOn,ToggleOff,VirtualKey. Компоненты Wear Compose, которые можно нажать и удерживать, напримерButton,IconButton,TextButtonиCard, теперь выполняют тактильную обратную связьLONG_PRESS, если предоставлен обработчик долгого нажатия. (I5083d)- Удаляет
OverscrollConfigurationиLocalOverscrollConfigurationи добавляетrememberPlatformOverscrollFactory, чтобы создать экземпляр или настроить параметры реализации прокрутки по умолчанию. Чтобы отключить прокрутку за пределы экрана, вместоLocalOverscrollConfiguration provides nullиспользуйтеLocalOverscrollFactory provides null. Чтобы изменить цвет свечения или отступы, вместоLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)используйтеLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, b/255554340, b/234451516) - Удален экспериментальный API
GlobalAssertions. Она предназначена для проверки специальных возможностей. Для этого используйтеenableAccessibilityChecks(). (I59322)
Версия 1.8.0-alpha05
30 октября 2024 г.
Выход androidx.compose.ui:ui-*:1.8.0-alpha05. Версия 1.8.0-alpha05 содержит эти коммиты.
Новые функции
В этом выпуске автозаполнение доступно только при включенном флаге. Мы работаем над повышением производительности и будем рады получить отзывы о наших API. До выпуска стабильной версии API могут быть изменены на основе отзывов.
- Чтобы включить автозаполнение, задайте для параметра
ComposeUiFlags.isSemanticAutofillEnabledзначение true вonCreateи используйте последнюю версию Compose Snapshot. - В этой версии автозаполнения поддерживается сохранение учетных данных вручную, с помощью функции "Предложить надежный пароль" и при переходе между страницами. Также поддерживается автозаполнение, когда фокус устанавливается на поле, которое можно заполнить автоматически, или когда автозаполнение запускается с помощью панели инструментов для текста в текстовых компонентах. Когда автозаполнение будет завершено, компонент будет выделен.
Изменения в API
- Измените интерфейс автозаполнения в соответствии со структурой
expect/actual. (I22dce) - Добавлен параметр
CompositionLocal, который позволяет изменять оттенок подсветки автозаполнения. (I32092) - Добавлен API
Modifier.onRectChanged, который позволяет подписаться на позицию и размер элементаLayoutNodeотносительно корневого элемента, окна или экрана. API решает многие задачи, которые решает существующий модификаторonGloballyPositioned, но с гораздо меньшими затратами. Кроме того, API позволяет устранять дребезг и регулировать частоту обратного вызова в соответствии с требованиями конкретного варианта использования. (Id28c7, b/372765423, b/372757007, b/372994338) - Менеджер автозаполнения теперь включает API
commit()иcancel(), которые помогают пользователям сохранять новые учетные данные. (I2da00) - Представляем новый интерфейс
AutofillManager, который можно использовать для настройки автозаполнения, и флагisSemanticAutofillEnabled, позволяющий включить новую версию автозаполнения. (I9d484) - Добавлен API
Modifier.onRectChanged, который позволяет подписаться на позицию и размер элементаLayoutNodeотносительно корневого элемента, окна или экрана. API решает многие задачи, которые решает существующий модификаторonGloballyPositioned, но с гораздо меньшими затратами. Кроме того, API позволяет устранять дребезг и регулировать частоту обратного вызова в соответствии с требованиями конкретного варианта использования. (I3c8fa) - Добавьте семантические свойства и типы данных для расширенной поддержки автозаполнения. (I52c7d)
- Все методы в конструкторе
AnnotatedStringтеперь не экспериментальные (Ia89c8, b/261561823)
Исправление ошибок
- Встроенные в Compose представления теперь могут получать события вращения, если они находятся в фокусе (I4d53a, b/320510084).
- Исправлена проблема, из-за которой различные типы ресурсов не обновлялись при изменении конфигурации (Ia9b99, b/352336694).
- Исправлена ошибка, из-за которой
TextFieldработал некорректно при использовании японской клавиатуры POBox на некоторых старых устройствах Sony. (Ia9b99, b/373743376) - Исправлена проблема с диалоговыми окнами, которые показывались внизу экрана, а не по центру (Ia2ec, b/373093006).
- При таргетинге на API 35+ диалоговые окна больше не будут принудительно иметь значение
decorFitsSystemWindows, равное false. (Ibc94, b/364492593) - Исправлена ошибка, из-за которой происходил сбой при перемещении слоев между окнами (например, диалоговым окном и основным контентом) (I675ba, b/330955281).
Версия 1.8.0-alpha04
16 октября 2024 г.
Выход androidx.compose.ui:ui-*:1.8.0-alpha04. Версия 1.8.0-alpha04 содержит эти коммиты.
Изменения в API
- Добавлены обратные вызовы
DelegatableNode#onDensityChangeиDelegatableNode#onLayoutDirectionChange, позволяющие обновлять состояние узла при его изменении (I04f3e, b/340662451). - Добавляет
WindowInfo#containerSize, чтобы указать размер контейнера контента текущего окна. Его можно получить с помощью методаLocalWindowInfo. (Idc38c, b/369334429, b/360343819) - Исправлена ошибка, из-за которой вложенные прокручиваемые элементы удалялись из дерева узлов во время прокрутки. Теперь эти узлы будут отменять бросок и правильно отправлять событие
onPostFlingс оставшейся скоростью. Мы также добавили флагNewNestedScrollFlingDispatchingEnabled, чтобы управлять поведением в случае регрессии. Флаг будет удален до выпуска бета-версии. (I05c37, b/371168883) - Добавлен параметр
PointerInputModifierNode#touchBoundsExpansion, который можно использовать, чтобы увеличить границы касания для модификатора ввода с помощью одного указателя. (Iccf02, b/335339283) - Добавляет
WindowInfo#containerSize, чтобы указать размер контейнера контента текущего окна. Его можно получить с помощью методаLocalWindowInfo. (I27767, b/369334429, b/360343819) - Удалите
readOnlyизTextFields, чтобы закрепить стабильную версию. (I3aaba) ParagraphиParagraphIntrinsicsтеперь принимают список всех аннотаций, примененных кAnnotatedString. Раньше в них был только списокSpanStyles(I12f80).
Исправление ошибок
- Изменено поведение абзацев в
AnnotatedString. Раньше можно было создавать только непересекающиеся абзацы. ТеперьAnnotatedStringпозволяет полностью перекрывающиеся абзацы, которые будут объединены, и вложенные абзацы, в которых внешний абзац будет разделен по границам внутреннего, а стиль внутреннего абзаца будет объединен со стилем внешнего абзаца (Ic9554). - Исправлена ошибка, возникающая в
AnnotatedStringпри использованииLinkAnnotationнулевой длины. (89aac6)
Версия 1.8.0-alpha03
2 октября 2024 г.
Выход androidx.compose.ui:ui-*:1.8.0-alpha03. Версия 1.8.0-alpha03 содержит эти коммиты.
Изменения в API
- Обновление версии Kotlin до 1.9 (I1a14c)
- Добавлена новая семантическая роль "Карусель", которая имитирует поведение списка в пейджерах для сервисов специальных возможностей. (Id354b, b/354109776, b/239672673)
- Переименуйте
invisibleToUser()вhideFromAccessibility. Его функция осталась прежней. Подробная информация приведена в документации. (Ib43a3)
Исправление ошибок
- Обновление документации для модификатора
SensitiveContent(Ib0442) - Исправлена проблема, из-за которой некоторые общие клипы с контуром игнорировались в сочетании с тенями на некоторых версиях Android.
- Устранена проблема, из-за которой при указании общих клипов с контуром в некоторых версиях Android применялись пустые клипы.
- Исправлено исключение, которое возникало, когда IME был активен на внешнем представлении и действие "Далее" использовалось для перехода к элементу
ComposeView. ПоведениеclearFocus()соответствует поведению View в API версии ниже 28, гдеclearFocus()может привести к тому, что фокус будет установлен на View по умолчанию. - Устранена проблема, из-за которой размещение происходило на отсоединенных узлах в
LazyList. Это было сделано путем разделения управления вложенными композициями для разных проходов макета. - Устранена проблема, из-за которой экранная клавиатура мерцала при переходе с элемента
TextFieldна элементEditTextили любой другой редактор на основе View. - Вложенные узлы прокрутки теперь правильно отправляют события
onPostFlingпосле отсоединения. - Улучшения общей производительности
Версия 1.8.0-alpha02
18 сентября 2024 г.
Выход androidx.compose.ui:ui-*:1.8.0-alpha02. Версия 1.8.0-alpha02 содержит эти коммиты.
Изменения в API
- Теперь доступны символы
TextOverflow.StartEllipsisиTextOverflow.MiddleEllipsis, которые позволяют размещать многоточие в начале или середине строки однострочного текста. (I38913, b/185418980)
Исправление ошибок
- Исправление диалогового окна
dismissOnClickoutside(39a3d, b/364508685) - Не обрезать тени контента диалогового окна (e8e2f, b/363027803)
- Исправлено некорректное поведение при перемещении фокуса поиска между окном создания письма и представлением (58377, b/350534714).
Внешний вклад
- Теперь в
AlignmentLinesMapможно использовать конкретные типыVerticalAlignmentLineилиHorizontalAlignmentLine. (I02912) - Новый общий метод
ByteArray.decodeToImageBitmap(): ImageBitmap. (I83c21)
Версия 1.8.0-alpha01
4 сентября 2024 г.
Выход androidx.compose.ui:ui-*:1.8.0-alpha01. Версия 1.8.0-alpha01 содержит эти коммиты.
Версия 1.7
Версия 1.7.8
12 февраля 2025 г.
Выход androidx.compose.ui:ui-*:1.7.8. Версия 1.7.8 содержит эти коммиты.
Версия 1.7.7
29 января 2025 г.
Выход androidx.compose.ui:ui-*:1.7.7. Версия 1.7.7 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка
IndexOutOfBoundsException, возникающая при передачеAnnotatedStringсLinkAnnotationв компонент Text. (Ic96d2) - Исправлена проблема с тайм-аутом при тестировании в редких случаях, когда в
AnnotatedStringиспользуетсяLinkAnnotation. (I04a03)
Версия 1.7.6
11 декабря 2024 г.
Выход androidx.compose.ui:ui-*:1.7.6. Версия 1.7.6 содержит эти коммиты.
Исправление ошибок
- Раньше при обнаружении ключевого события, когда система фокуса ожидала отмены, мы показывали ошибку. Теперь вместо этого мы регистрируем ошибку (I7ea0, b/346370327).
- Удалена экспериментальная аннотация из
SemanticsPropertyReceiver.invisibleToUser(). В версии 1.8 этот параметр будет заменен наSemanticsPropertyReceiver.hideFromAccessibility(). (I448f0, b/376479686) - Исправлена ошибка, из-за которой
TextFieldработал некорректно при использовании японской клавиатуры POBox на некоторых старых устройствах Sony. (I94e0e, b/373743376) - Устранена проблема со специальными возможностями, из-за которой встроенный контент
BasicTextне озвучивалсяTalkBack. (I67bcb, b/376479686)
Версия 1.7.5
30 октября 2024 г.
Выход androidx.compose.ui:ui-*:1.7.5. Версия 1.7.5 содержит эти коммиты.
Исправление ошибок
- Исправлены проблемы, из-за которых неверно отображались возвышенности и обрезка с пользовательскими контурами.
- Исправлена ошибка, возникающая при использовании символа нулевой ширины
LinkAnnotation. (Ic1e2e) - Исправлено объявление в
Talkbackкнопки, когда она создается как компонент Text с возможностью нажатия. (I1f588)
Версия 1.7.4
16 октября 2024 г.
Выход androidx.compose.ui:ui-*:1.7.4. Версия 1.7.4 содержит эти коммиты.
Версия 1.7.3
2 октября 2024 г.
Выход androidx.compose.ui:ui-*:1.7.3. Версия 1.7.3 содержит эти коммиты.
Исправление ошибок
- Устранена проблема, из-за которой при указании общего клипа с контуром на некоторых версиях Android границы клипа не отображались.
- Исправлено исключение, которое возникало, когда IME был активен на внешнем представлении и действие "Далее" использовалось для перехода к элементу
ComposeView. ПоведениеclearFocus()соответствует поведению View в API версии ниже 28, гдеclearFocus()может привести к тому, что фокус будет установлен на View по умолчанию. - Исправлена ошибка, из-за которой для аннулирования прогнозируемого размещения использовалось неверное значение
placeOrder. В результате в некоторых случаях прогнозируемое размещение пропускалось.
Версия 1.7.2
18 сентября 2024 г.
Выход androidx.compose.ui:ui-*:1.7.2. Версия 1.7.2 содержит эти коммиты.
Исправление ошибок
- Улучшена производительность информации о узлах специальных возможностей и семантических событий за счет удаления подробной трассировки. (I89156, b/362530618)
ComposeViewбольше не будет аварийно завершать работу при передаче исключительно большого размера измерения (da5db, b/347036173).- Исправлена проблема с программой чтения с экрана, из-за которой не озвучивались объявления
LiveRegionна кнопках. (f66fa7, b/348590026)
Версия 1.7.1
10 сентября 2024 г.
- Объекты Android не изменились. Удалено
-desktopартефактов, добавлено-jvmStubsи-linuxx64Stubsартефактов. Ни один из этих целевых показателей не предназначен для использования. Это плейсхолдеры, которые помогают Jetbrains Compose.
Версия 1.7.0
4 сентября 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0.
Важные изменения с версии 1.6.0
Важные изменения в версии 1.7.0 описаны в этой записи блога.
Версия 1.7.0-rc01
21 августа 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0-rc01. Версия 1.7.0-rc01 содержит эти коммиты.
Важные изменения
- Модуль ui:ui теперь требует, чтобы версия foundation:foundation была не ниже 1.7.0-rc01. Это сделано для устранения несовместимости между интерфейсом и базовым слоем в отношении изменений
NestedScrollSource, которые произошли на ранних этапах версии 1.7.0-alpha01.
Версия 1.7.0-beta07
7 августа 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0-beta07. Версия 1.7.0-beta07 содержит эти коммиты.
Исправление ошибок
- Функции, связанные с вводом текста,
SemanticsNodeInteractionperformTextReplacement,performTextInputиperformTextClearanceтеперь будут вызывать ошибки утверждения, если они вызываются в режиме только для чтенияTextFields. (I4ae8f)
Версия 1.7.0-beta06
24 июля 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0-beta06. Версия 1.7.0-beta06 содержит эти коммиты.
Версия 1.7.0-beta05
10 июля 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0-beta05. Версия 1.7.0-beta05 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой при смене программной клавиатуры
TextFieldне принимал ввод с новой клавиатуры, пока фокус не терялся и не восстанавливался. - Устранена проблема, из-за которой попытки сохранить содержимое слоя приводили к нежелательным побочным эффектам при отрисовке контента
SurfaceView.
Версия 1.7.0-beta04
26 июня 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0-beta04. Версия 1.7.0-beta04 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой происходил сбой при измерении очень длинных строк текста (например, из 10 000 символов) (8157ab).
- Отключить поддержку программной отрисовки для API
GraphicsLayer. (35ddd8) - Исправлена ошибка, связанная с сохранением слоев. (70b13e)
- Оптимизация повторного использования объектов слоя была отменена, поскольку она вызывала проблемы с отрисовкой. (70b13e)
Версия 1.7.0-beta03
12 июня 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0-beta03. Версия 1.7.0-beta03 содержит эти коммиты.
Версия 1.7.0-beta02
29 мая 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0-beta02. Версия 1.7.0-beta02 содержит эти коммиты.
Изменения в API
- Переименован элемент
SemanticsProperties.EditableвIsEditable, а значениеSemanticsPropertyReceiver.editableизменено наisEditable. Теперь это логическое значение, которое всегда указывается в текстовых полях. (I8acd8) - Переименовать параметр контрольного показателя специальных возможностей. (I3d440)
- Обновлен API для стилизации ссылок:
TextLinkStylesтеперь является частью конструктораLinkAnnotationи методаAnnotatedString.fromHtml(I90b2b). Также удаленTextDefaultsиз материала (I5477b).
Исправление ошибок
- Параметр
LayoutCoordinates.introducesFrameOfReferenceпереименован вLayoutCoordinates.introducesMotionFrameOfReference, чтобы лучше отражать его назначение. Переименована связанная функция для расчета координат на основе этого флага. (I3a330)
Версия 1.7.0-beta01
14 мая 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0-beta01. Версия 1.7.0-beta01 содержит эти коммиты.
Изменения в API
- Названия "
performCustomAccessibilityActionLabelled" и "performCustomAccessibilityActionWhere" изменены на "performCustomAccessibilityActionWithLabel" и "performCustomAccessibilityActionWithLabelMatching" соответственно. (I5387f) AnnotatedString.hasEqualsAnnotationsтеперь называетсяhasEqualAnnotations(I685c0)- Обновлен API для получения ссылок с темами Material в тексте. В частности, удалены методы из
TextDefaultsдля создания тематическихLinkAnnotationsи разбора HTML с тематическими ссылками. Вместо этого добавлен классTextLinkStyles, который позволяет задавать стиль ссылок в качестве параметра для функции Text. (I31b93)
Исправление ошибок
- Исправлены дополнительные случаи использования, когда во время событий динамически добавляются модификаторы ввода указателя 63e1504
Версия 1.7.0-alpha08
1 мая 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0-alpha08. Версия 1.7.0-alpha08 содержит эти коммиты.
Изменения в API
- Добавлена поддержка реализаций изменяемых фигур. Теперь
Shape#createOutlineнаблюдается внутри графических слоев, поэтому при изменении состояния значения, считанные внутри, будут признаваться недействительными, что позволит повысить производительность анимации фигур. (Id1629, b/326070216) - Название "
isPositionedByParentWithDirectManipulation" изменено на "introducesFrameOfReference". Обратите внимание, что теперь это свойство имеет обратный эффект. По умолчанию большинство элементовLayoutCoordinatesзадают систему координат, и только при прямом манипулировании свойство будет иметь значение false. Чтобы запросить позицию, используя только те, которые вводят систему координат, используйтеpositionInLocalFrameOfReference(...). ИлиpositionInLocalLookaheadFrameOfReferenceотLookaheadScope. (Ifc5f7) LookaheadScopeAPI стали стабильными (I21507)- Изменение лямбда-функции действия для
getScrollViewportLengthв соответствии с отзывом совета по API. (Ibc74a) - Обновлены API контуров
GraphicsLayer, чтобы использовать параметры с плавающей запятой вместо целых чисел. Удалены значения-стражиUnsetOffset/UnsetSize IntSizeв пользу уже существующих констант Unspecified в строковых классах Offset и Size с плавающей запятой (I2fb03, b/333863462). - При внедрении управления мышью во время тестирования функции
MouseInjectionScope.click(),MouseInjectionScope.doubleClick(),MouseInjectionScope.tripleClick()иMouseInjectionScope.longClick()теперь принимают параметрbutton: MouseButton, что делает их более универсальными. Значение по умолчанию для всех методов –MouseButton.Primary. (I31a23, b/190493367, b/261439695) - Название "
onClicked" изменено на "onClick" в файле "LinkInteractionListener". (Iaa35c) - Переименуйте
TextInclusionStrategy.isInsideвisIncluded. Сделай тип возвращаемого значенияParagraph/MultiParagraph#getRangeForRect()ненулевым. (I51f26)
Исправление ошибок
- Исправлена проблема с созданием длинных скриншотов для контейнеров с прокруткой с помощью клавиши
reverseScrolling=true. (I7c59c)
Внешний вклад
- Добавлена поддержка предварительной выборки элементов во вложенных тегах
LazyLists(например, в тегеLazyColumn, который отрисовывает вложенный тегLazyRows). Ожидается, что это изменение позволит уменьшить количество пропущенных кадров при прокрутке для таких теговLazyLists. По умолчанию предварительно загружаются первые два вложенных элемента, но это поведение можно контролировать с помощью новых APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)иLazyListPrefetchStrategy#onNestedPrefetch. (I51952)
Версия 1.7.0-alpha07
17 апреля 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0-alpha07. Версия 1.7.0-alpha07 содержит эти коммиты.
Изменения в API
ClickableTextотмечен как устаревший. Чтобы добавить ссылки в текст, создайтеAnnotatedStringсLinkAnnotation, соответствующим вашей ссылке, и передайте этотAnnotatedStringв компонент Text. (I34d4b, b/323346994)- Добавлен жест
ViewConfiguration.HandwritingGestureLineMarginдля рукописного ввода. Поддержка жестаJoinOrSplitдляBasicTextField(Ie6e13, b/325660505) FocusProperties.enterиFocusProperties.exitбольше не экспериментальные.FocusDirection.EnterиFocusDirection.Exitбольше не экспериментальные.FocusRequester.Cancelбольше не является экспериментальной функцией (I461a1, b/261564106)- При запросе координат макета теперь можно использовать аргумент
excludeDirectManipulationOffset, чтобы исключить смещение, заданное родительскими макетами, которые разместили дочерние элементы с помощьюPlaceable.PlacementScope.withDirectManipulationPlacement. Аналогично, если макет часто меняет положение дочерних элементов, он может размещать их с помощьюwithDirectManipulationPlacement(например, прокрутки, реализованной по умолчанию). Это позволяет создавать более интуитивно понятные анимации на основеapproachLayout, поскольку теперь можно выбирать, какой параметр смещения анимировать, а какой применять напрямую. (I60ec7) - Флаг функции для длинных скриншотов удален. (I28648, b/329128246)
LazyColumnтеперь правильно отображает закрепленные заголовки на длинных скриншотах. (I8d239, b/329296635)- Источники
NestedScrollDrag and Fling заменены наUserInputиSideEffect, чтобы учесть расширенное определение этих источников, которое теперь включает анимацию (Side Effect) и колесико мыши и клавиатуру (UserInput). (I40579) ApproachLayoutModifierNodeиModifier.approachLayoutтеперь стабильны, а старыеisMeasurementApproachComplete()иisPlacementApproachComplete()заменены новымиisMeasurementApproachInProgress()иisPlacementApproachInProgress()соответственно.- Удален устаревший модификатор
intermediateLayout. (I3e91c) - Переименован метод
GraphicsLayer#buildLayer, чтобы он соответствовал методам begin/endRecording API, поддерживаемых Displaylist, напримерRenderNodeи Picture. - Обновление
rememberGraphicsLayerс использованиемrememberObserver. (I312c1, b/288494724, b/330758155) - Правило
UrlAnnotationбольше не поддерживается, используйте вместо него правилоLinkAnnotation.Url. Если вы используете темы Material, то создайте аннотацию с помощью объектаTextDefaults, чтобы применить к ней тему Material (I8d180, b/323346545). - Для текстовых ссылок добавлен вариант оформления при нажатии в дополнение к обычному оформлению, оформлению при наведении и оформлению при фокусе (I5f864, b/139312671).
String.parseAsHtmlпереименован вAnnotatedString.Companion.fromHtml. (I43dcd)- В метод
parseAsHtmlдобавлены аргументы стиля (linkStyle,focusedLinkStyle,hoveredLinkStyle) и слушатель взаимодействия со ссылками. При анализе строки с тегами HTML с помощью тегов<a>метод создает объектLinkAnnotation.Urlдля каждого такого тега и передает объекты стиля и прослушиватель взаимодействия со ссылками каждой аннотации. (I7c977) - Теперь функция
LinkAnnotationпринимает аргументы для стилизации на основе статуса иLinkInteractionListener. Добавьте эту аннотацию кAnnotatedString, чтобы получить гиперссылку. С помощью параметровfocusedStateи/илиhoveredStateможно задать визуальныйconfigurationдля ссылок, когда на них наведен указатель мыши и/или они выбраны. (I81ce4, b/139312671) ImeOptions.hintLocalesбольше не может иметь значение null. Если вы хотите передать пустой список языковых стандартов, используйтеLocaleList.Empty. (Ic5bc4)
Исправление ошибок
- Корректно обрабатывает поврежденные данные о событиях (игнорирует неверные данные смещения).
- Исправлены неожиданные события указателя, когда модификатор ввода указателя добавляется динамически перед другим модификатором ввода указателя во время активного потока событий ввода указателя (например, между событиями hover enter и hover exit [мышь/стилус]).
Версия 1.7.0-alpha06
3 апреля 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0-alpha06. Версия 1.7.0-alpha06 содержит эти коммиты.
Новые функции
- Добавлен метод
parseAsHtmlдля строк со стилями: он позволяет преобразовывать строку, отмеченную тегами HTML, вAnnotatedString. Обратите внимание, что поддерживаются не все теги. Например, пока нельзя создавать маркированные списки. (I84d3d, I30626, b/139326648) - Добавлена экспериментальная поддержка длинных скриншотов в контейнерах прокрутки Compose с использованием официального API Android (
ScrollCaptureCallback). Эта функция экспериментальная и может работать некорректно. Поэтому по умолчанию она отключена. Чтобы включить эту функцию, установите для экспериментального параметраComposeFeatureFlag_LongScreenshotsEnabledзначение true. (I2b055, b/329296471)
Изменения в API
fun ClipEntry.getMetadata()изменено наval ClipEntry.clipMetadata. (I50155)- Удалены функции
ClipboardManager.getClipMetadataиClipboardManager.hasClip. Чтобы прочитать метаданные текущей записи клипа, используйтеclipEntry.getMetadata(). Также проверьте результатClipboardManager.getClip, чтобы узнать, есть ли в буфере обмена текущий клип. (I50498) - Теперь объекты
GraphicsLayerможно передавать в функцииplaceable.placeWithLayer()(I1b22f) - Теперь
ClipboardManager.setClipпринимает значение null, чтобы очистить буфер обмена. (I7d2e9) - Добавлены идентификаторы ресурсов, которые помогают скрывать представления, используемые в качестве деталей реализации в инструментах сборки (I99531).
- В
GraphicsLayerдобавлен метод приостановкиGraphicsLayer#toImageBitmap, позволяющий отрисовывать содержимое растрового изображения. Это операция отрисовки с аппаратным ускорением на API уровня 22 и выше, которая поддерживается более чем на 99% всех устройств Android. На устройствах с Android API уровня 21 используется программная отрисовка. (I9e114) - Вспомогательный метод для преобразования Android
RectFвComposeRect(I39925, b/325660505) - Теперь все параметры
KeyboardOptionsпо умолчанию имеют неопределенное значение. Добавлен методKeyboardOptions.merge. - Атрибут
KeyboardOptions.autoCorrectпереименован вautoCorrectEnabledи теперь может иметь нулевое значение, которое означает, что значение не указано. (Ia8ba0, b/295951492) - В вариантах
BasicTextField(state)иBasicSecureTextFieldтеперь используетсяKeyboardActionHandlerвместоKeyboardActionsдля обработки действий, выполненных с помощью виртуальной клавиатуры. (I58dda)
Версия 1.7.0-alpha05
20 марта 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0-alpha05. Версия 1.7.0-alpha05 содержит эти коммиты.
Новые функции
- Добавлен новый
GraphicsLayerAPI для записи команд рисования в список отображения, а также дополнительные свойства, влияющие на отрисовку списка отображения. Это обеспечивает границу изоляции для разделения сложной сцены на более мелкие части, которые можно обновлять по отдельности, не воссоздавая всю сцену. Преобразования, выполненные с помощьюGraphicsLayer, можно применять без повторной записи списка отображения. В отличие отModifier.graphicsLayer,GraphicsLayerпозволяет создавать контент в других местах и полезен в случаях, когда контент должен быть отрисован в разных сценах.
Изменения в API
GraphicsLayer.draw(Canvas)больше не общедоступный API. Используйте для этого функцию расширенияDrawScope.drawLayer(GraphicsLayer). (I7a7c0)- Метод
restrictedConstraints()разделен на два:fitPrioritizingWidth()иfitPrioritizingHeight()(I6d7fd). - Добавлен заглушка
HardwareCanvasдля использования в Android L (I1c3b5, b/288494724). - Обновите фреймворк Compose, чтобы предоставить доступ к локальной композиции
GraphicsContext, а также обновите реализации Owner,DelegateableNodeиdrawWithCacheModifier, чтобы предоставить доступ кGraphicsContextдля доступа с ограниченной областью действия, который будет автоматически удалять экземплярыGraphicsLayerпри удалении модификаторов. (I64a2f, b/288494724) - Добавлен класс
InterceptPlatformTextInputдля написания низкоуровневых тестов, связанных с IME, и других низкоуровневых вариантов использования IME. ПоддержкаPlatformTextInputTestOverrideпрекращена. (I862ed, b/322680547) - Добавлена функция расширения
GraphicsLayer.setOutline(Outline). (Ib81f4) - Добавлен конструктор функции
GraphicsContextдля создания фабрики экземпляровGraphicsLayer(Ib98d6, b/288494724). - Добавлен
GraphicsLayerAPI, который позволяет разработчикам гибко настраивать запись команд рисования, чтобы использовать их в других местах и применять к конечному результату различные визуальные эффекты. (I80245, b/288494724) - Добавлена функция
Paragraph#getRangeForRect, которая возвращает диапазон текста, покрытый заданной прямоугольной областью. (Iee516, b/325660505) - Удалено экспериментальное переопределение
BasicTextс аргументомonLinkClicked. В будущем мы добавим API, который будет поддерживать гиперссылки. (I107d5)
Исправление ошибок
- Добавлено определение API
GraphicsLayerexpect/actual для поддержки захвата и воспроизведения команд рисования с необязательными визуальными эффектами и преобразованиями композиции. Добавлен интерфейсGraphicsContextдля хранения зависимостей графики, включая создание экземпляровGraphicsLayerи управление ими. (I4a8d6, b/288494724) - Устранена проблема взаимодействия с функцией поиска фокуса 1D, из-за которой фокус застревал в элементе
ComposeView, встроенном в другие представления. (I08fd4)
Внешний вклад
LocalLifecycleOwnerперенесен из Compose UI вlifecycle-runtime-compose, чтобы его вспомогательные API на основе Compose можно было использовать вне Compose UI. Благодарим Джейка Уортона за вклад в развитие проекта. (I6c41b, b/328263448)- Свойства смещения должны быть доступны для всех подтипов выравнивания на основе смещения. (I69f0f, b/328088992)
Версия 1.7.0-alpha04
6 марта 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0-alpha04. Версия 1.7.0-alpha04 содержит эти коммиты.
Изменения в API
- Поддержка рукописного ввода стилусом для BasicTextField2 на устройствах с Android U и более поздними версиями. (I002e4)
- В этом списке изменений мы добавляем семантическое действие
GetScrollViewportLength, чтобы передавать в систему специальных возможностей информацию о компонентах, которые прокручиваются в Compose. Это изменение также применяется к использованию указанного свойства в прокручиваемых списках Foundation. (Ic5fa2) FocusRequester.createRefsтеперь стабильная версия (I4d92c, b/261436820)- Добавлен параметр
DelegatableNode.requireView(), позволяющий узлам модификаторов получать текущий объектViewбез чтения локальной композиции. (I40768) - Новый API
Path.reverse()для изменения направления пути (I36348) - В атрибут
KeyboardOptionsдобавлен атрибутhintLocales, чтобыTextFieldsмог подсказывать IME определенные языковые стандарты для выбора предпочитаемого языка. - Добавлено свойство
platformLocaleвLocale, которое возвращает базовый объект платформы, напримерjava.util.Locale. (I921c6)
Версия 1.7.0-alpha03
21 февраля 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0-alpha03. Версия 1.7.0-alpha03 содержит следующие коммиты:
Изменения в API
- Представляем
ContextualFlowRowи улучшенныеFlowRow/Columnс MaxLines и Overflow. Мы рады сообщить об улучшениях экспериментальных функцийFlowRowиFlowColumn, которые теперь поддерживают maxLines и overflow, а также о появлении функцийContextualFlowRowиContextualFlowColumn. Это обновление позволяет использовать компоненты с оптимальной производительностью. Например,ContextualFlow*идеально подходит для большого количества товаров, если используется небольшая конфигурацияmaxLinesи динамические кнопки "Ещё +N". АFlowRowиFlowColumnлучше всего подходят для небольшого количества товаров (менее 100). Важно! Чтобы сохранить существующее поведение вFlowRowилиFlowColumn, где все элементы компонуются независимо от того, соответствуют ли они максимальному значению поперечной оси, задайте дляoverflowзначениеFlowRowOverflow.VisibleилиFlowColumnOverflow.Visibleво время инициализации. Примеры использования новых функций можно найти в разделахContextualFlowRowSampleиFlowRowSample. (Ib9135, b/293577082) - Добавьте семантическое свойство
maxTextLength, которое должно быть задано для текстовых полей, фильтрующих максимальное допустимое количество символов. (I24d9f, b/170648072) - Поддержка контейнера
Modifier.inspectableпрекращена. Этот API создает больше недействительных значений модификатора, чем необходимо, поэтому его использование не рекомендуется. Разработчикам рекомендуется реализовать методinspectableProperties()вModifierNodeElement, если они хотят предоставить доступ к свойствам модификатора. (Ib3236) - Новый конструктор для
PopupProperties, который позволяет полностью контролировать флагиWindowManager.LayoutParams. (Ibb33e, b/312485503) - Добавлен параметр
DelegatableNode.requireLayoutCoordinates(), позволяющий получить текущее значение параметраLayoutCoordinatesобъектаModifier.Nodeбез необходимости переопределять параметрonPlacedи сохранять координаты в свойстве самостоятельно. (Ia8657) - Добавлен параметр
DelegatableNode.currentLayoutCoordinates, позволяющий получить текущее значение параметраLayoutCoordinatesобъектаModifier.Nodeбез необходимости переопределять параметрonPlacedи сохранять координаты в свойстве самостоятельно. (Iaebaa) BasicTextField2и связанные с ним API из пакетаandroidx.compose.foundation.text2перенесены вandroidx.compose.foundation.text. (I9f635)- Добавлен новый API
ApproachLayoutModifierNode, который позволяет создавать пользовательскую логику подхода в явном узле модификатора. Также добавлен новый экспериментальный APIDeferredTargetAnimationдля анимаций, целевой объект которых неизвестен при создании экземпляра. (I60745) - Новые API
Pathдля запроса направления пути и извлечения контуров изPath. (I63d04) - Добавлены функции
PathHitTestиPath.contains(Offset), чтобы проверить, содержит ли объектPathопределенную точку. (I3b218) - Теперь в
TextLayoutResultдоступен методgetLineBaseline(lineIndex). Это позволяет считывать базовую линию произвольной строки текста в дополнение к существующим удобным свойствамfirstBaselineиlastBaseline. (Ide4e8, b/237428541) - Добавлен метод для сравнения аннотаций двух объектов
AnnotatedStrings. (I32659)
Исправление ошибок
- Исправлена проблема обратной совместимости с
SemanticsPropertyReceiver.performImeActionиSemanticsActions.PerformImeAction. (Id0528, b/322269946)
Версия 1.7.0-alpha02
7 февраля 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0-alpha02. Версия 1.7.0-alpha02 содержит следующие коммиты:
Изменения в API
- Устранена проблема совместимости с
SemanticsPropertyReceiver.performImeAction. (I65865, b/322269946) - Конструктор
PopupProperties, принимающий параметрusePlatformDefaultWidth, больше не является экспериментальным. (I8f8d2) - Добавлен перегруженный оператор
ComposeTestRule.waitUntil, который принимает строковое описание условия для включения в сообщение о тайм-ауте. (I9413e) - Новый API семантики
unset()для удаления семантических свойств, добавленных в той же цепочке модификаторов. Новое семантическое свойствоisOpaque. (I8c583, b/317966058, b/246056649) - Удален параметр
originalEventPositionиз метода копирования в общедоступном APIPointerInputChange. (I7bead)
Исправление ошибок
- Исправлена ошибка, связанная со специальными возможностями, из-за которой при выборе можно было нажимать не только на вкладки и переключатели. (I2181c)
VelocityTrackerтеперь будет по умолчанию получать исправление для добавления баллов. Если возникнут проблемы, исправление можно отключить, задав для параметраVelocityTrackerAddPointsFixзначение false. (Ib3877, b/269487059)- Устранена проблема обратной несовместимости двоичных файлов в
TextStyleиParagraphStyle. (I179f0, b/320819734)
Внешний вклад
- Добавлен новый конструктор
DialogPropertiesбез параметров, относящихся к определенной платформе. (I45829) - Добавлен новый конструктор
PopupPropertiesбез параметров, относящихся к определенной платформе. (I9a038)
Версия 1.7.0-alpha01
24 января 2024 г.
Выход androidx.compose.ui:ui-*:1.7.0-alpha01. Версия 1.7.0-alpha01 содержит следующие коммиты:
Изменения в API
- Расширено свойство "контент"
ClipboardManager: добавлены свойства "контент: изображение"ClipEntryи "контент: видео"ClipMetadata, чтобы поддерживать произвольный контент, например изображения. - Добавляет
DeviceConfigurationOverrideAPI вui-test, чтобы локально переопределять поведение тестируемого контента, например указывать доступный размер, региональные настройки, направление макета, масштаб шрифта или тему.
Версия 1.6
Версия 1.6.8
12 июня 2024 г.
Выход androidx.compose.ui:ui-*:1.6.8. Версия 1.6.8 содержит эти коммиты.
Исправление ошибок
- Исправлены несоответствия в масштабировании шрифта, когда масштаб шрифта меньше, чем наименьшая определенная таблица. В этом случае мы интерполируем между линейным масштабом 1x и самой низкой определенной таблицей, чтобы размер шрифта монотонно увеличивался с увеличением масштаба. (Icbae3)
Версия 1.6.7
1 мая 2024 г.
Выход androidx.compose.ui:ui-*:1.6.7. Версия 1.6.7 содержит эти коммиты.
Версия 1.6.6
17 апреля 2024 г.
Выход androidx.compose.ui:ui-*:1.6.6. Версия 1.6.6 содержит эти коммиты.
Исправление ошибок
- Исправлена редкая ошибка, вызывающая сбой
BasicTextField.
Версия 1.6.5
3 апреля 2024 г.
Выход androidx.compose.ui:ui-*:1.6.5. Версия 1.6.5 содержит эти коммиты.
Версия 1.6.4
20 марта 2024 г.
Выход androidx.compose.ui:ui-*:1.6.4. Версия 1.6.4 содержит эти коммиты.
Версия 1.6.3
6 марта 2024 г.
Выход androidx.compose.ui:ui-*:1.6.3. Версия 1.6.3 содержит эти коммиты.
Версия 1.6.2
21 февраля 2024 г.
Выход androidx.compose.ui:ui-*:1.6.2. Версия 1.6.2 содержит следующие коммиты:
Версия 1.6.1
7 февраля 2024 г. выпущена версия androidx.compose.ui:ui-*:1.6.1. Версия 1.6.1 содержит следующие коммиты:
Исправление ошибок
- Исправлена проблема обратной совместимости с
SemanticsPropertyReceiver.performImeActionиSemanticsActions.PerformImeAction. (Ie0bb2, b/322269946) - Теперь при измерении макетов возникает ошибка, если один из них возвращает аномально большой размер. Обычно такая ошибка возникает, когда при измерении используются максимальные ограничения без проверки на наличие
Constraints.Infinity. Проверка поможет разработчикам найти проблемы с макетом, имеющим неправильный размер, а не с макетом, который его содержит. (I339a9)
Версия 1.6.0
24 января 2024 г.
Выход androidx.compose.ui:ui-*:1.6.0. Версия 1.6.0 содержит следующие коммиты:
Версия 1.6.0-rc01
10 января 2024 г.
Выход androidx.compose.ui:ui-*:1.6.0-rc01. Версия 1.6.0-rc01 содержит следующие коммиты:
Исправление ошибок
- Оптимизирована реализация векторной графики, чтобы повысить производительность за счет минимизации дополнительных перекомпоновок.
Версия 1.6.0-beta03
13 декабря 2023 г.
Выход androidx.compose.ui:ui-*:1.6.0-beta03. Версия 1.6.0-beta03 содержит следующие коммиты:
Новые функции
- Теперь
LayoutCoordinatesможно отсоединить, не отсоединяя узел. Чтобы избежать этого, используйте инспектор макета Compose (If693).
Исправление ошибок
PlatformImeOptionsтеперь является конкретным классом, а не интерфейсом. (If40a4)- Исправлены дополнительные повторные композиции, вызванные тем, что при каждой повторной композиции корня для
LocalSoftwareKeyboardControllerиLocalTextInputServiceзадавались новые значения. (I42190, b/310510985)
Версия 1.6.0-beta02
29 ноября 2023 г.
Выход androidx.compose.ui:ui-*:1.6.0-beta02. Версия 1.6.0-beta02 содержит следующие коммиты.
Версия 1.6.0-beta01
15 ноября 2023 г.
Выход androidx.compose.ui:ui-*:1.6.0-beta01. Версия 1.6.0-beta01 содержит следующие коммиты:
Изменения в API
- Модификатор
DragAndDropTargetтеперь принимаетDragAndDropTargetявно и имеет лямбда-функцию для включения сеанса перетаскивания. Теперь дляDragAndDropModifierNodeесть две фабричные функции. Один для получения данных, а другой – для их передачи (I69481). - Значение
maximumFlingVelocityтеперь представлено в виде числа с плавающей запятой. В документацию внесены уточнения о параметреmaximumFlingVelocity. (I8adc7) onDragAndDropStartна заводеDragAndDropModifierNodeпереименован вacceptDragAndDropTransfer.acceptsDragAndDropTransferбыл добавлен к модификаторуdragAndDropTarget, чтобы принимать данные из сеанса перетаскивания. Эта лямбда-функция возвращает допустимое значениеDragAndDropTarget, если пользователь хочет перетащить элемент. Другие лямбда-функции для обработки событий перетаскивания заменены на эту. Добавлена фабричная функцияDragAndDropTargetдля получения данных из сеансов перетаскивания (Iebf3a).Удален тип
DragAndDropInfo. Теперь типDragAndDropModifierNode.dragпринимает параметры для лямбда-функцииtransferData, размера декоративного элемента и перетаскивания декоративного элементаDrawScope.DragAndDropTargetсодержит методы для определенных событий перетаскивания, а не один абстрактный методonDragAndDropEventв функции фабрики дляDragAndDropModifierNodeпереименован вonDragAndDropStart, чтобы было понятнее, что предоставленныйDragAndDropTargetдействителен только для определенного сеанса перетаскивания.Устройство
DragAndDropEventTypeудалено (I645b1).Название "
PlatformTextInputModifierNode.runTextInputSession" изменено на "establishTextInputSession". (I03cd0)Улучшены названия API для узлов, по которым можно перемещаться. (Ia4474)
Замените
OriginalTextнаTextSubstitution. (Ifa5a8)Название "
PlatformTextInputModifierNode.textInputSession" изменено на "runTextInputSession". (Ie9c6b)Дочерние элементы
SubcomposeLayout(и макеты, такие какLazyColumn, основанные на нем), которые сохраняются для повторного использования в будущем, считаются деактивированными. Для тестирования таких узлов был представлен новый APIassertIsDeactivated(). Остальные тестовые API по умолчанию отфильтровывают деактивированные узлы. (I2ef84, b/187188981)Удалены функции
FocusDirection.InиFocusDirection.Out. Вместо них используйтеFocusDirection.EnterиFocusDirection.Exit(I2f660).API Material
SwipeToReveal(для карточек и чипов) теперь используют API на основе слотов (как рекомендовано в Compose) вместо экземпляров на основе классов данных для создания этих слотов. Это критическое изменение. Чтобы узнать, как использовать новый API, посмотрите демонстрацию и образец кода. (Ia8943)Конструктор
FontStyle(int)больше не поддерживается. Используйте вместо негоFontStyle.NormalилиFontStyle.Italic. (I66610)Интерфейс
FontScalableпереименован вFontScaling(Ie804a)
Исправление ошибок
SoftwareKeyboardController.show()больше не будет показывать виртуальную клавиатуру, если не выбран текстовый редактор. (I2165a, b/301477279)- События Hardware key Up для клавиш, которые не получили событие Down в том же Compose View, теперь будут игнорироваться. (Ib37b4, b/305518328)
- Добавлена поддержка рендеринга кругового градиента в
ArcLine. (I4d5bb) - Реализуйте equals и hashcode для
PageSize.Fixed. (Ie3ede, b/300134276) - Исправлена проблема совместимости двоичных файлов при изменении отступа окна (Iee695).
- Удален основной слой Material для чипа/кнопки Material3, поскольку микротесты показывают, что без него производительность выше. (I55555)
TestDispatchers, переданные какeffectContextв Compose-тесты, теперь будут использоваться для создания тестов и часов фреймов. (Ia7178)
Версия 1.6.0-alpha08
18 октября 2023 г.
Выход androidx.compose.ui:ui-*:1.6.0-alpha08. Версия 1.6.0-alpha08 содержит следующие коммиты.
Изменения в API
- В функции
Modifier.dragAndDrawSourceлямбда-функцияonDrawDragShadowпереименована вdrawDragDecoration, а в функцииDragAndDropInfoпараметр размера переименован вdragDecorationSize. (Id0e30, b/303904810) - Добавлены функции
SemanticsNodeInteraction.isDisplayed()иSemanticsNodeInteraction.isNotDisplayed(), позволяющие проверить, виден ли найденный узел, не выполняя при этом утверждение. (I2c196, b/302100809) - В поля
TextAlign,TextDirection,HyphensиLineBreakобъектаParagraphTextStyleдобавлено специальное значениеUnspecified, которое заменяетnull. Поскольку эти классы являются встроенными, замена типа Nullable на Unspecified позволяет избежать упаковки примитивных типов. Конструкторы, геттеры и другие методы вTextStyleи стиле абзаца были обновлены, чтобы принимать упомянутые параметры как типы, отличные от null. (I4197e, b/299490814) - Добавьте перегрузку
GoogleFontдля чтенияGoogleFontиз XML. (If8f59) - Класс
LoremIpsumPreviewParameterProviderстал общедоступным. (I41bf5, b/266918816, b/300116360)
Исправление ошибок
- Теперь в
FontFamilyResolverдля сопрограмм управления кешем используетсяDispatchers.Main. (Ie8dd9) AndroidViewBindingтеперь синхронно удаляет экземплярыFragment, созданные путем включенияFragmentContainerViewв макет в рамкахonRelease, используяcommitNow(вместоcommit, которое использовалось ранее). Это позволяет устранить проблемы с методом Live Edit, связанные с заменой композиции при внесении изменений. (I58fbf)
Версия 1.6.0-alpha07
4 октября 2023 г.
Выход androidx.compose.ui:ui-*:1.6.0-alpha07. Версия 1.6.0-alpha07 содержит следующие коммиты:
Изменения в API
- Добавлена задача
PlatformTextInputMethodTestOverrideдля написания тестов для пользовательских текстовых редакторов. (Id159b) - Добавлены модификаторы
dragAndDropSourceдля начала сеансов перетаскивания иdragAndDropTargetдля получения данных из сеансов перетаскивания. (Ib7828, b/286038936) - Добавлены коллекции
ColorListиColorSet, которые позволяют избежать распределения. (I744bd) - Добавлен временный флаг
DisableNonLinearFontScalingInCompose, отключающий нелинейное масштабирование шрифта. Если вам нужно время, чтобы удалить данные, задайте в тестах значениеDisableNonLinearFontScalingInCompose = true. Этот флаг будет удален в Compose 1.6.0-beta01. (Ic9486)
Исправление ошибок
- Оптимизирована обработка векторных изображений XML. (Ibb015)
Версия 1.6.0-alpha06
20 сентября 2023 г.
Выход androidx.compose.ui:ui-*:1.6.0-alpha06. Версия 1.6.0-alpha06 содержит следующие коммиты:
Изменения в API
- Дополнительная оптимизация значков Material. (I3e08d)
- Добавлена возможность перемещаться вверх и вниз по дереву модификаторов, чтобы находить похожие узлы. (I2d234)
- Добавлен обратный вызов
onRestoreFailed()в модификаторfocusRestorer()(Ie1d43) - Добавлены аннотации androidx в различные графические API, чтобы указать
ColorInt,FloatRange,IntRange,Sizeи т. д. (Id65c8, b/290950582) - Добавить
showSystemUi=trueв определениеPreviewScreenSizes(Ib61d3)
Изменения в поведении
- Теперь в Compose используется нелинейное масштабирование шрифтов, чтобы улучшить читаемость и доступность. Если в системных настройках масштаб шрифта больше 100 %, размер мелкого текста увеличится, как обычно, а крупного – незначительно. Кроме того, высота строк, заданная в SP, будет автоматически корректироваться, чтобы оставаться пропорциональной высоте, предназначенной для масштаба 100 %. Подробнее о масштабировании шрифтов… (I11518)
Версия 1.6.0-alpha05
6 сентября 2023 г.
Выход androidx.compose.ui:ui-*:1.6.0-alpha05. Версия 1.6.0-alpha05 содержит следующие коммиты:
Изменения в API
- Включите запись контента в
AndroidComposeViewAccessibilityDelegateCompat. (Ib2969) - Скорость прокрутки в компонентах View, таких как
ScrollViewиRecyclerView, ограничена значениемViewConfiguration.ScaledMaximumFlingVelocity. В Compose теперь есть собственная версияmaximumFlingVelocity, которая применяется кDraggable. (Ibf974) - Добавлена начальная структура для поддержки API перетаскивания платформы. (If84ce)
- Добавить
deviceIdвRotaryScrollEvent(Iba3bf) - Обновлен API устройств
ui-tooling, в него добавлены новые устройства (Ib25b4).
Версия 1.6.0-alpha04
23 августа 2023 г.
Выход androidx.compose.ui:ui-*:1.6.0-alpha04. Версия 1.6.0-alpha04 содержит следующие коммиты:
Изменения в API
- Добавлен метод для деактивации
ReusableComposition, при котором наблюдения удаляются, но узлы остаются на месте. Чтобы активировать отключенную композицию, вызовите методsetContent. (Ib7f31) - Добавлен интерфейс
ReusableCompositionдля управления жизненным циклом и повторным использованием вложенных композиций. (I812d1, b/252846775) Modifier.focusGroupпереведен в стабильные API. (I7ffa3)- Добавлены аннотации androidx в различные графические API, чтобы указать
ColorInt,FloatRange,IntRange,Sizeи т. д. (I70487, b/290950582) - Обновленный
ColorFilterAPI теперь содержит конкретные типы подклассов, что позволяет лучше проверять параметры. (I5fe29) - Добавлена библиотека wear-tooling-preview, позволяющая составлять список устройств Wear OS, которые можно использовать для предварительного просмотра интерфейса (Ib036e).
- Создан интерфейс
FontScalableдля обработки масштабирования шрифтов в интерфейсе плотности. (I2cf3f)
Версия 1.6.0-alpha03
9 августа 2023 г.
Выход androidx.compose.ui:ui-*:1.6.0-alpha03. Версия 1.6.0-alpha03 содержит следующие коммиты:
Изменения в API
- Новый тип перехода, при котором контент масштабируется в зависимости от размера анимированного контейнера во время анимации появления и исчезновения.
LookaheadScopeКомпонуемые функции и интерфейс теперь стабильны. (Ifb2ce) - Добавлена поддержка настройки
privateImeOptions(Idb772)
Исправление ошибок
PopupPositionProvider.calculatePositionтеперь автоматически обновляет положение всплывающего окна при изменении состояния, считанного при расчете. (I676a1, b/292257547)- Исправлена ошибка, из-за которой в текстовых полях показывалась клавиатура и их можно было редактировать, когда для параметра
readOnlyбыло задано значение true. Также исправлена ошибка, из-за которой клавиатура не появлялась, когда значениеreadOnlyменялось с true на false при установленном фокусе. (I34a19, b/246909589) - Расширенное применение глобальных утверждений при тестировании интерфейса. (I1f90d)
Версия 1.6.0-alpha02
26 июля 2023 г.
Выход androidx.compose.ui:ui-*:1.6.0-alpha02. Версия 1.6.0-alpha02 содержит следующие коммиты:
Изменения в API
- Добавлен интерфейс локатора сервисов, который может быть реализован реализаторами Composition. Он позволяет реализации Composition, которая делегирует другому делегату Composition поиск сервисов, обращаться к исходному Composition. Этот метод не следует вызывать напрямую. Он используется для создания экспериментальных API в среде выполнения, которые можно найти в обернутых версиях композитора, например в модуле UI. (I296b9)
- Полностью переработанный API
PlatformTextInput*. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardControllerиLocalSoftwareKeyboardControllerбольше не экспериментальные.LocalSoftwareKeyboardControllerтеперь также являетсяCompositionLocal. (I4c364)- Методы
LookaheadLayoutиLookaheadLayoutScopeбольше не поддерживаются и были удалены. Новые APILookaheadScopeмогут работать с любым макетом. (I12ac3) - Добавлена команда
SemanticsNodeInteraction.requestFocus, которая позволяет более удобным способом запрашивать фокус в тестах. (Ie8722) - Добавлены экспериментальные API для регистрации глобальных утверждений, которые в будущем будут использоваться фреймворками для тестирования. (I12d77)
Исправление ошибок
- Первый вызов обратного вызова
AndroidViewupdateтеперь будет отложен до тех пор, пока представление не будет прикреплено, вместо того чтобы выполняться при применении композиции, которая представляетAndroidView. Исправлена ошибка, из-за которой обратный вызовupdateне становился недействительным, если состояние, которое он считывал, сразу же менялось эффектом. (Ie9438, b/291094055)
Версия 1.6.0-alpha01
21 июня 2023 г.
Выход androidx.compose.ui:ui-*:1.6.0-alpha01. Версия 1.6.0-alpha01 содержит следующие коммиты:
Новые функции
- Поддержка прогнозирования в
LazyList. Это позволяетLazyListв проходе с прогнозированием игнорировать любую анимацию (например, анимацию размещения элемента,AnimatedVisibilityи т.д.) и рассчитывать размер и положение прогнозирования для всех дочерних элементов. После этого дети изLazyListмогли анимировать независимо от реальности, увиденной в проходе.
Изменение поведения: в Compose по умолчанию для параметра includeFontPadding установлено значение false
includeFontPadding теперь по умолчанию имеет значение false (21d806) в Compose.
includeFontPadding – устаревший атрибут, который определяет, нужно ли добавлять дополнительное пространство над первой и под последней строкой текста, чтобы разместить символы, которые могут выходить за пределы базовых линий текста.
После обновления версии Compose все тексты в интерфейсе будут отображаться по-другому: лишние отступы над первой и под последней строкой будут удалены.
В зависимости от требований к интерфейсу и используемых показателей шрифта изменения должны быть минимальными. Однако могут возникнуть проблемы, например: - Неработающие тесты скриншотов. При необходимости исправьте интерфейс и заново создайте золотые образы. – Текст немного смещен. Удалите все отрицательные поля или добавьте поля, если это необходимо.
Вы можете включить includeFontPadding, используя PlatformTextStyle для каждого текста:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Вы можете включить includeFontPadding для всего текста, настроив стили Material. Обратите внимание, что названия параметров в M2 и M3 различаются.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Подробнее о Compose includeFontPadding можно узнать из документации для разработчиков и этой записи в блоге.
Если вы столкнетесь с проблемами или ошибками, связанными с этим изменением, сообщите о них с помощью инструмента отслеживания ошибок.
Изменения в API
- Поддержка
InputConnection#requestCursorUpdates(I0c69b) - Добавлены
FocusRequester.saveFocusedChildиFocusRequester.restoreFocusedChild(Ic557e, b/272302679, b/275157318) - Добавлен тип
ResourceResolutionExceptionдля обертывания исключений, возникающих при попытке загрузить объекты изображений, с описанием пути к объекту, который не удалось загрузить. (I19f44, b/230166331, b/278424788) - Оптимизированная доступность для производительности и распределения памяти. (Iede48)
- Добавлены семантические свойства и действия для поддержки перевода текста. (I4a6bc)
- Новый ресурс в
IntrinsincMeasureScopeи его реализации (например,MeasureScope), чтобы указать, является ли текущий проход по тактам проходом с предпросмотром. (I7a812) - Обновлен API
DrawScope, чтобы можно было перенацеливать отрисовку на другой холст с альтернативной плотностью, направлением макета и размером. - Обновлен тег
DrawContext: теперь можно настраивать плотность и направление макета, а также задавать параметры холста. (Ie1f9b, b/225408150) - Добавлен параметр
Paragraph#fillBoundingBoxesдля вычисления ограничивающих рамок символов. (If30ee) - Добавлен набор распространенных
MultiPreviews(Ia5a27)
Исправление ошибок
- Добавлен интерфейс
FocusTargetModifierNode, который можно использовать для создания специального объектаFocusTarget. (I9790e) - Параметры
fallback*в конструктореTextMeasurerпереименованы вdefault*. (I940a5) - Названия "
SemanticsPropertyReceiver.performImeAction" и "SemanticsActions.PerformImeAction" изменены на "onImeAction" и "OnImeAction" соответственно. (I8e841) - Добавлено колесо прокрутки, чтобы отличать прокрутку мыши от перетаскивания при вложенной прокрутке (в частности, в
NestedScrollConnection). (Ie57e4) - Добавлен API
asComposePaint, который заменитtoComposePaint, поскольку возвращаемый объект содержит исходныйandroid.graphics.Paint(I22b4c). - Удалите
SemanticsProperties.imeActionи замените его новым параметром дляSemanticsActions.performImeAction. (I4a587) - Добавлена поддержка выделения с помощью мыши. При выборе текста касанием выделение будет расширяться по словам и сокращаться по символам. (Ic0c6c, b/180639271)
- Методы
Paragraph, которые раньше вызывали исключениеAssertionErrorдля недопустимых смещений, теперь вызывают исключениеIllegalArgumentException, как и методMultiParagraph. (I549d3, b/243338896)
Версия 1.5
Версия 1.5.4
18 октября 2023 г.
Выход androidx.compose.ui:ui-*:1.5.4. Версия 1.5.4 содержит следующие коммиты:
Версия 1.5.3
4 октября 2023 г.
Выход androidx.compose.ui:ui-*:1.5.3. Версия 1.5.3 содержит следующие коммиты:
Исправление ошибок
- (b/301209788)
TextFieldиногда неправильно применял предыдущие команды при фокусировке и вводе текста на корейском языке, что приводило к потере символов.
Версия 1.5.2
27 сентября 2023 г.
Выход androidx.compose.ui:ui-*:1.5.2. Версия 1.5.2 содержит следующие коммиты:
Исправление ошибок
- Добавлено временное решение для устранения сбоев при доступе к API прокрутки специальных возможностей из фонового потока.
- Исправлена ошибка, из-за которой в семантическое дерево добавлялись неприсоединенные узлы.
Версия 1.5.1
6 сентября 2023 г.
Выход androidx.compose.ui:ui-*:1.5.1. Версия 1.5.1 содержит следующие коммиты:
Исправление ошибок
- Исправлена ошибка, из-за которой в фиксированных текстовых полях показывалась клавиатура и их можно было редактировать, когда для параметра
readOnlyбыло задано значение true. Также исправлена ошибка, из-за которой клавиатура не показывалась, когда значениеreadOnlyменялось с true на false при фокусе. (I34a19, b/246909589)
Версия 1.5.0
9 августа 2023 г.
Выход androidx.compose.ui:ui-*:1.5.0. Версия 1.5.0 содержит следующие коммиты:
Версия 1.5.0-rc01
26 июля 2023 г.
Выход androidx.compose.ui:ui-*:1.5.0-rc01. Версия 1.5.0-rc01 содержит следующие коммиты:
Исправление ошибок
- Исправлена ошибка, приводившая к сбоям при использовании свойства
SubcomposeLayoutвнутри свойстваmovableContentOf().
Версия 1.5.0-beta03
28 июня 2023 г.
Выход androidx.compose.ui:ui-*:1.5.0-beta03. Версия 1.5.0-beta03 содержит следующие коммиты:
Исправление ошибок
- Добавлен интерфейс FocusTargetModifierNode, который можно использовать для создания специального объекта FocusTarget. (Ifb1d6)
- Исправлена проблема с компонентами Dialog и Popup, из-за которой дочернее окно могло не изменять размер должным образом при использовании
usePlatformDefaultWidth=true. (I112ee)
Версия 1.5.0-beta02
7 июня 2023 г.
Выход androidx.compose.ui:ui-*:1.5.0-beta02. Версия 1.5.0-beta02 содержит следующие коммиты:
Изменения в API
- Добавлен API
asComposePaint, позволяющий использовать экземплярandroid.graphics.Paintв Compose.
Исправление ошибок
- Добавлен API
asComposePaint, который заменитtoComposePaint, поскольку возвращаемый объект содержит исходныйandroid.graphics.Paint(I22b4c).
Версия 1.5.0-beta01
24 мая 2023 г.
Выход androidx.compose.ui:ui-*:1.5.0-beta01. Версия 1.5.0-beta01 содержит следующие коммиты:
Изменения в API
- Удалены выделения в перекомпоновке, цветовых анимациях и
AndroidComposeView(Ib2bfa) - Добавлена вспомогательная функция
CacheDrawModifierNode(), позволяющая делегировать права (Icf8f9). - Добавлено свойство
isLookingAhead, доступное изMeasureScope, чтобы отслеживать результаты предварительного просмотра и при необходимости влиять на основной проход. (Ibf4c3) - Новое семантическое свойство
traversalIndex– число с плавающей запятой, которое используется для изменения порядка узлов при обходеTalkBack(узлы с меньшими значениями идут раньше). (I9a81b, b/186443263) - Переименование свойства "Семантика"
isContainerвisTraversalGroup(I121f6) - У пользователя
ColorProducerтеперьoperator fun invokeвместоproduce(I4a9a2) - Добавлен API преобразования
Path, позволяющий применять к объектам пути преобразования перевода, масштабирования и поворота. (I23434, b/233772232) - Метод
ColorProducerназываетсяproduce. (I78bde) - Переименовать
toFrameworkColorSpaceвtoAndroidColorSpace(I4f547) - Переименуйте
ColorLambdaвColorProducer. (I73b1a) - Добавлены API для преобразования типов цветового пространства Android и Compose. (Ie7db4, b/279979665)
- В параметр
BasicTextдобавлен цвет, чтобы можно было эффективно анимировать или задавать цвет текста. (Iffd88, b/246961787) - Название "
TextRange.constrain" изменено на "TextRange.coerceIn". (I31be2) - Добавлен оптимизированный параметр
TextStyle.merge(...)с полным списком параметров. (Iad234, b/246961787) - Стабилизированы многие текстовые API, в том числе
Brush,DrawStyle,TextMotion,DrawScope.drawText,Paragraph.paint(Brush),MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPaddingснова поддерживается. Мы планировали удалить это поле, но отзывы показали, что разработчикам нужен этот параметр. Поэтому мы убрали пометку о прекращении поддержки поля (I98e96, b/277703184).- Добавлен общедоступный метод
TextRange.constrain. (I97912) UrlAnnotationвAnnotatedStringтеперь можно открывать с помощью сервисов специальных возможностей, напримерTalkBack. (If4d82, b/253292081)- Добавлено семантическое действие
InsertTextAtCursorдля текстовых полей. (I11ed5) - Конструктор
LineHeightStyle.Alignment(topRatio)переведен в стабильную версию API. (I79c32, b/261565383) TextMeasurerи связанные с ним API больше не являются экспериментальными. (I74647, b/261581753)- Добавлено семантическое действие
PerformImeActionдля вызова действия IME в узлах текстового редактора. (Ic606f, b/269633506) PlatformTextInputAPI больше не являются экспериментальными для Android. (I668eb)- Название параметра value для
Enum.valueOfизменено (Ia9b89) - больше исключений, вызванных методом enum valueOf (I818fe)
- Добавлен новый низкоуровневый API
PlatformTextInputAdapterдля создания собственных реализаций ввода текста, которые напрямую взаимодействуют с API платформы. (I58df4) - В методы
DrawScope.drawText,Paragraph.paintиMultiParagraph.paintдобавлен параметрBlendMode, чтобы поддерживать разные алгоритмы смешивания при рисовании текста на Canvas. (I57508) - Переименуйте
Font.MaximumAsyncTimeoutвFont.MaximumAsyncTimeoutMillis. Только переименование. (I07af5) - Обновлены значения DPI для справочных устройств
@Preview(Id6151, b/254528382) - Добавьте параметры
brushиalphaвBasicText, чтобы эффективно анимировать или задавать кисть для текста. - Определите типы лямбда-функций без упаковки для Float, Double, Long, Int, Short в :ui:ui-unit (I6f18d, b/246961787).
Исправление ошибок
- Удалены несколько назначений при отслеживании скорости указателя (I26bae).
- Уменьшено количество выделяемых ресурсов при управлении раскладкой и вводом с помощью указателя (I5333a).
- Оптимизация использования памяти Vector и отрисовки первых кадров (I2f3c6)
- Удалены выделения при рисовании линий и точек с помощью Canvas (I9f535).
- Добавлены документы для
AndroidFont.fontVariationSettings(I7d9e2)
Внешний вклад
- Улучшена производительность и уменьшено количество выделений в API Vector (I906cb).
Версия 1.5.0-alpha04
10 мая 2023 г.
Выход androidx.compose.ui:ui-*:1.5.0-alpha04. Версия 1.5.0-alpha04 содержит следующие коммиты:
Новые функции
Modifier.NodeУлучшения делегирования Добавлена возможность делегировать задачи другим экземплярамModifier.NodeизDelegatingNode. Это можно сделать с помощью APIdelegateиundelegate. Раньше каждый API из делегирующего узла нужно было делегировать явно делегированному узлу. После этого изменения интерфейсы узлов будут делегироваться неявно, если толькоDelegatingNodeне переопределяет их явным образом. (67352bc)
Изменения в API
- Представляем
NestedScrollModifierNode–NestedScroll Modifier.Node, которому можно делегировать аутентификацию. (I69513) - В компонуемый элемент
AndroidViewBindingдобавлены параметрыonResetиonRelease, которые дублируют параметры компонуемого элементаAndroidViewи позволяют повторно использовать представление с помощьюViewBinding. (I00b1e, b/276802519) - Обновленный API Compose Path поддерживает операции перемотки назад, что позволяет часто манипулировать путями и быстрее их повторно использовать. (I7b797)
- Добавлен оптимизированный параметр
TextStyle.merge(...)с полным списком параметров. (Iad234, b/246961787) - Стабилизированы многие текстовые API, в том числе
Brush,DrawStyle,TextMotion,DrawScope.drawText,Paragraph.paint(Brush),MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPaddingснова поддерживается. Мы планировали удалить это поле, но отзывы показали, что разработчикам нужен этот параметр. Поэтому мы убрали пометку о прекращении поддержки поля (I98e96, b/277703184).
Исправление ошибок
- Исправлена регрессия, из-за которой клавиатура не показывалась для текстовых полей в диалоговых окнах, не созданных с помощью функции
Dialog. (I82551, b/262140644)
Версия 1.5.0-alpha03
19 апреля 2023 г.
Выход androidx.compose.ui:ui-*:1.5.0-alpha03. Версия 1.5.0-alpha03 содержит следующие коммиты:
Новые функции
- Новое поведение по умолчанию для
SubcomposeLayoutвLookaheadScope:SubcomposeLayouts, у которых нет условных слотов (например,TabRow,Scaffold,BoxWithConstraintsи т.д.), теперь хорошо работают с анимацией с предпросмотром.
Изменения в API
- Новое значение по умолчанию
intermediateMeasurePolicy, которое повторно использует правила для показателей из предварительного просмотра, позволяет подтипамSubcomposeLayoutбез условных слотов, таким какScaffold,TabRowиBoxWithConstraints, работать с предварительным просмотром по умолчанию. (Id84c8) - Теперь при получении уведомления
ON_STOPрекомпоновщик, созданный для окна Android, будет блокировать только звонки на номерwithFrameNanos, а не все композиции. Это означает, что окна, связанные с остановленными действиями, будут продолжать перекомпоноваться при изменении данных, но анимации или другие вызывающие функцииwithFrameNanosбудут блокироваться. (Id9e7f, b/240975572) - Изменения
motionEventSpyв стабильной версии. (Ic5ec4, b/261560988) - Добавлен общедоступный метод
TextRange.constrain. (I97912) PlatformTextStyle.includeFontPaddingбольше не считается устаревшим, чтобы разработчики могли использовать этот API совместимости для переключения и тестирования параметраincludeFontPaddingсо значением false. (I98e96, b/277703184)
Версия 1.5.0-alpha02
5 апреля 2023 г.
Выход androidx.compose.ui:ui-*:1.5.0-alpha02. Версия 1.5.0-alpha02 содержит следующие коммиты:
Изменения в API
- Новый API
SubcomposeLayout, который принимает дополнительное промежуточное правило для обработки логики измерения/макета во время анимации на основе предварительного просмотра. (I017d3) - Теперь PointerInput инициализируется лениво и использует Modifier.Node для повышения производительности (подробнее о небольшом изменении поведения). (15dab9)
- Экспериментальные API стали стабильными и теперь поддерживают ключевые события. (I9c7d8, b/261566839, b/261567368)
- В
PointerInputChangeэкспериментальные API стали стабильными. (I1b543, b/261560988, b/261565762, b/261565749) - Добавляет способ инициализации
SuspendingPointerInputModifierNodeдля более сложных реализацийModifier.Node. (Ic4933) UrlAnnotationвAnnotatedStringтеперь можно открывать с помощью сервисов специальных возможностей, напримерTalkBack. (If4d82, b/253292081)- Добавлен API для перехвата аппаратных клавиш до того, как они будут отправлены на экранную клавиатуру (I4f4c6, b/186800395).
- Добавлено семантическое действие
InsertTextAtCursorдля текстовых полей. (I11ed5) - Теперь текстовые действия (например,
performTextInput) будут запрашивать фокус напрямую, используя семантическое действие, а не нажимая на поле. (I6ed05)
Исправление ошибок
- Теперь для действий, связанных с тестированием текста, необходимо включить текстовые поля. (Iab328)
Версия 1.5.0-alpha01
22 марта 2023 г.
Выход androidx.compose.ui:ui-*:1.5.0-alpha01. Версия 1.5.0-alpha01 содержит следующие коммиты:
Изменения в API
- Теперь для Modifier.intermediateLayout не требуется явный LookaheadScope. Блок measure в intermediateLayout имеет IntermediateMeasureScope в качестве получателя, который предоставляет удобные CoroutineScope, LookaheadScope и MeasureScope.(Ibe2e5)
- Класс LookaheadLayout заменен классом LookaheadScope, который больше не является макетом. Это позволяет дочернему контенту в LookaheadScope напрямую управляться родительским MeasurePolicy. (Ibe2e5)
- Добавлен параметр
Modifier.Node#coroutineScope, позволяющий Modifier.Nodes запускать сопрограммы. (I76ef9) - Разрешите Modifier.Nodes читать CompositionLocals, реализовав интерфейс CompositionLocalConsumerModifierNode. (Ib44df)
- Передача класса @Deprecated свойству. (I882d1)
Версия 1.4
Версия 1.4.3
3 мая 2023 г.
Выход androidx.compose.ui:ui-*:1.4.3. Версия 1.4.3 содержит следующие коммиты:
Исправление ошибок
- Устранена проблема, из-за которой символ
AndroidViewмог отображаться некорректно при использовании с определенными модификаторами. (I4dc77, b/274797771) - Исправлена ошибка в функции "Поиск фокуса в 2D", которая влияла на меню
DropDown(b/276811828). - Исправлена ошибка в настраиваемых свойствах входа и выхода из фокуса, из-за которой блок входа или выхода выполнялся только при первом вызове лямбда-функции (b/277234245).
- Устранена регрессия в системе фокусировки, из-за которой возникал сбой при чтении
focusProperties. (b/271324781, b/274897776)
Версия 1.4.2
19 апреля 2023 г.
Выход androidx.compose.ui:ui-*:1.4.2. Версия 1.4.2 содержит следующие коммиты:
Исправление ошибок
- Исправлена ошибка, из-за которой
AndroidViewнеправильно использовал модификаторы, что могло приводить к неожиданному поведению и сбоям. (Ib67ee, b/275919849) - Исправлена регрессия, из-за которой клавиатура не показывалась для текстовых полей в диалоговых окнах, не созданных с помощью функции
Dialog(I82551, b/262140644).
Версия 1.4.1
5 апреля 2023 г.
Выход androidx.compose.ui:ui-*:1.4.1. Версия 1.4.1 содержит следующие коммиты:
Исправление ошибок
- Исправлена проблема, из-за которой
ParentDataModifierне влиял наAndroidView(b/274797771).
Версия 1.4.0
22 марта 2023 г.
Выход androidx.compose.ui:ui-*:1.4.0. Версия 1.4.0 содержит следующие коммиты:
Важные изменения с версии 1.3.0
- Добавлен новый API
PinnableContainer, который позволяет закреплять элементы ленивого списка, чтобы они не удалялись при прокрутке за пределы экрана. Например,Modifier.focusable()использует этот механизм, чтобы закрепить выбранный элемент. (Ib8881, b/259274257, b/195049010) - Система фокусировки переписана с использованием новых экспериментальных
Modifier.NodeAPI. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Добавлено свойство семантики
IsContainerна поверхностях. Это свойство будет использоваться в дальнейшем изменении, которое определяет порядок перехода на основе семантического значения элементов, таких как поверхности. (I63379) - Добавлена новая роль для специальных возможностей
DropdownList. Это можно использовать, чтобы воспроизвести поведениеTalkBackпри фокусировке наandroid.widget.Spinner. (I177e5, b/236159001) - Теперь вы можете использовать
PlatformTextStyle(emojiSupportMatch), чтобы отключить обработку эмодзи для отдельного абзаца. (Ia7100, b/139326806) - Теперь при выполнении фреймов для перехода в состояние бездействия (например, с помощью
waitForIdle) тесты интерфейса Compose для Android будут выполнять проходы макета для каждого фрейма. Это может повлиять на тесты, которые проверяют отдельные фреймы анимации макета. (I8ea08, b/222093277) - Добавлен экспериментальный тег
TextMotionв тегTextStyle, чтобы определить, должен ли текст бытьStatic(default)или анимированным. ИспользуйтеTextMotion.Animated, если текст будет масштабироваться, переводиться или поворачиваться с помощью анимации. (I24dd7)
Версия 1.4.0-rc01
8 марта 2023 г.
Выход androidx.compose.ui:ui-*:1.4.0-rc01. Версия 1.4.0-rc01 содержит следующие коммиты.
Изменения в API
- Добавлена перегрузка composable-функции
AndroidView, которая принимает параметрonReset. Это позволяет повторно использовать экземпляры View, когда их узел в композиции удаляется и используется совместимым образом. Это особенно полезно дляLazyRowsиLazyColumnsпредставлений. (I3f10d, b/230099236) - Добавлен новый низкоуровневый API
PlatformTextInputAdapterдля создания пользовательских реализаций ввода текста, которые напрямую взаимодействуют с API платформы. (I58df4)
Исправление ошибок
- Действие
SetTextсемантикиBasicTextFieldтеперь будет обновлять текстовый буфер, используя тот же путь кода, что и обновления IME и функции тестирования (например,performTextReplacement). - Функции тестирования текста
performTextClearance,performTextReplacementиperformTextSelectionтеперь используютSemanticsActions. (I0807d, b/269633168, b/269624358)
Версия 1.4.0-beta02
22 февраля 2023 г.
Выход androidx.compose.ui:ui-*:1.4.0-beta02. Версия 1.4.0-beta02 содержит следующие коммиты:
Изменения в API
- Удален API
modifierElementOf(). Вместо этого используйтеModifierNodeElement. (I2256b) - Добавлен новый обратный вызов
Modifier.Node.onReset(), позволяющий сбросить некоторые локальные состояния, чтобы правильно обрабатывать случаи, когдаLayoutиспользуется повторно (например, как элементLazyColumn). Исправлена ошибкаFocusTargetModifierNode, из-за которой не сбрасывалось состояние фокуса. (I65495, b/265201972) - В методы
DrawScope.drawText,Paragraph.paintиMultiParagraph.paintдобавлен параметрBlendMode, чтобы поддерживать разные алгоритмы смешивания при рисовании текста на Canvas. (I57508)
Исправление ошибок
- Улучшен алгоритм порядка фокусировки специальных возможностей. Например, верхняя и нижняя панели чаще читаются первыми и последними соответственно (74e9c5).
Версия 1.4.0-beta01
8 февраля 2023 г.
Выход androidx.compose.ui:ui-*:1.4.0-beta01. Версия 1.4.0-beta01 содержит следующие коммиты:
Изменения в API
PinnableContainer.PinnedHandle.unpin()переименован вrelease()(I4667a)- Добавлены экспериментальные API
waitUntilNodeCount,waitUntilAtLeastOneExists,waitUntilExactlyOneExistsиwaitUntilDoesNotExistвComposeTestRule, расширяющие APIwaitUntil, чтобы принимать любой сопоставитель и любое количество узлов. Дополнительную информацию можно найти в документации поComposeTestRule. (Ifa1b9, b/226934294) - Переименуйте
Font.MaximumAsyncTimeoutвFont.MaximumAsyncTimeoutMillis. (I07af5) - Удален раздел
GoogleFont.Provider.AllFontsListUri. Вместо него в документе ktdoc добавлена ссылка. (I16f29)
Исправление ошибок
- Добавлены документы для
AndroidFont.fontVariationSettings(I7d9e2)
Версия 1.4.0-alpha05
25 января 2023 г.
Выход androidx.compose.ui:ui-*:1.4.0-alpha05. Версия 1.4.0-alpha05 содержит следующие коммиты.
Изменения в API
- Добавлены новые экспериментальные перегрузки для функции
runComposeUiTestи функцийcreate*ComposeRule, которые принимают параметрыCoroutineContext. Контекст будет использоваться для создания теста и любых вызововLaunchedEffectиrememberCoroutineScope()в тесте. (I10614, b/265177763) - Добавлен новый API для отслеживания одномерной скорости (If5a82).
FocusRequesterтеперь отмечено как@Stable. (I580ee)- Удалите экспериментальную аннотацию из конструктора
DialogProperties, который принимает параметрusePlatformDefaultWidth. (Ic4048) - Добавлена функция для вычисления положения и касательной на заданном расстоянии от начала пути с помощью
PathMeasure.getPosition()иPathMeasure.getTangent()(I3b47c). - Удален случайно открытый общедоступный метод установки значения для
PlatformParagraphStyle. (I07f47) - Дополнительные типы и допустимость значения NULL для встроенных и устаревших скрытых функций (I24f91)
- Добавьте
AnnotatedString.hasStringAnnotationsв запрос, чтобы найти аннотации с нулевым распределением. (I94dfe, b/246960758) - Добавлена новая перегрузка для функции
TextMeasurer.measure, которая принимаетStringв виде текста. (I47b2d, b/242705342) - API
LineBreakиHyphensв TextStyle переведены в стабильную версию. (Ic1e1d)
Внешний вклад
- Методы
notifyFocusedRectвTextInputSessionиTextInputServiceснова не устарели. (I23a04, b/262648050)
Версия 1.4.0-alpha04
11 января 2023 г.
Выход androidx.compose.ui:ui-*:1.4.0-alpha04. Версия 1.4.0-alpha04 содержит следующие коммиты:
Новые функции
- Добавлен новый API
PinnableContainer, который позволяет закреплять элементы ленивого списка, чтобы они не удалялись при прокрутке за пределы экрана. Например,Modifier.focusable()использует этот механизм, чтобы закрепить выбранный элемент. (Ib8881, b/259274257, b/195049010) - Система фокусировки переписана с использованием новых экспериментальных
Modifier.NodeAPI. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Добавлено свойство семантики
IsContainerна поверхностях. Это свойство будет использоваться в дальнейшем изменении, которое определяет порядок перехода на основе семантического значения элементов, таких как поверхности. (I63379) - Добавлена новая роль для специальных возможностей
DropdownList. Это можно использовать для имитации поведенияTalkBack'sпри фокусировке наandroid.widget.Spinner. (I177e5, b/236159001) - Теперь вы можете использовать
PlatformTextStyle(emojiSupportMatch), чтобы отключить обработку эмодзи для отдельного абзаца. (Ia7100, b/139326806) - Теперь при выполнении фреймов для перехода в состояние бездействия (например, с помощью
waitForIdle) тесты интерфейса Compose для Android будут выполнять проходы макета для каждого фрейма. Это может повлиять на тесты, которые проверяют отдельные фреймы анимации макета. (I8ea08, b/222093277) - Добавлен экспериментальный тег
TextMotionв тегTextStyle, чтобы определить, должен ли текст бытьStatic(default)или анимированным. ИспользуйтеTextMotion.Animated, если текст будет масштабироваться, переводиться или поворачиваться с помощью анимации. (I24dd7)
Изменения в API
- Аргумент
maxSize: IntSizeв функцииdrawTextзаменен наsize: Size, чтобы соответствовать другим функциямDrawScope. По умолчанию для параметраsizeзадано значениеSize.Unspecified, которое не должно менять поведение по умолчанию. (Icd27d) - Удален устаревший экспериментальный конструктор шрифтов. (I8a724, b/261435386)
- В класс данных ui tooling
Groupдобавлено полеisInline, которое указывает, предназначена ли группа для вызова встроенной composable-функции. ЕслиisInline–true, то вызов относится к встроенной composable-функции. Однако значение может быть ложным для вызовов встроенных функций, которые относятся к модулям, скомпилированным с помощью плагина компилятора Compose, не генерирующего информацию о встроенных функциях. (Idb846) - Несколько экспериментальных API переведены в стабильную версию.
- Rotary Scroll Event API теперь стабилен (I42ad3, b/261561229)
FontVariationAPI теперь стабилен (I8779f, b/241016309)- Все конструкторы
Font()теперь относятся к стабильному API (I5948b, b/261435386). DeviceFontFamilyNameтеперь стабильная версия (I8b640, b/261435386)- Конструктор
AndroidFontсvariationSettingsтеперь является стабильным API и может использоваться для создания новых типов дескрипторов шрифтов. (I5adcc, b/261565807) createFontFamilyResolverAPI теперь стабилен. Это можно использовать для перехвата необработанных исключений при асинхронной загрузке шрифтов. (Ibb481, b/261435386)Font.loadingStrategyAPI теперь стабилен. (I5937c, b/261435386)GoogleFontAPI теперь стабилен. (Ic90b0, b/261435386)TextUnit(float, TextUnitType)теперь стабильный API. (I90c84, b/261561612)pluralStringResourceтеперь стабильный API. (I09849, b/261439703)
Версия 1.4.0-alpha03
7 декабря 2022 г.
Выход androidx.compose.ui:ui-*:1.4.0-alpha03. Версия 1.4.0-alpha03 содержит следующие коммиты:
Изменения в API
- Удаление
ExperimentalComposeUiApiизPointerIcon(I23af8) - Добавлены действия для специальных возможностей на странице:
PageUp,PageDown,PageLeft,PageRight. Обратите внимание, что они доступны только в API 29. (Ida4ab) - Изменен параметр
rememberNestedScrollConnection: теперь вместо корневого представления используется представление хоста. (Ia5200) - Добавлен API модификатора для запроса информации о прокрутке предков. (I2ba9d, b/203141462)
- Используется в теге
Clickable, чтобы правильно задерживать нажатия, когда жесты могут стать событиями прокрутки. - Исправлена ошибка, из-за которой
Clickablesнеправильно задерживал пульсации при использовании внутриScrollable ViewGroup. - Внесены изменения в работу выдвижных панелей и таблиц, чтобы правильно обрабатывать нажатия, когда жесты могут быть преобразованы в события прокрутки.
- Название
CompositingStrategy.Alwaysизменено наOffscreen, чтобы указать, чтоgraphicsLayerвсегда будет отрисовываться в промежуточном буфере (I47dc1). - Перегрузка макета при наличии нескольких слотов для контента теперь стабильна (I10566, b/248294649)
- Добавлены экспериментальные новые API
PerfettoTrace.record {}иPerfettoTraceRuleдля сбора трассировок Perfetto (также известных как системные трассировки) в рамках теста, чтобы изучить поведение и производительность теста. (I3ba16) - В тестах интерфейса, использующих правило Compose, продолжения, возобновленные во время обратных вызовов
withFrameNanos, не будут отправлены, пока не будут выполнены все обратные вызовы фрейма. Это соответствует поведению при обычном создании письма. Однако тесты, которые полагаются на старое поведение, могут завершиться неудачно. Это должно повлиять только на код, который напрямую вызываетwithFrameNanosилиwithFrameMillis, и на логику вне обратного вызова, переданного этим функциям, которую, возможно, потребуется перенести внутрь обратных вызовов. Примеры изменений в тесте анимации можно найти в этом списке изменений. - В конструктор
TestMonotonicFrameClockи фабричную функцию добавили необязательный параметрonPerformTraversals: (Long) -> Unit, чтобы можно было выполнять код после обратных вызововwithFrameNanos, но до возобновления работы сопрограмм вызывающих функций. (Idb413, b/254115946, b/222093277, b/255802670) - Добавлена библиотека EmojiCompat в Compose (Ibf6f9, b/139326806).
- В
@Previewдобавлен новый параметр обоев для поддержки динамических цветов (I9f512).
Исправление ошибок
- Уведомления о применении моментальных снимков теперь отправляются после того, как
Recomposerзавершит применение изменений. (Iad6c0, b/222093277) - В
captureToImageмы добавили возможность делать скриншоты нескольких окон. Это полезно для тестов скриншотов, в которых используются всплывающие окна. (I169c5)
Обновления зависимостей
- Compose UI и Compose Material теперь зависят от Lifecycle 2.5.1. (I05ab0, b/258038814)
Версия 1.4.0-alpha02
9 ноября 2022 г.
Выход androidx.compose.ui:ui-*:1.4.0-alpha02. Версия 1.4.0-alpha02 содержит следующие коммиты:
Изменения в API
- Обновлен параметр
GraphicsLayerScope, чтобы показывать текущий размерgraphicsLayer. Это полезно для вычисления преобразованийgraphicsLayerкак функции размера Composable. (If8c43,b/181387080) - Добавлен элемент
CompositingStrategy, который определяет, когда использовать композиционный слой вне экрана для отрисовки контентаgraphicsLayer. При выборе варианта "Авто" сохраняется поведение по умолчанию, при котором используется слой, если применяется альфа-канал, илиRenderEffect/Overscroll. При значении "Всегда" всегда будет использоваться буфер за экраном, а при значении "ModulateAlpha" буфер за экраном использоваться не будет, вместо этого будут модулироваться все записанные инструкции по рисованию в пределахgraphicsLayer. При использованииModulateAlphaпо-прежнему будет задействован буфер за пределами экрана для случаев использованияRenderEffect/Overscroll(I25e82, b/256382834). invalidateSubtree()был добавлен вModifier.Node, чтобы можно было аннулировать всю иерархию для макета и рисования. (I4bd90)- Перенесите
rememberNestedScrollInteropConnectionв стабильную версию. Добавлена возможность передавать корневое представление вrememberNestedScrollInteropConnection. Это позволяет настраиваемому представлению лучше реагировать на ограничения прокрутки, особенно в нестандартных представлениях (например,ModalBottomSheetDialog). (I9e107) - Добавлен интерфейс
ObserverNode, который можно использовать в реализацияхModifier.Node, чтобы получать уведомления об изменении ранее прочитанного значения (I5728b, b/247716483). - В класс
Paintдобавлен новый конструктор, принимающий объектandroid.graphics.Paint. Также добавлена функция расширенияtoComposePaint(), которая преобразует существующий нативный объект Paint в Compose Paint. (Ica91b) - Добавьте новые
FontFamily.Resolver.resolveAsTypefaceдля использования на устройствах Android. (I8950b) - Добавлен параметр
ToolingState, позволяющий инструментам изменять внутреннее состояние объекта Composable (Ie6614). - Рефакторинг инструментов для улучшения поддержки новых добавленных анимаций (I8677b)
- Добавлен параметр
minLinesв компоненты Text,TextFieldиOutlinedTextFieldиз библиотек material и material3, который позволяет задать минимальную высоту компонента в количестве строк (I4af1d).
Версия 1.4.0-alpha01
24 октября 2022 г.
Выход androidx.compose.ui:ui-*:1.4.0-alpha01. Версия 1.4.0-alpha01 содержит следующие коммиты:
Изменения в API
- Добавлен новый метод
awaitEachGesture()для детекторов жестов. Он работает так же, какforEachGesture(), но цикл по жестам выполняется полностью в рамкахAwaitPointerEventScope, поэтому события не могут быть потеряны между итерациями. forEachGesture()больше не используется, так как при его работе между жестами могут теряться события. Вместо него используетсяawaitEachGesture(). (Iffc3f, b/251260206)- Прекращение поддержки повторного использования объектов специальных возможностей в androidx Мы обнаружили, что даже в самых старых поддерживаемых версиях изменения производительности незначительны. (I0a961)
- Добавлен атрибут
DrawStyleв качестве экспериментального дляTextStyleиSpanStyle, чтобы можно было рисовать текст с контуром. (If24b8, b/155421273) AnnotatedString.Builderтеперь используетkotlin.text.Appendable. (I1a061, b/231030444)- Теперь у
AnnotatedString.Builderесть методappend(AnnotatedString, start: Int, end: Int), позволяющий добавить подстрокуAnnotatedStringи пересекающиеся стили. - В функции рисования
ParagraphиMultiParagraphдобавлен параметрDrawStyle, позволяющий рисовать текст с контуром. (Ic8102, b/155421273)
Внешний вклад
- Благодарность за
vighneshза добавление устройств TV в предварительные версии (Ie15cd)
Версия 1.3
Версия 1.3.3
11 января 2023 г.
Выход androidx.compose.ui:ui-*:1.3.3. Версия 1.3.3 содержит следующие коммиты:
Исправление ошибок
- Исправлена ошибка, из-за которой иногда происходил сбой в Android 9, когда Activity сохранял состояние Compose View. (I0b755, b/260322832)
Версия 1.3.2
7 декабря 2022 г.
Выход androidx.compose.ui:ui-*:1.3.2. Версия 1.3.2 содержит следующие коммиты:
Исправление ошибок
- Обновлено до версии Profobuf 3.21.8, в которой устранено оповещение системы безопасности в
protobuf-javalite:3.19.4(CVE-2022-3171) (b/255545055).
Версия 1.3.1
9 ноября 2022 г.
Выход androidx.compose.ui:ui-*:1.3.1. Версия 1.3.1 содержит следующие коммиты:
Версия 1.3.0
24 октября 2022 г.
Выход androidx.compose.ui:ui-*:1.3.0. Версия 1.3.0 содержит следующие коммиты:
Важные изменения с версии 1.2.0
- Новый набор экспериментальных API
LookaheadLayout, позволяющий создавать анимацию, которая раньше была невозможна. - Новый экспериментальный набор API
Modifier.Node(более производительная альтернативаModifier.composed) - Улучшена поддержка отступов окон.
- Поддержка фокуса для D-Pad и аппаратной клавиатуры в LazyLists.
- Максимальная высота элементов в диалоговых окнах и всплывающих окнах уменьшена до 8 dp (изменение поведения, которое может повлиять на некоторые системы дизайна, – обоснование в примечаниях к выпуску beta01).
- Множество незначительных улучшений API, не нарушающих его работу
- Исправлены ошибки, повышена производительность.
Версия 1.3.0-rc01
5 октября 2022 г.
Выход androidx.compose.ui:ui-*:1.3.0-rc01. Версия 1.3.0-rc01 содержит следующие коммиты:
Изменения в API
- Добавлен новый экспериментальный API Hyphens для автоматической расстановки переносов в тексте (Iaa869).
Исправление ошибок
- Шрифты
DeviceFontFamilyNameне будут настраивать параметры вариацийwghtиitalпо умолчанию, а будут использовать настройки платформы для загруженныхTypeface. (Ia7a6d, b/246989332) - Устранена утечка памяти
LazyColumn. ФункцияonModifierLocalsUpdatedне вызывалась со значением по умолчанию при повторном использовании модификаторов (b/230168389).
Версия 1.3.0-beta03
21 сентября 2022 г.
Выход androidx.compose.ui:ui-*:1.3.0-beta03. Версия 1.3.0-beta03 содержит следующие коммиты:
Изменения в API
- Добавлены параметры для настройки переноса строк в тексте. (I86907)
- Аргумент
size:IntSizeзаменен наconstraints: Constraintsв методеTextMeasurer.measureдля поддержки ограничений минимальной ширины. (I37530, b/242707525)
Исправление ошибок
- API
BackHandlerиз AndroidX Activity теперь работает в composable-функцииDialog. (I35342)
Версия 1.3.0-beta02
7 сентября 2022 г.
Выход androidx.compose.ui:ui-*:1.3.0-beta02. Версия 1.3.0-beta02 содержит следующие коммиты:
Изменения в API
- Добавлен экспериментальный перегруз для макета, который принимает список из нескольких лямбда-функций с композиционным контентом. Это позволяет по-разному обрабатывать измеряемые объекты, помещенные в разные лямбда-функции с контентом (Ic1b4e).
Изменения в экспериментальных API фокуса
- Функции
FocusDirection.InиFocusDirection.Outустарели и заменены функциямиFocusDirection.EnterиFocusDirection.Exit. (Ia4262, b/183746982) - Добавлены два новых свойства фокуса: enter и exit, позволяющие задать специальное поведение для
FocusManager.moveFocus(Enter)иFocusManager.moveFocus(Exit). (I5f3f9, b/183746982) - Теперь вы можете использовать клавишу
FocusRequester.Cancel, чтобы отменить перемещение фокуса.FocusRequester.Cancelможно использовать в любом из следующих свойств фокуса: up, down, left, right, next, previous, start, end, enter и exit. (Ib300f)
Версия 1.3.0-beta01
24 августа 2022 г.
Выход androidx.compose.ui:ui-*:1.3.0-beta01. Версия 1.3.0-beta01 содержит следующие коммиты:
Рефакторинг узла модификатора
Слой, который обрабатывает экземпляры Modifier/Modifier.Element и координирует их поведение на LayoutNodes, был значительно переработан. Это рефакторинг, который не повлиял на общедоступный API ни одного из многочисленных модификаторов в Compose и может рассматриваться как изменение только реализации. Тем не менее это важное изменение по нескольким причинам. (Ie4313)
Сводка изменений
Добавленные экспериментальные API Modifier.Node предоставляют абстракцию, которая позволяет сохранять состояние в экземпляре, который будет сохранен с жизненным циклом узла макета и будет выделен для каждого узла макета и каждого использования соответствующего Modifier.Element, который его создал.
В общем, эта абстракция предоставляет альтернативный механизм для создания модификаторов с сохранением состояния без использования API Modifier.composed.
Риск
Это изменение строго совместимо с предыдущими версиями и, насколько это практически возможно и разумно, обратно совместимо с точки зрения наблюдаемого поведения. При этом есть несколько подсистем, которые не были затронуты рефакторингом, и вероятно, что поведение изменилось таким образом, что это не было обнаружено и исправлено в ходе тестирования.
Рекомендуем с осторожностью переходить на эту версию. Если вы считаете, что это изменение повлияло на вас, сообщите нам об этом.
Экспериментальные API
Добавлены различные экспериментальные API, связанные с новым понятием "узла модификатора". Объекты Modifier.Node создаются в результате
fun modifierElementOf(…): Modifierabstract class ModifierNodeElementabstract class Modifier.Nodeabstract class DelegatingNodeinterface LayoutModifierNodeinterface DrawModifierNodeinterface SemanticsNodeinterface PointerInputNodeinterface ModifierLocalNodeinterface ParentDataModifierNodeinterface LayoutAwareModifierNodeinterface GlobalPositionAwareModifierNodeinterface IntermediateLayoutModifierNode
Критическое изменение в поведении
Максимальная поддерживаемая высота в диалоговых окнах и всплывающих окнах уменьшена до 8 dp.
Максимально поддерживаемая высота для диалоговых окон и всплывающих окон Compose была уменьшена с 30 до 8 dp. Это изменение затрагивает как диалоговые окна и всплывающие окна Material Design, так и пользовательские диалоговые окна и всплывающие окна. Это изменение необходимо, чтобы устранить ошибку специальных возможностей в версиях Android ниже S и обеспечить взаимодействие сервисов специальных возможностей в этих окнах с контентом диалогового окна или всплывающего окна.
Это изменение повлияет на вас, только если вы создаете собственное диалоговое окно или всплывающее окно с высотой, превышающей 8 dp. Попробуйте уменьшить высоту диалогового окна или всплывающего окна. Если вам нужно отказаться от этого нового поведения, создайте собственное диалоговое окно или всплывающее окно с нужным уровнем доступа. Мы не рекомендуем этого делать, так как это может негативно повлиять на доступность. Разработчик должен убедиться, что нижняя часть диалогового окна или всплывающего окна доступна для взаимодействия и чтения с помощью специальных возможностей.
Изменения в API
- Исправлена ошибка, из-за которой
painterResourceне обновлялся при изменении конфигурации (I58e73, b/228862715). rememberTextMeasurerбольше не принимает параметрыFontFamily.Resolver,DensityиLayoutDirection. Чтобы задать для этих параметров специальные значения, используйте конструкторTextMeasurer. (Ia1da3)- Добавлено свойство
DialogProperties.decorFitsSystemWindows, чтобы диалоговые окна поддерживалиWindowInsets. (I57742, b/229378542) - Конструкторы шрифтов перенесены обратно в исходный файл Kotlin для сохранения совместимости с двоичными файлами. Нет изменений по сравнению с последней стабильной версией. (Ieb2f3)
- Из нескольких определений равенства удален ненужный оператор. Это не повлияет на работу. (I6c309)
FontVariation.Setting– это запечатанный интерфейс, который позволяет использовать будущие API для ограничения доступа. (I11021, b/143703328)- Свойство
CompositionGroup.findParametersдобавлено в запросSlotTree.kt. Это позволяет инструментам извлекать параметры дляCompositionGroup, не анализируя всю таблицу слотов. (I124fe)
Версия 1.3.0-alpha03
10 августа 2022 г.
Выход androidx.compose.ui:ui-*:1.3.0-alpha03. Версия 1.3.0-alpha03 содержит следующие коммиты:
Изменения в API
LayoutCoordinates.findRootCoordinates()теперь общедоступен (I7fa37, b/204723384)- Добавлен экспериментальный API для получения
LayoutCoordinatesвPlacementScope. Это позволяет разработчикам узнать, где находится текущий макет, чтобы разместить дочерние элементы относительно его позиции. (I5482b, b/238632578) - Добавлено значение
LayoutCoordinates.transformFrom, чтобы получить преобразование матрицы из одного значенияLayoutCoordinatesв другое. (Ic5ab1, b/238632578) - Прекращена поддержка
SemanticsModifier.id, а идентификатор семантики перемещен вLayoutInfo.semanticsId. (Iac808, b/203559524) - Шрифты ресурсов теперь поддерживают настройку параметров вариаций шрифтов (API 26 и выше). (I900dd, b/143703328)
- Поддержка вариативных шрифтов в
DeviceFontFamilyNameFont(Ic1279, b/143703328) - Конструкторы шрифтов теперь принимают список
FontVariation.Settingдля настройки переменных шрифтов на устройствах с ОС Android 10 и более поздних версий. (I11a9d, b/143703328) - Добавлен API
FontVariationдля определения и использования переменных шрифтов. (I3c40c, b/143703328) - Конструктор
LineHeightStyle.Alignmentтеперь общедоступен (экспериментальная функция) (I4bbbe, b/235876330) - Теперь в разделе "Абзац" есть поля "Ожидаемое значение" и "Фактическое значение", а также определения для Android и ПК. (Id387e, b/239962983)
- Интерфейс Paragraph теперь называется запечатанным интерфейсом Paragarph. Мы не рекомендуем создавать подклассы для абзацев. Если это изменение повлияет на вас, свяжитесь с нами. (If5247, b/239962983)
- Удалены экспериментальные аннотации из
PlatformTextStyleиLineHeightStyle. (I64bef) - Прекращена поддержка функции
TextInputService.show|hideSoftwareKeyboard. Вместо него используйтеSoftwareKeyboardControllerв коде приложения иTextInputSessionв коде управления IME. (I14e4c, b/183448615) - Добавлен новый API для существующих типов анимации (I26179).
Исправление ошибок
- Добавлен значок
@RequiresPermissionк API, для которых требуется разрешениеPOST_NOTIFICATIONSв SDK 33 и более поздних версий. (Ie542e, b/238790278)
Версия 1.3.0-alpha02
27 июля 2022 г.
Выход androidx.compose.ui:ui-*:1.3.0-alpha02. Версия 1.3.0-alpha02 содержит следующие коммиты:
Изменения в API
- Добавлено новое свойство
PointerInputChange#pressureдля получения данных о давлении. (I45a5e, b/205164819) - Добавлен символ
rememberTextMeasurer, с помощью которого можно легко создавать и запоминатьTextMeasurerэкземпляры в композиции. (I8d66e) Rect,RoundRectиMutableRectтеперь поддерживают синтаксис Kotlininдля вызова функцииcontains. (Ie42b0, b/238642990)- Удалите из
KeyInjectionScopeненужные функции, поскольку их можно легко реализовать с помощью более простых частей API. Были удалены функцииpressKeys,keysDownиkeysUp. (I81d77) - Изменены названия констант и параметров в
KeyInjectionScope, чтобы добавить суффикс "Millis", если единицы измерения констант и параметров – миллисекунды. (Iabef5) - В
EditCommandдобавлен методtoStringForLog(), который помогает устранять неполадки с редактированием текста. (I53354, b/228862731) - Добавлена функция расширения
drawTextдляDrawScope, позволяющая рисовать текст с разными стилями на компонуемых элементах и модификаторах, которые работают сDrawScope, напримерCanvasиdrawBehind. (I16a62, b/190787898) - Представляем новый экспериментальный API
TextMeasurer, который позволяет вычислять макет текста, создавая результаты, идентичныеBasicText, независимо от среды выполнения Compose. (I17101) - Свойство
mapTreeдобавлено в запросSlotTree.kt. Это позволяет инструментам проверятьSlotTree, не создавая сначала копию в памяти, как это делает asTree. Для инспектора макета это означает повышение производительности примерно в 10 раз. (I5e113) - Теперь предварительный просмотр Compose хранится в двоичных выходных файлах, чтобы разработчики могли писать и повторно использовать аннотации
MultiPreviewиз библиотек. (I85699, b/233511976)
Исправление ошибок
- При добавлении событий
InputEventChangeв трекерVelocityтеперь будут учитываться не позиции, а дельты. Это позволит правильно рассчитывать скорость во всех случаях, даже если целевой элемент перемещается (Icea9d, b/216582726, b/223440806, b/227709803). - Исправлена ошибка NPE, вызванная
AnnotatedString.toUpperCaseпри наличии аннотаций. (I0aca2, b/210899140)
Версия 1.3.0-alpha01
29 июня 2022 г.
Выход androidx.compose.ui:ui-*:1.3.0-alpha01. Версия 1.3.0-alpha01 содержит следующие коммиты:
Изменения в API
- Новый
LookaheadLayout, который поддерживает предварительный проход перед фактическим измерением/макетом. Это позволяет предварительно рассчитать макет при его изменении, а также использовать предварительно рассчитанные размеры и положение для анимации размера и положения в целевом направлении.SubcomposeLayoutsпока не поддерживаются, но будут добавлены в одном из следующих выпусков. (I477f5) - Добавьте необязательный альфа-параметр к варианту Brush (Кисть) для параметров
TextStyleиSpanStyle, чтобы изменить непрозрачность всего элементаText. (Ic2fac, b/234117635) - Добавлен тип аннотации
UrlAnnotationи связанные с ним методы для поддержки ссылокTalkBackвAnnotatedString. (I1c754, b/231495122) - Перенос функций утилиты в среду выполнения (I4f729)
Исправление ошибок
TextLayoutResult.getLineForOffsetне вызывает исключение. (Idc5d6, b/235876324)
Внешний вклад
- Добавлен новый API
WindowInfo.keyboardModifiers, позволяющий отслеживать его состояние в функциях, которые можно комбинировать, или с помощью snapshotFlow (Icdb8a).
Версия 1.2
Версия 1.2.1
10 августа 2022 г.
Выход androidx.compose.ui:ui-*:1.2.1. Версия 1.2.1 содержит следующие коммиты:
Исправление ошибок
- Исправлена ошибка указателя null в инспекторе (b/237987764).
- Исправлено исключение приведения типов классов при запоминании в инспекторе (b/235526153)
Версия 1.2.0
27 июля 2022 г.
Выход androidx.compose.ui:ui-*:1.2.0. Версия 1.2.0 содержит следующие коммиты:
Важные изменения с версии 1.1.0
Улучшения в навигации с помощью фокуса:
- Теперь можно прокручивать списки Lazy с помощью фокуса, используя новый основной API
BeyondBoundsLayout. - Новые API для настройки поведения в
FocusOrderиFocusProperties - Улучшенное взаимодействие с физической клавиатурой или пультом телевизора
- Теперь можно прокручивать списки Lazy с помощью фокуса, используя новый основной API
Новые API для:
- Вставки окон
- Основные примитивы для анимации на основе жестов, бесконечной анимации и анимации макета
- Возможности
GraphicsLayer, в том числеRenderEffect
Исправлены ошибки, повышена производительность.
Версия 1.2.0-rc03
29 июня 2022 г.
Выход androidx.compose.ui:ui-*:1.2.0-rc03. Версия 1.2.0-rc03 содержит следующие коммиты:
- Изменений по сравнению с версией 1.2.0-rc02 нет.
Версия 1.2.0-rc02
22 июня 2022 г.
Выход androidx.compose.ui:ui-*:1.2.0-rc02. Версия 1.2.0-rc02 содержит следующие коммиты:
Версия 1.2.0-rc01
15 июня 2022 г.
Выход androidx.compose.ui:ui-*:1.2.0-rc01. Версия 1.2.0-rc01 содержит следующие коммиты:
Изменения в API
- Интерфейсы в библиотеках Compose теперь создаются с помощью методов интерфейса по умолчанию из JDK8 (I5bcf1).
- В
KeyInjectionScopeдобавлены функции более высокого порядка для имитации нажатий клавиш, когда другие клавиши удерживаются или включены. К ним относятся функцииwithKeysDown,withKeysToggledи т. д. Также добавлены свойства для проверки того, нажата ли определенная клавиша-модификатор, напримерisCtrlDownдля проверки того, нажата ли клавиша Control. Документация по каждой функции приведена на страницеKeyInjectionScope. (I9f6cd, b/229831515) - В экспериментальном режиме доступен
OverscrollEffect, позволяющий создавать собственные эффекты прокрутки, а также перегрузкиModifier.scrollable, которые его принимают. - Экспериментальный пакет
LocalOverScrollConfigurationбыл перенесен изfoundation.gestureв основной пакет и переименован вLocalOverscrollConfiguration(If19fb, b/204650733). - Переименован параметр "
runComposeUiTestWithoutActivity {}" в "runEmptyComposeUiTest {}", чтобы привести его в соответствие с параметром "createEmptyComposeRule()" (I6fed7).
Версия 1.2.0-beta03
1 июня 2022 г.
Выход androidx.compose.ui:ui-*:1.2.0-beta03. Версия 1.2.0-beta03 содержит следующие коммиты:
Изменения в API
- Пользователь
pressKeyTimesдобавил в альбом "KeyInjectionScope"isCapsLockOnи друзей. Кроме того, API теперь поддерживает комбинированные шаблоны ввода с помощью мыши и клавиатуры, например нажатие кнопки мыши при удерживании клавиши Meta. (I4c8da, b/229831515) - Добавлена экспериментальная поддержка внедрения ключевых событий. Используйте
performKeyInput, чтобы отправлять ключевые события, или отправляйте их через свойствоkeyобъектаMultiModalInjectionScopeво время многомодального жеста ввода с помощьюperformMultiModalInput. Документация по API приведена на страницеKeyInjectionScope. (Ic5000, b/229831515) - Добавьте новый тег
GoogleFont.Provider.AllFontsListUriдля получения канонического интернет-источника Google Fonts, поддерживаемых Android. - Улучшены сообщения об ошибках, которые возникают, когда не удается загрузить Google Fonts в Compose. (I0416c)
Исправление ошибок
- При добавлении событий
InputEventChangeв Velocity Tracker теперь будут учитываться не позиции, а дельты. Это позволит правильно рассчитывать скорость во всех случаях, даже если целевой элемент перемещается (I51ec3, b/216582726, b/223440806, b/227709803). - Настройка
Show Layout Boundsбудет применяться к элементам сразу после того, как вы включите ее в быстрых настройках. Вам не придется выходить из приложения и снова входить в него. (I843d5, b/225937688) - Поиск строк для специальных возможностей не приводит к загрузке шрифта. Раньше при попытке загрузить шрифты для
StyleSpansпроисходили сбои, еслиFontFamily.Resolverбыл перезаписан. (I4609d) - При нажатии клавиши удаления вперед, когда курсор находится в конце текстового поля, больше не будет происходить сбой.
- Аргументы конструктора
DeleteSurroundingTextCommandиDeleteSurroundingTextInCodePointsCommandтеперь должны быть неотрицательными. (Ica8e6, b/199919707)
Версия 1.2.0-beta02
18 мая 2022 г.
Выход androidx.compose.ui:ui-*:1.2.0-beta02. Версия 1.2.0-beta02 содержит следующие коммиты:
Изменения в API
- Повторное использование функций в других типах предпросмотра (I19f39)
Исправление ошибок
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainerпереименован вDisposeOnDetachedFromWindowOrReleasedFromPool, чтобы точнее отражать, что утилизация происходит, а не просто не происходит. (If15ca)
Версия 1.2.0-beta01
11 мая 2022 г.
Выход androidx.compose.ui:ui-*:1.2.0-beta01. Версия 1.2.0-beta01 содержит следующие коммиты:
Новые функции
- Это первая бета-версия 1.2.
Изменения в API
- Добавлено экспериментальное свойство
BeyondBoundsInterval, которое можно использовать в пользовательских реализацияхLazyList, когда элементы размещаются за пределами видимой области (Ifabfb, b/184670295). - Версии
Modifier.composedс ключом теперь являются стабильными API (Ie65e4, b/229988420) - Упрощенный
rememberNestedScrollConnectionAPI для использования локальных композиций для получения информации о текущем представлении (I67ca7) - Аннотацию
@ComposableTargetи аннотации, отмеченные символом@ComposableTargetMarker, теперь можно использовать на уровне файла, добавив префикс@file. Если использовать целевую аннотацию в области действия файла, компилятор будет считать, что все функции, которые можно составить, в файле предназначены для связанного прикладного объекта. Например, при использовании@file:UiComposableобъявляется, что все функции@Composableпредназначены для приложения Compose UI. Функция, которая должна быть применена к другому приложению, должна явно указать аннотацию маркера цели для нужного приложения. (I40804) Добавлены новые экспериментальные API для тестирования, не зависящие от платформы:
interface ComposeUiTestиfun runComposeUiTest(block: ComposeUiTest.() -> Unit). Их можно использовать для запуска тестов Compose UI безTestRule. Чтобы выполнить тест безComposeTestRule, передайте тест как лямбда-функцию вrunComposeUiTestи используйте методы и элементы в области действия получателяComposeUiTest, которые совпадают с методами и элементами вComposeContentTestRule.Специальные атрибуты Android
interface AndroidComposeUiTestиfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)добавлены для предоставления доступа к основному действию, как и атрибутAndroidComposeTestRule. Вы также можете создать экземплярclass AndroidComposeUiTestEnvironmentсамостоятельно.Реализация для компьютеров –
class DesktopComposeUiTest, но в настоящее время функции запуска для компьютеров не предлагаются.Перенести тест с
ComposeTestRuleнаComposeUiTestможно следующим образом (пример для Android): От:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }Кому:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }В настоящее время
ComposeContentTestRuleиComposeTestRuleне являются расширениямиComposeUiTest, поэтому функции расширенияComposeUiTestпока нельзя вызывать в интерфейсеTestRule. КогдаComposeUiTestстанет стабильным API,ComposeContentTestRuleиComposeTestRuleбудут изменены так, чтобы они расширялиComposeUiTest. (Ib4e90)LineHeightBehaviorпереименован вLineHeightStyle.LineVerticalAlignmentпереименован вLineHeightStyle.Alignment.Блокнот "
LineHeightTrim" переименован. Новое название: "LineHeightStyle.Trim".Удалены значения конструктора по умолчанию из
LineHeightStyle(I582bf, b/181155707).Добавлены элементы
BrushвTextStyleиSpanStyle, позволяющие рисовать текст с градиентной заливкой. (I53869, b/187839528)Атрибуты
trimFirstLineTopиtrimLastLineBottomтегаLineHeightBehaviorбыли заменены одним перечислением:LineHeightTrim.LineHeightTrimимеют четыре состояния, определяемые двумя логическими значениями:FirstLineTop,LastLineBottom, "Оба" и "Нет" (Ifc6a5, b/181155707).Добавил
LineHeightBehaviorвTextStyleиParagraphStyle.LineHeightBehaviorопределяет, применяется ли высота строки к верхней части первой строки и нижней части последней строки. Также определяет выравнивание линии в пространстве, заданном параметромTextStyle(lineHeight).Например, можно получить поведение, аналогичное тому, которое задано в CSS, с помощью параметра
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).Конфигурации
trimFirstLineTopиtrimLastLineBottomработают правильно, только если для параметраincludeFontPaddingзадано значение false. (I97332, b/181155707)Функции
PlatformParagraphStyle.lerpиPlatformSpanStyle.lerpтеперь являются функциями верхнего уровня (I9a268).
Исправление ошибок
- В документации по
PointerInputChange::copyтеперь правильно указано, что это поверхностная копия. (I182f5) - Поддержка многоточия, когда высота ограничена и не позволяет отобразить все строки текста (Ie528c, b/168720622)
- Включено по умолчанию
includeFontPadding. Вы можете отключитьincludeFontPaddingс помощью атрибутаTextStyle.platformTextStyle. В ближайшем будущем мы изменим поведение по умолчанию, но пока это позволит нам лучше интегрировать улучшения высоты строки (aosp/2058653) и решить проблемы с обрезкойTextField. (I01423, b/171394808)
Внешний вклад
MouseInjectionScope.scroll(delta = someDelta)теперь инвертируется на Android при вертикальной прокрутке (если someDelta положительное, прокрутка будет вниз) (Ifb697, b/224992993)
Версия 1.2.0-alpha08
20 апреля 2022 г.
Выход androidx.compose.ui:ui-*:1.2.0-alpha08. Версия 1.2.0-alpha08 содержит следующие коммиты:
Изменения в API
- Функции
pluralStringResourceбыли отмечены как экспериментальные, чтобы в будущем их можно было улучшить и добавить поддержку других языков. (If24e4) - Теперь параметры Paragraph и MultiParagraph принимают параметр Constraints. Передача значения
Constraints.maxHeightв настоящее время не имеет эффекта, но в будущем позволит выполнять некоторые вычисления, например обрезать текст на основе высоты. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()теперь принимает специальный класс, похожий на MutableSet, который не позволяет добавлять в него новые элементы. (Icd314)- PointerIcon теперь является интерфейсом
@Stable(I9dafe) - Частичное использование (переход вниз или к определенной позиции) больше не поддерживается в
PointerInputChange. Чтобы полностью применить изменение, используйтеconsume(). С помощьюisConsumedможно определить, использовал ли кто-то ранее это изменение. PointerInputChange::copy()теперь всегда создает поверхностную копию. Это значит, что копииPointerInputChangeбудут использованы, как только будет использована одна из копий. Если вы хотите создать несвязанный объектPointerInputChange, используйте конструктор. (Ie6be4, b/225669674)- Включить вложенную прокрутку между Compose и View в направлении Compose > View. Это означает, что родительский элемент Compose сможет получать вложенные дельты прокрутки от вложенного представления с прокруткой. (If7949, b/174348612)
- Новый параметр
SemanticsProperty testTagsAsResourceId, который можно использовать, чтобы привести Compose в соответствие с тестами UIAutomator, предназначенными для системы View. (I39c20) - При использовании
FontFamily.SansSerifна устройствах Android будут показываться все доступные варианты толщины системных шрифтов. В API 21–28 будут использоваться названия шрифтов по умолчанию, например sans-serif-medium. Это изменение поведения, поскольку ранее в API 21–28 поддерживались только веса 400 и 700. (I380fe, b/156048036, b/226441992) - В инструкциях для абзацев и нескольких абзацев позиционные аргументы были перенесены перед необязательными. (Idafaa)
- Теперь
AndroidFontпринимает typefaceLoader в качестве параметра конструктора. (I2c971)
Версия 1.2.0-alpha07
6 апреля 2022 г.
Выход androidx.compose.ui:ui-*:1.2.0-alpha07. Версия 1.2.0-alpha07 содержит следующие коммиты:
Изменения в API
- Добавлена новая функция
Snapshot.withoutReadObservation { ... }. Он позволяет пользователям запускать переданную лямбда-функцию, не подписываясь на изменения значений состояния, прочитанных во время этого блока. Это может быть полезно, когда вам нужно использовать безопасные для потоков операции чтения и записи на основе моментальных снимков, но при этом вы хотите иметь возможность читать значение, не вызывая ненужных повторных композиций или измерений. (I9f365, b/214054486) - Свойство расширения
consumeWindowInsetsобъектаComposeViewпозволяет разработчикам отключить использование AndroidWindowInsets. Это позволяет разным элементамComposeViewsв иерархии применятьWindowInsetsнезависимо друг от друга. (I0ef08, b/220943142) - Добавлен параметр
KeyboardType.Decimalв качестве альтернативы параметруKeyboard.Numberдля включения десятичного разделителя в IME. (Iec4c8, b/209835363) PointerEventType.ScrollиPointerEvent.scrollDeltaтеперь стабильные API (I574c5, b/225669674)- Включите вложенную прокрутку между View и Compose для классов View, которые работают вместе. Это означает, что теперь Compose может отправлять дельты прокрутки родительскому элементу View. (I5d1ac, b/174348612)
- Обновление
FontFamily.Resolverдля интеграции системной настройки специальных возможностей "Полужирный шрифт" (I6c1e7) Font(AssetManager, String, ...)больше не поддерживается. Вместо него используетсяFont(String, AssetManager, ...). Это экспериментальный API. (I1c7a4)- Добавлен новый дескриптор шрифта
Font(DeviceFontFamilyName), позволяющий при необходимости искать установленные в системе шрифты в цепочках резервных шрифтов. (I30468, b/219754572) - Добавлена временная конфигурация совместимости для
includeFontPaddingв TextStyle/ParagraphStyle.includeFontPaddingможно изменить вTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). Это временный параметр конфигурации, который будет удален после переноса. (If47be, b/171394808) - Добавьте расширение
GoogleFont.Provider.isAvailableOnDeviceдля отладки. (I64e31) - Добавлен конструктор
GoogleFont.Providerдля использования с@ArrayRes(Ic5ee1, b/225984280) Compose GoogleFontтеперь называетсяFont(GoogleFont). В остальном API не изменился. (I125f2)
Исправление ошибок
- Добавлена проверка lint для material/Scaffold, чтобы убедиться, что используется внутренний отступ (Ifb111).
Версия 1.2.0-alpha06
23 марта 2022 г.
Выход androidx.compose.ui:ui-*:1.2.0-alpha06. Версия 1.2.0-alpha06 содержит следующие коммиты:
Изменения в API
- Добавлено семантическое действие
RequestFocus, чтобы запрос был сосредоточен на цели, на которую можно перевести фокус. (I17b71) - Обновлен синтаксический анализ векторных изображений для поддержки автоматического зеркального отображения контента элемента
VectorPainter, если текущее направление макета – справа налево. (I79cd9, b/185760237) Обновлены цвета тени и окружающего освещения, чтобы они были конечными параметрами
Modifier.graphicsLayerдля совместимости с API (I3f864, b/160665122).В
GraphicsLayerScopeдобавлены реализации по умолчанию для цвета тени и окружающего света, чтобы обеспечить совместимость с предыдущими версиями APIДобавлено время события в события RSB (Ief8ae)
FocusOrderтеперь объединено сFocusProperties, аfocusProperties()обладает всеми возможностямиfocusOrder(). ПоддержкаFocusOrderиfocusOrder()прекращена. ФункциюfocusOrder(), которая принимает параметрfocusRequester, следует заменить модификаторомfocusRequester()в сочетании с функциейfocusProperties(). Это позволяет модификаторам лучше разделять задачи. (I601b7)После обновления
RecyclerViewиComposeпрокрутка в RecyclerView с дочерними представлениями Compose будет работать намного лучше.Добавьте
ViewCompositionStrategy.Defaultкак способ получения встроенной стратегии по умолчанию.Добавьте
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer– новую стратегию по умолчанию, которая корректно обрабатывает контейнеры с пулом, например RecyclerView. (If7282)Добавлена поддержка аннотирования классов аннотаций с помощью @Preview в качестве первого шага для добавления функции Multipreview. Такие аннотации можно использовать для аннотирования методов Composable или других классов аннотаций, которые затем можно считать косвенно аннотированными с помощью @Preview. (I12eff)
В список устройств для @Preview добавлены референсные устройства (I071c9)
Исправление ошибок
- В API векторной графики теперь используется правильная аннотация @VectorComposable вместо @UiComposable (I942bc).
- Удалите crossinline из
AnnotatedString.Builder.withStyle(If84d5)
Внешний вклад
- compose-ui: добавлены свойства
ambientShadowColorиspotShadowColorвGraphicsLayerScope(I1ba1a, b/160665122) - Теперь поддерживаются ресурсы во множественном числе, которые можно использовать с функциями
pluralStringResource. (Ib2f23, b/191375123)
Версия 1.2.0-alpha05
9 марта 2022 г.
Выход androidx.compose.ui:ui-*:1.2.0-alpha05. Версия 1.2.0-alpha05 содержит следующие коммиты:
Изменения в API
- Теперь функция
TextToolbarпринимает лямбда-аргументы вместоActionCallback. (Ib2eb9, b/197950089) - Обновлены значения возможности иметь значение null в основных библиотеках и библиотеках совместимости приложений в соответствии с Tiramisu DP2 (I0cbb7).
- Теперь в измеренном интерфейсе есть свойство parentData (I3313f)
Modifier.onPlacedи интерфейсOnPlacedModifierтеперь стабильны. (Ib5482)- Впечатляет! Теперь при создании анимации учитывается параметр "Масштаб длительности анимации" из настроек разработчика. (I5a4fc, b/161675988)
- Добавлен модификатор
BeyondBoundsLayoutlocal (If8b51, b/184670295) - Текст: параметр includeFontPadding теперь отключен по умолчанию. Проблемы с обрезкой, возникающие из-за
includeFontPadding=false, устранены, и теперь высокие скрипты не должны обрезаться. (I31c84, b/171394808)
Исправление ошибок
ComposeContentTestRule.setContentтеперь будет вызывать исключениеIllegalStateException, если вы попытаетесь задать контент, когда он уже задан. (I888a5, b/199631334)- Исправлен сбой, вызванный содержимым буфера обмена при чтении из него на устройстве Android. (I06020, b/197769306)
- Улучшены примеры прокрутки в окне поиска. (I6a596)
Внешний вклад
- Обновлено до Kotlinx coroutines 1.6.0 (I3366d)
Версия 1.2.0-alpha04
23 февраля 2022 г.
Выход androidx.compose.ui:ui-*:1.2.0-alpha04. Версия 1.2.0-alpha04 содержит следующие коммиты:
Изменения в API
Добавлены функции
ComposableTarget,ComposableTargetMarkerиComposableOpenTarget, которые позволяют во время компиляции сообщать о том, что composable-функция вызывается с применением к объекту, для которого она не предназначена.В большинстве случаев аннотации можно получить с помощью плагина компилятора Compose, поэтому использовать их напрямую нужно редко . К случаям, когда вывод невозможен, относятся создание и использование специального прикладного модуля, абстрактные функции composable (например, методы интерфейса), поля или глобальные переменные, которые являются composable-лямбдами (локальные переменные и параметры выводятся), или использование
ComposeNodeили связанных функций composable.Для пользовательских функций, вызывающих
ComposeNodeилиReusableComposeNode, необходимо добавить аннотациюComposableTargetдля функции и всех типов параметров компонуемой лямбда-функции. Однако мы рекомендуем создать аннотацию, которая будет отмечена символомComposableTargetMarker, а затем использовать эту аннотацию вместо символаComposableTarget. Составная composable-функция, отмеченная символомComposableTargetMarker, эквивалентна аннотацииComposbleTargetс полным именем класса атрибута в качестве параметра applier. Пример использования свойстваComposableTargetMarkerприведен в описании типаanroidx.compose.ui.UiComposable. (I38f11)Font(resId, ...)теперь принимает loadingStrategy в стабильном API. (Ief3d2)FontLoadingStrategyтеперь стабильный API. (I1ee35, b/174162090)Поддержка асинхронной загрузки шрифтов в Text (I77057, b/214587005)
Добавлен API моста для преобразования пользовательских значений
Font.ResourceLoaderвFontFamily.Resolver. (Ia0060)
Исправление ошибок
- Значения
FontFamily.Resolverпередаются в дочерние композиции, например во всплывающее окно. - Значения
Font.ResourceLoaderпередаются в дочерние композиции, например во всплывающее окно. (I48fa5)
Версия 1.2.0-alpha03
9 февраля 2022 г.
Выход androidx.compose.ui:ui-*:1.2.0-alpha03. Версия 1.2.0-alpha03 содержит следующие коммиты:
Изменения в API
- Методы
notifyFocusedRectвTextInputSessionиTextInputServiceтеперь устарели и не будут вызываться. Используйте вместо негоBringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874) - Добавлен метод
destroyDisplayListDataв заглушку классаRenderNode(I1e659, b/216660268) - Добавлен новый API, позволяющий предварительно измерять дочерние элементы
SubcomposeLayout, которые вы предварительно составили. (I857ea) Добавлен метод
movableContentOf, который преобразует composable-функцию в лямбда-функцию, перемещающую ее состояние и соответствующие узлы в любое новое место, где она вызывается. Когда предыдущий звонок покидает композицию, состояние временно сохраняется. Если в композицию поступает новый звонок к лямбда-функции, состояние и связанные с ним узлы перемещаются в местоположение нового звонка. Если новый вызов не добавлен, состояние удаляется навсегда и наблюдатели получают уведомление.Если лямбда-функция
movableContentOfвызывается несколько раз в одной композиции, для каждого вызова создаются новые состояния и узлы. Когда вызовы покидают композицию и в нее входят новые, состояние передается от первых к последним в порядке вызова. Все состояния, не заявленные новыми вызовами, удаляются без возможности восстановления. (Ib4850)FontFamilyResolverтеперь доступен вLocalFontFamilyResolver.currentДобавлены
createFontFamilyResolver(context)иcreateFontFamilyResolver(context, coroutineScope)для создания новых преобразователей FontFamily вне использования Compose.Теперь в Paragraph и MultiParagraph можно использовать
FontFamily.ResolverTextLayoutResult.layoutInput.fontFamilyResolverтеперь содержит преобразователь, используемый для этого макета.TextLayoutResult.layoutInput.resourceLoaderбольше не используется и поэтому устарел. (Id5a45, b/174162090)Поддержка асинхронной и необязательной загрузки шрифтов с резервным поведением. Этот путь используется в Text и TextField и доступен через FontFamilyResolver.
Поддержка предзагрузки шрифтов с помощью
FontFamilyResolver.preloadFontFamilyResolver.setAsyncLoadContextпозволяет задать глобальный контекст сопрограммы, используемый для загрузки асинхронных шрифтов. (I87fe8, b/174162090)Добавлен
AndroidFont– новый низкоуровневый API для предоставления новых типов дескрипторов ресурсов шрифтов в Android. Например, загрузка шрифтов из серверной части приложения, поиск предустановленных шрифтов на устройстве или загрузка шрифта из ресурса, не предоставленного текущими фабриками шрифтов.Расширен API
Font.ResourceLoaded, чтобы поддерживать необязательную и асинхронную загрузку шрифтов. Разработчикам приложений не рекомендуется использовать этот API напрямую. Чтобы добавить новые типы шрифтов, следуйте инструкциям в разделеAndroidFont.Функция расширения
Font.AndroidResourceLoaderпозволяет создаватьFont.ResourceLoaderвне композиции.Добавлен параметр
loadingStrategyдля шрифтов на основе ресурсов, чтобы разрешить асинхронную загрузку, когда шрифт ресурса ссылается на XML-файл скачиваемых шрифтов. (Ie5aea, b/174162090)Конструктор
Typeface(FontFamily)устарел. Раньше этот тег использовался для предварительной загрузки шрифтов, которая могла занимать до 10 секунд. При использовании скачиваемых шрифтов этот вызов может блокироваться на 10 секунд. Вместо него используйтеFontFamilyResolver.preload.fontResource(FontFamily): Typefaceбольше не поддерживается. Раньше этот тег использовался для предварительной загрузки шрифтов, которая могла занимать до 10 секунд. Вместо этого используйтеFontFamilyResolver.preload(If8e7c, b/174162090)Конструктор
SubcomposeLayoutState, принимающийmaxSlotsToRetainForReuse, больше не поддерживается. Вместо него используется новый конструктор, принимающийSubcomposeSlotReusePolicy– новый интерфейс, позволяющий более точно контролировать, какие слоты следует сохранить для дальнейшего использования. (I52c4d)Функции HSV и HSL в
Colorтеперь доступны как неэкспериментальные API. Цветовое пространство Oklab теперь доступно в общедоступном API. (I08fb6, b/180731008)Устаревший метод
AndroidComposeTestRule.AndroidComposeStatement, который не должен был быть в общедоступном API и в любом случае ничего не делал. (Ibc46b)Внутреннее переименование сгенерированного класса Kotlin (Ia0b9e, b/174162090)
Удалено видео
FontLoadingStrategy.values(I42a9d, b/174162090)Глобальный загрузчик шрифтов теперь называется
FontFamilyResolver. (I4f773, b/174162090)Использовать новую систему загрузки шрифтов для компьютеров. (I9ce5c, b/174162090)
FontFamily.Resolver.resolveвозвращаетState<Any>(I4406c, b/174162090)
Исправление ошибок
- Теперь при выборе текстового поля и показе клавиатуры оно будет оставаться над клавиатурой, если для режима мягкого ввода задано значение
ADJUST_PAN. (I8eaeb, b/190539358, b/192043120) - На компьютере для
FontFamily.Resolverиспользуется локальная композиция. - Поддержка функции "Рабочий стол
FontLoader" прекращена - Новая фабрика
createFontFamilyResolverна компьютере (I6bbbb, b/174162090) - При переключении фокуса между текстовыми полями больше не мерцает тип ввода с экранной клавиатуры. (I1bf50, b/187746439)
Версия 1.2.0-alpha02
26 января 2022 г.
Выход androidx.compose.ui:ui-*:1.2.0-alpha02. Версия 1.2.0-alpha02 содержит следующие коммиты:
Изменения в API
- Добавлены
Modifier.onRotaryScrollEvent()иModifier.onPreRotaryScrollEvent()для устройств Wear OS с вращающейся боковой кнопкой (I18bf5, b/210748686). - Добавлено экспериментальное расширение
View.createLifecycleAwareRecomposer(I0cde6).
Внешний вклад
PointerEvent.scrollDelta.yтеперь инвертируется на Android (если наклонить колесико мыши вправо, возвращается значение 1 вместо -1) (Ia9811).
Версия 1.2.0-alpha01
12 января 2022 г.
Выход androidx.compose.ui:ui-*:1.2.0-alpha01. Версия 1.2.0-alpha01 содержит следующие коммиты:
Изменения в API
- Прекращена поддержка функции
FontFamily.canLoadSynchronously. Это свойство не имеет семантического значения. (Ica5ef) - В файл
CompositionDataдобавлено поле identity для создания неизменяемых идентификаторов в инспекторе макета. (Ic116e) - Добавлены идентификаторы устройств Wear OS в список устройств для предварительного просмотра (I93232)
Обновления зависимостей
- Теперь зависит от Kotlin
1.6.10.
Версия 1.1
Версия 1.1.1
23 февраля 2022 г.
Выход androidx.compose.ui:ui-*:1.1.1. Версия 1.1.1 содержит следующие коммиты:
Исправление ошибок
- Исправлена ошибка
NullPointerExceptionвandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(aosp/1947059, b/206677462) - Исправлен сбой, вызванный содержимым буфера обмена при чтении из него на устройстве Android. (I06020, b/197769306)
- Исправлена поддержка письма справа налево в
LazyVerticalGrid(aosp/1931080, b/207510535).
Версия 1.1.0
9 февраля 2022 г.
Выход androidx.compose.ui:ui-*:1.1.0. Версия 1.1.0 содержит следующие коммиты:
Важные изменения с версии 1.0.0
- Стабильная поддержка эффекта достижения конца прокрутки в Android 12
- Улучшение размера областей прикосновения
- Обратите внимание, что в Compose 1.0 компоненты Material будут расширять пространство макета в соответствии с рекомендациями по обеспечению доступности для размера интерактивных элементов. Например, область прикосновения кнопки будет расширена до минимального размера 48 x 48 dp, даже если вы зададите меньший размер кнопки. Это позволяет обеспечить согласованное поведение компонентов Material Design и Compose Material при их совместном использовании. Это изменение также гарантирует, что при создании интерфейса с помощью компонентов Compose Material будут соблюдены минимальные требования к доступности областей прикосновения.
- Стабильная поддержка боковой панели навигации
- Несколько экспериментальных API переведены в стабильную версию.
- Поддержка более новых версий Kotlin
Версия 1.1.0-rc03
26 января 2022 г.
Выход androidx.compose.ui:ui-*:1.1.0-rc03. Версия 1.1.0-rc03 содержит следующие коммиты:
Исправление ошибок
- Обновлена поддержка Compose Material 1.1.0-rc03
Версия 1.1.0-rc01
15 декабря 2021 г.
Выход androidx.compose.ui:ui-*:1.1.0-rc01. Версия 1.1.0-rc01 содержит следующие коммиты:
Исправление ошибок
- Исправлена ошибка, из-за которой отсутствовали действия прокрутки для специальных возможностей (I7cbfb).
SemanticsNodeInteraction.captureToImage()теперь также будет работать, еслиHardwareRenderer.isDrawingEnabled()имеет значениеfalse, поскольку будет включен на время звонка (Idf3d0).
Версия 1.1.0-beta04
1 декабря 2021 г.
Выход androidx.compose.ui:ui-*:1.1.0-beta04. Версия 1.1.0-beta04 содержит следующие коммиты:
Новые функции
- Обновлено для совместимости с Kotlin
1.6.0
Изменения в API
- Удалены значения NULL в
androidx.core.view(I7078a, b/204917439) - Добавлены экспериментальные API, которые позволяют пользователям использовать PointerInputchange целиком или проверять, был ли он использован. (I2e59d)
- Добавлена поддержка событий колесика мыши на уровне интерфейса. (Ia14eb, b/198214718)
- Добавлены экспериментальные перегрузки
Modifier.composed, которые принимают ключи для сравнения на равенство и позволяют пропускать оптимизации. (Ice799, b/205851704) ComposeNotIdleExceptionтеперь наследуется отException, а не отThrowable. Обратите внимание, что это означает, что предложения catch, которые перехватывалиException, теперь могут перехватыватьComposeNotIdleException, чего раньше не происходило. (I9c217)
Исправление ошибок
- Исправлена ошибка, из-за которой маркеры текста не перемещались при изменении видимости IME. (I25f2e)
Версия 1.1.0-beta03
17 ноября 2021 г.
Выход androidx.compose.ui:ui-*:1.1.0-beta03. Версия 1.1.0-beta03 содержит следующие коммиты:
Изменения в API
- Добавлен новый модификатор Modifier.onPlaced, позволяющий отслеживать изменения размещения. Таким образом, на основе наблюдаемых изменений размещения можно вносить дополнительные изменения в смещение дочернего модификатора. (I558fd)
- Удалены элементы
InjectionScope.flush()иInjectionScope.dispose(). Сброс всех событий и удаление области действия теперь происходит в конце вызванного метода perform*Input(), как и раньше. (I2bed8) - Удалены
MultiModalInjectionScope.TouchиMultiModalInjectionScope.Mouse. Чтобы внедрить события сенсорного ввода и мыши для мультимодальных жестов, теперь можно использоватьMultiModalInjectionScope.touch()иMultiModalInjectionScope.mouse(). Обе функции принимают лямбда-выражение, которое имеет область действия получателя этой модальности. (Idde18)
Исправление ошибок
- Значение по умолчанию для
durationMillisвTouchInjectionScope.swipeWithVelocityтеперь рассчитывается таким образом, чтобы пролистывание было возможным. (I19deb)
Версия 1.1.0-beta02
3 ноября 2021 г.
Выход androidx.compose.ui:ui-*:1.1.0-beta02. Версия 1.1.0-beta02 содержит следующие коммиты.
Изменения в API
- Добавлен экспериментальный API BringIntoView, который позволяет отправлять родителям запросы на прокрутку экрана, чтобы показать определенный элемент (Ib918d, b/195353459).
- Новые API анимации для поддержки инструментов. В частности, они позволяют инструментам проверять анимацию и ее конфигурацию в Transitions. (I4116e)
Внешний вклад
- Добавлен Modifier.pointerHoverIcon (I95f01)
Версия 1.1.0-beta01
27 октября 2021 г.
Выход androidx.compose.ui:ui-*:1.1.0-beta01. Версия 1.1.0-beta01 содержит следующие коммиты:
Изменения в API
- Добавлен экспериментальный API
BringIntoView, который позволяет отправлять родителям запросы на прокрутку экрана, чтобы показать определенный элемент (Ib918d, b/195353459). - Новые API анимации для поддержки инструментов. В частности, они позволяют инструментам проверять анимацию и ее конфигурацию в Transitions. (I4116e)
Версия 1.1.0-alpha06
13 октября 2021 г.
Выход androidx.compose.ui:ui-*:1.1.0-alpha06. Версия 1.1.0-alpha06 содержит следующие коммиты:
Изменения в API
- Удалить
ExperimentalComposeUiApiизViewRootForInspectorиLayoutInfo.ownerViewId(I5c2e3) - Добавлена перегрузка макета без дочерних элементов с повышенной эффективностью (Ib0d9a).
- Удален метод
InternalCompilerApiиз методов Composer, которые должны вызываться между модулями (I1aa0b). SemanticsNodeInteraction.performSemanticsActionтеперь возвращаетSemanticsNodeInteraction, для которого была вызвана функция. (I9e5db)- Добавлен CompositionLocal LocalInputModeManager для обнаружения режима сенсорного ввода и режима без сенсорного ввода. (I6a83c, b/175899786)
- Добавлен параметр
viewConfiguration: ViewConfigurationвLayoutInfo, чтобы пользователи могли задавать правильные значения для таких функций, как время ожидания при долгом нажатии. (I76ca6)- Добавлен параметр
viewConfiguration: ViewConfigurationвInjectionScope, чтобы тесты могли корректировать ввод на основе таких факторов, как время ожидания долгого нажатия или погрешность сенсорного ввода. - Изменена продолжительность по умолчанию для долгого нажатия и двойного нажатия при использовании сенсорного экрана и управления мышью. Теперь она основана на значениях в
InjectionScope.viewConfiguration.
- Добавлен параметр
- Реализация ExposedDropdownMenu на основе ExposedDropdownMenuBox с TextField и DropdownMenu внутри (If60b2)
- В PopupProperties добавлен параметр dismissOnOutsideClick, который заменяет устаревший параметр dismissOnClickOutside. Новый ресурс получает позицию клика и границы якоря, что позволяет более точно определять, следует ли вызывать onDismissRequest. Например, это может быть полезно, чтобы предотвратить закрытие фиксированного объявления при нажатии на него.
- В PopupProperties добавлено свойство updateAndroidWindowManagerFlags, которое позволяет управлять флагами, передаваемыми всплывающим окном в Android WindowManager. Параметром лямбда-функции будут флаги, рассчитанные на основе значений PopupProperties, которые приводят к флагам WindowManager, например focusable. Результат работы лямбда-функции будет представлять собой окончательные флаги, которые будут переданы в Android WindowManager. По умолчанию функция updateAndroidWindowManagerFlags оставляет флаги, рассчитанные на основе параметров, без изменений. Используйте этот API с осторожностью, только если у всплывающего окна есть особые требования к поведению. (I6e9f9)
Recomposer.stateустарел и был заменен наRecomposer.currentState, чтобы изменить его тип на StateFlow (Ic2ab3, b/197773820).- Добавлены
flush()иdispose()вInjectionScope. Используйте их, когда хотите немедленно сбросить все события из очереди и когда хотите удалить область действия. (Ifb73a) - Добавлен элемент
performScrollToNode(matcher: SemanticsMatcher), который прокручивает контейнер с возможностью прокрутки до контента, соответствующего заданному сопоставителю. (Ic1cb8) InjectionScopeтеперь поддерживаетDensity, что позволяет легко преобразовывать единицы px в dp и наоборот вperformTouchInputи других приложениях. (I8fe1f)
Исправление ошибок
- Теперь AndroidView передает LocalLifecycleOwner и LocalSavedStateRegistryOwner в представление через ViewTreeLifecycleOwner и ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
- Исправлена ошибка, из-за которой SwipeToDismissBox иногда не обрабатывал свайпы. (I9387e)
- Время между событиями ввода по умолчанию изменено с 10 мс до 16 мс. Это может повлиять на результаты тестов, в которых используются жесты, например определенные свайпы. (I829fd)
Версия 1.1.0-alpha05
29 сентября 2021 г.
Выход androidx.compose.ui:ui-*:1.1.0-alpha05. Версия 1.1.0-alpha05 содержит следующие коммиты:
Изменения в API
- Добавлена поддержка связи между модификаторами (Id5467, b/198826874).
- Добавлены экспериментальные указатели истории в PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
- Добавлены
density: DensityиlayoutDirection: LayoutDirectionвLayoutInfo. Это позволяет потребителямLayoutInfoправильно интерпретировать размеры и положение, указанные вLayoutInfo. (I002f1) - Добавлена экспериментальная поддержка для внедрения событий мыши. Используйте
performMouseInput, чтобы начать отправку событий мыши, или отправляйте события мыши через свойствоMouseобъектаMultiModalInjectionScopeво время многомодального жеста ввода с помощьюperformMultiModalInput. Документацию по доступному API можно найти на страницеMouseInjectionScope. (Iaa4a8, b/190493367)
Исправление ошибок
- Исправлена поддержка специальных возможностей для прокручиваемых элементов (как с ленивой, так и с обычной загрузкой) при прокрутке (I6cdb0).
- Улучшенное
TouchInjectionScope.swipeWithVelocity. Теперь он принимает больше входных переменных и предлагает изменения, если не удается создать пролистывание (I40fbe, b/182477143).
Версия 1.1.0-alpha04
15 сентября 2021 г.
Выход androidx.compose.ui:ui-*:1.1.0-alpha04. Версия 1.1.0-alpha04 содержит следующие коммиты:
Изменения в API
- В
PointerEventтеперь естьPointerEventTypeдля поддержки событий наведения указателя. (I091fa) - Разрешить детям принимать ввод указателя за пределами границ ввода указателя родительского элемента. Родители могут перехватывать эти вызовы с помощью свойства PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655).
- Удалены устаревшие функции
performGestureиGestureScope, которые были заменены функциямиperformTouchInputиTouchInjectionScope. (Ia5f3f, b/190493367) - В
touchBoundsInRootдобавленоSemanticsNode, в котором указан минимальный размер области прикосновения. Это поможет разработчикам убедиться, что области прикосновения соответствуют минимальным требованиям к доступности. (I2e14b, b/197751214) - Повторная реализация функции inspectable (I927bc, b/191017532)
- Изменено название параметра, чтобы оно совпадало с названием составного параметра (I3a482, b/191017532).
Вместо
performTouchInputиTouchInjectionScopeдобавленыperformTouchInputиTouchInjectionScope, что позволяет использовать другие способы ввода, например мышь.У
TouchInjectionScopeте же методы, что и уGestureScope, за исключениемmovePointerToиmovePointerBy, которые были переименованы вupdatePointerToиupdatePointerBy. Остальные методы не изменились.Поведение функции
TouchInjectionScopeпочти идентично поведению функцииGestureScope, за исключением двух небольших деталей:- При отправке события down, когда указатели были перемещены без отправки события move (иными словами, использовался метод
updatePointerTo(), но неmove(), а затем вызывался методdown()), предыдущая реализация увеличивала время события и отправляла событие move до отправки события down. Новая реализация по-прежнему отправляет событие move, но в этом конкретном сценарии не увеличивает время события. - При отправке события up, когда указатели были перемещены без отправки события move (как описано выше), предыдущая реализация увеличивала время события и отправляла событие move до отправки события up. В новой реализации этого не происходит: новые позиции указателей будут отражены только в событии up.
Наконец, в
TouchInjectionScopeпоявился новый методcurrentPosition(pointerId: Int), позволяющий получить текущую позицию указателя. (If1191, b/190493367)- При отправке события down, когда указатели были перемещены без отправки события move (иными словами, использовался метод
Исправление ошибок
- Разрешить области прикосновения выходить за границы области обрезки, чтобы обеспечить минимальный размер области прикосновения. (I43e10, b/171509422)
- На устройствах с Android 12 добавлена поддержка эффекта достижения конца прокрутки при растягивании. (Iccf3c, b/171682480)
Версия 1.1.0-alpha03
1 сентября 2021 г.
Выход androidx.compose.ui:ui-*:1.1.0-alpha03. Версия 1.1.0-alpha03 содержит следующие коммиты.
Новые функции
- Обновлена зависимость Compose
1.1.0-alpha03от Kotlin1.5.30. (I74545)
Изменения в API
- Добавлен символ
Modifier.inspectableдля объединения других модификаторов. (I1909b, b/191017532) - Добавлен
BlurredEdgeTreatmentAPI, чтобы упростить использование размытия, объединив его с наиболее распространенными сочетаниями флагов клипа и TileModes. В большинстве случаев размытый контент либо выходит за границы исходного контента, а области за этими границами размываются прозрачным черным цветом, либо контент обрезается по границам контента, а для ядер размытия, выходящих за границы контента, выполняется выборка ближайшей к границе области. (I6b4b7, b/166927547) - Добавлена поддержка RenderEffect в Compose для компьютеров. Добавлен OffsetEffect, а также модификатор размытия, позволяющий легко добавлять визуальные эффекты размытия к части иерархии композиции. (I0f6aa, b/166927547)
- Добавлен API RenderEffect, который можно настроить для элемента
Modifier.graphicsLayer, чтобы изменить содержимое слоя. Его можно использовать, чтобы размыть содержимое composable-функции и дочерних composable-функций в иерархии композиции. (I47c4d, b/166927547) - В AwaitPointerEventScope теперь есть функции withTimeout() и withTimeoutOrNull() (I507f0, b/179239764, b/182397793).
- Добавлен минимальный размер области прикосновения в ViewConfiguration для использования в семантике и вводе с помощью указателя, чтобы обеспечить доступность. (Ie861c)
- Добавлена поддержка TileMode.Decal, которая полезна при определении поведения краев для эффектов размытия. (I7e8ed, b/166927547)
performScrollToIndex,performScrollToKey,hasScrollToIndexActionиhasScrollToKeyActionтеперь стабильные API (I142ae, b/178483889).- Добавлен тестовый метод для получения обрезанных границ. (I6b28e)
Исправление ошибок
- Из BlurredEdgeTreatment удален метод isBounded. Вместо него теперь явно проверяется, является ли параметр shape нулевым. (I85d68)
Версия 1.1.0-alpha02
18 августа 2021 г.
Выход androidx.compose.ui:ui-*:1.1.0-alpha02. Версия 1.1.0-alpha02 содержит следующие коммиты:
Изменения в API
- Теперь PointerEvent поддерживает чтение состояния кнопок мыши и клавиш-модификаторов. (I6310c, b/180075467)
- Внедренные жесты теперь используют время MainTestClock в качестве источника истины. Текущее время для добавленных событий в
performGestureбудет инициализировано текущим временем MainTestClock. (Ifb364, b/192064452) - Добавлен конструктор
DpRect(DpOffset, DpSize)(I2cf16, b/194219828) - Добавлен класс DpSize (I7abb1, b/194219828)
Исправление ошибок
- Обновлен синтаксический анализатор XML-файлов векторной графики, чтобы поддерживать списки состояний цвета в качестве корневых свойств оттенка цвета в VectorDrawable. (I86915, b/195668138)
Версия 1.1.0-alpha01
4 августа 2021 г.
Выход androidx.compose.ui:ui-*:1.1.0-alpha01. Версия 1.1.0-alpha01 содержит следующие коммиты:
Изменения в API
- Теперь
RelocationRequester.bringIntoViewпринимает в качестве параметра прямоугольник, что позволяет нам показывать часть объекта Composable (Ice2c5, b/194330245). AnimatedImageVectorи связанные с ним API теперь находятся в новом модулеandroidx.compose.animation:animation-graphics. (I60873)- Добавлен экспериментальный модификатор для обработки запросов на перенос. (I65a97, b/178211874)
Добавлен API BrushPainter для рисования произвольной кистью в Painter, аналогично ColorPainter.
В Brush API добавлен параметр intrinsic size, который запрашивается в BrushPainter (Ia2752, b/189466433).
Обновленный метод DrawScope#drawImage, который использует исходные и целевые прямоугольники, а также необязательный параметр FilterQuality. Это полезно для пиксельной графики, которая должна быть пикселизированной при масштабировании. Обновлены BitmapPainter и Image composable: теперь они также используют необязательный параметр FilterQuality (Ie4fb0, b/180311607).
Добавлен метод
GestureScope.advanceEventTime, позволяющий точнее контролировать время событий в жесте (Ibf3e2).
Исправление ошибок
- Чтобы обеспечить поддержку цепочек модификаторов рисования, убедитесь, что реализация Modifier.paint вызывает drawsContent.
Ранее предполагалось, что Modifier.paint будет конечным узлом в цепочке модификаторов, однако это не позволяло настраивать его в контейнере с возможностью композиции (например, в элементе Box) или добавлять поверх него дополнительные декоративные элементы, такие как
Modifier.paint().border(). Вызов drawContent после отрисовки содержимого заданного объекта Painter в Modifier.paint позволяет добиться большей согласованности поведения с шаблоном модификатора. (Ibb2a7, b/178201337, b/186213275) - Теперь диалоговые окна следуют правилам изменения размера платформы. Чтобы переопределить это поведение, задайте для параметра
usePlatformDefaultWidthзначение false. (Iffaed, b/192682388) - Перемещено
InfiniteAnimationPolicyв :compose:ui (I5eb09, b/160602714) - Прокрутка с помощью семантических действий для ленивых списков и обычных компонентов прокрутки теперь анимирована (Id9066, b/190742024).
Версия 1.0
Версия 1.0.5
3 ноября 2021 г.
Выход androidx.compose.ui:ui-*:1.0.5. Версия 1.0.5 содержит следующие коммиты:
Исправление ошибок
- Исправлена ошибка отслеживания сбоев, связанных с экземплярами derivedStateOf. (aosp/1792247)
Версия 1.0.4
13 октября 2021 г.
Выход androidx.compose.ui:ui-*:1.0.4. Версия 1.0.4 содержит следующие коммиты:
Обновления зависимостей
- Обновлена зависимость от Kotlin
1.5.31
Версия 1.0.3
29 сентября 2021 г.
Выход androidx.compose.ui:ui-*:1.0.3. Версия 1.0.3 содержит следующие коммиты:
Обновления зависимостей
- Обновлена зависимость от Kotlin
1.5.30
Версия 1.0.2
1 сентября 2021 г.
Выход androidx.compose.ui:ui-*:1.0.2. Версия 1.0.2 содержит следующие коммиты:
Добавлена поддержка версии Compose 1.0.2. Compose 1.0.2 по-прежнему совместим с Kotlin 1.5.21.
Версия 1.0.1
4 августа 2021 г.
Выход androidx.compose.ui:ui-*:1.0.1. Версия 1.0.1 содержит следующие коммиты:
Обновления зависимостей
- Обновлена зависимость от Kotlin
1.5.21.
Версия 1.0.0
28 июля 2021 г.
Выход androidx.compose.ui:ui-*:1.0.0. Версия 1.0.0 содержит следующие коммиты:
Основные функции версии 1.0.0
Это первый стабильный выпуск Compose. Подробную информацию можно найти в официальном блоге Compose Release.
Известные проблемы
Если вы используете Android Studio Bumblebee Canary 4 или AGP
7.1.0-alpha04/7.1.0-alpha05, может произойти сбой:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"Чтобы устранить проблему, временно увеличьте значение minSdkVersion до 24 или выше в файле
build.gradle. Эта проблема будет устранена в следующей версии Android Studio Bumblebee и AGP7.1. (b/194289155)
Версия 1.0.0-rc02
14 июля 2021 г.
Выход androidx.compose.ui:ui-*:1.0.0-rc02. Версия 1.0.0-rc02 содержит следующие коммиты:
Исправление ошибок
- Теперь диалоговые окна следуют правилам изменения размера платформы. Чтобы переопределить это поведение, задайте для параметра
usePlatformDefaultWidthзначение false. (Iffaed, b/192682388)
Версия 1.0.0-rc01
1 июля 2021 г.
Выход androidx.compose.ui:ui-*:1.0.0-rc01. Версия 1.0.0-rc01 содержит следующие коммиты:
Новые функции
- Разделение модуля ui-tooling на
ui-toolingиui-tooling-preview(Iefa28, b/190649014)
Изменения в API
- Удалены устаревшие экспериментальные функции
FocusManager#moveFocusInиFocusManager#moveFocusOut(I227d7, b/170154986, b/186567354, b/168510304) - Теперь в Canvas поддерживается параметр contentDescription для обеспечения доступности. (Ib547c)
useDefaultMaxWidthвPopupPropertiesпереименован вusePlatformDefaultWidth. (I05710)- Теперь диалоговые окна могут занимать всю ширину экрана. (I83929, b/190810877)
- Добавлена экспериментальная поддержка цветовых представлений HSV и HSL. (Id7cf8, b/180731008)
Изменения в поведении
- В Compose
@Previewтеперь естьLocalActivityResultRegistryOwner, позволяющий просматривать Composables, в которых используются API, напримерrememberLauncherForActivityResult(), зависящие от наличия владельца. (Ib13d1, b/185693006) - В Compose
@Previewтеперь естьLocalOnBackPressedDispatcherOwner, позволяющий просматривать Composables, в которых используются API, напримерBackHandler, требующие наличия владельца. (Ia1c05, b/185693006)
Исправление ошибок
- Перемещено
InfiniteAnimationPolicyвandroidx.compose.ui:ui(I5eb09, b/160602714) - Класс AnimatedImageVector был временно удален, чтобы изменить структуру модуля. (I41906, b/160602714)
Версия 1.0.0-beta09
16 июня 2021 г.
Выход androidx.compose.ui:ui-*:1.0.0-beta09. Версия 1.0.0-beta09 содержит следующие коммиты:
Изменения в API
- Изменить перечисления Role и LiveRegionMode на встроенные классы с частным конструктором (Id1890)
- KeyboardCapitalization преобразуется во встроенный класс. (Id5a1c)
- Измените HapticFeedbackType на встроенный класс. (I255ec)
- Modifier.pointerInteropFilter имеет аннотацию @ExperimentalComposeUiApi. (Iede6c)
- TextAlign, FontSynthesis и TextDirection теперь являются встроенными классами. (I212fe)
- Класс TextOverflow изменен на встроенный. (I433af)
- FontStyle теперь является встроенным классом. (I9e48b)
Исправление ошибок
- Ключевые константы пока имеют аннотацию @ExperimentalComposeUiApi. Код, использующий константу, может объявлять частные константы до стабилизации. (Ia5d48)
- Теперь тесты Compose можно запускать в Robolectric. На данный момент выявлены следующие ограничения:
- Нет нативного растрового изображения, поэтому
ImageBitmap()приводит к исключению NullPointerException. - Рисование не выполняется, поэтому
captureToImage()будет бесконечно ожидать следующего прохода рисования (т.е. произойдет взаимная блокировка). - Шрифт не загружен, поэтому любой текст будет измерен неправильно. Все символы имеют фиксированную высоту около 20 пикселей и ширину 1 пиксель.
ComposeTestRule.waitUntil {}не запускает основной поток во время ожидания, поэтому по сути это то же самое, что иComposeTestRule.mainClock.advanceTimeUntil {}. В будущем могут быть выявлены дополнительные ограничения. (I284fa)
- Нет нативного растрового изображения, поэтому
Добавлены правила для профилей
В этом выпуске в следующие модули Compose добавлены правила профиля (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Что такое правила профиля
Правила профиля для библиотеки указываются в текстовом файле
baseline-prof.txt, расположенном в каталогеsrc/mainили аналогичном. В файле каждое правило указывается в отдельной строке. Правило представляет собой шаблон для сопоставления с методами или классами в библиотеке. Синтаксис этих правил представляет собой надмножество понятного для человека формата профиля ART, который используется при работе сadb shell profman --dump-classes-and-methods .... Эти правила могут быть двух типов: для методов и для классов.Правило для метода будет иметь следующий формат:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>Правило для класса будет иметь следующий формат:
<CLASS_DESCRIPTOR>Здесь
<FLAGS>– один или несколько символовH,SиP, указывающих, следует ли отмечать этот метод как "Горячий", "Запуск" или "После запуска".<CLASS_DESCRIPTOR>– дескриптор класса, к которому относится целевой метод. Например, для классаandroidx.compose.runtime.SlotTableдескриптор будетLandroidx/compose/runtime/SlotTable;.<METHOD_SIGNATURE>– это сигнатура метода, которая включает название, типы параметров и типы возвращаемых значений метода. Например, методfun isPlaced(): BooleanвLayoutNodeимеет сигнатуруisPlaced()Z.В этих шаблонах можно использовать подстановочные знаки (
**,*и?), чтобы одно правило охватывало несколько методов или классов.
Что делают правила
Метод, отмеченный флагом
H, является "горячим" и должен быть скомпилирован заранее.Метод с флагом
Sуказывает на то, что он вызывается при запуске и должен быть скомпилирован заранее, чтобы избежать затрат на компиляцию и интерпретацию метода во время запуска.Метод с флагом
Pвызывается после запуска.Класс, указанный в этом файле, используется при запуске и должен быть предварительно выделен в куче, чтобы избежать затрат на загрузку класса.
Как это работает?
- Библиотеки могут определять эти правила, которые будут упакованы в артефакты AAR. Когда приложение, включающее эти артефакты, будет создано, правила будут объединены и использованы для создания компактного двоичного профиля ART, относящегося к приложению. Затем ART может использовать этот профиль при установке приложения на устройства, чтобы заранее скомпилировать определенное подмножество приложения и повысить его производительность, особенно при первом запуске. Обратите внимание, что это не повлияет на приложения с возможностью отладки.
Версия 1.0.0-beta08
2 июня 2021 г.
Выход androidx.compose.ui:ui-*:1.0.0-beta08. Версия 1.0.0-beta08 содержит следующие коммиты:
Изменения в API
- Перечисление
NestedScrollSourceзаменено встроенным классом. (Ie321b, b/187055290) FocusManager.clearFocus(forcedClear = true)переименован вFocusManager.clearFocus(force = true)(Ia0c41)- Перечисления были преобразованы в встроенные классы, чтобы избежать проблем с исчерпывающими операторами when при добавлении новых значений перечислений. (I2b5eb)
- Удалить данные об устройстве "
@ExperimentalComposeUiApi" из аккаунтаPopupProperties? (I01fa6) - Значение поля "
PointerType" изменено с перечисления на встроенный класс (If5058) - Свойства ContentDescription и Text больше не являются отдельными значениями, а представляют собой списки. Это позволяет объединять их как есть, а не конкатенировать. Также были добавлены улучшенные API для тестирования, которые позволяют использовать эти изменения (Ica6bf, b/184825850).
Modifier.focusModifier()больше не поддерживается и заменена наModifier.focusTarget()(I6c860).- Функции
Modifier.onSizeChanged()иModifier.onGloballyPositioned()больше не встраиваются (I727f6, b/186109675) - Перечисление
KeyboardTypeзаменено встроенным классом. (I73045, b/187055290) - Перечисление
FocusStateзаменено интерфейсомFocusState(Iccc1a, b/187055290) - Перечисление ImeAction заменено встроенным классом. (I18be5, b/187055290)
PlaceholderVerticalAlignпреобразуется во встроенный класс. (If6290)- Класс TextUnitType теперь встроенный. (I4cba9)
- Функции
AnnotatedString.withAnnotationтеперь относятся к ExperimentalTextApi, а не к ExperimentalComposeApi. (I0cd0a)- Конструктор TextUnit с TextUnitType теперь относится к ExperimentalTextApi, а не к ExperimentalComposeApi.
Исправление ошибок
- Исправлена ошибка, появившаяся в версии beta07, из-за которой элементы LazyColumn/Row частично отображались после прокрутки (I8c9ac, b/188566058).
- Теперь
detectDragGesures,detectVerticalGesturesиdetectHorizontalGesturesбудут автоматически учитывать изменение позиции, поэтому вам не нужно вызывать change.consumePositionChange в обратных вызовах onDrag (I42fc4, b/185096350, b/187320697). - Исправлена ошибка, из-за которой LayoutModifiers предоставлял линии выравнивания. Исправлена ошибка, из-за которой родительский объект не пересчитывался при изменении линий выравнивания дочерних объектов. (I4401f, b/174315652)
Modifier.onGloballyPositioned()теперь сообщает координаты этого модификатора в цепочке модификаторов, а не координаты макета после применения всех модификаторов. Это означает, что порядок модификаторов влияет на то, какие координаты будут передаваться. (Ieb67d, b/177926591)
Версия 1.0.0-beta07
18 мая 2021 г.
Выход androidx.compose.ui:ui-*:1.0.0-beta07. Версия 1.0.0-beta07 содержит следующие коммиты.
Изменения в API
- Добавлен интерфейс
ViewRootForInspectorдля использования в инспекторе (Ib70df) - В
SubcomposeLayoutStateтеперь можно задавать количество повторно используемых мест размещения. В макете будет сохраняться до указанного количества активных слотов вместо того, чтобы удалять их и использовать повторно при необходимости (Ieb981). - Перечисление KeyEventType заменено встроенным классом. (Id670a, b/187055290)
- Перечисление
FocusDirectionзаменено встроенным классом. (Ib6d03, b/187055290, b/184086802) - Добавлена возможность поднимать состояние SubcomposeLayout, что позволяет предварительно создавать контент в требуемом slotId, благодаря чему следующий проход измерения будет быстрее, поскольку при попытке создать подкомпозицию с заданным slotId в следующий раз композиция не потребуется. (I42580, b/184940225)
- Добавлен маркер выбора клипа (Iff80d, b/183408447)
- Удалены неиспользуемые API, связанные с поддержкой LayoutInspector. (I2ac78)
Исправление ошибок
- LazyColumn/Row теперь сохраняет до двух ранее видимых элементов активными (не удаляет), даже если они уже прокручены. Это позволяет компоненту повторно использовать активные вложенные композиции при создании нового элемента, что повышает эффективность прокрутки. (Ie5555)
TextGeomerticTransformиTextDecorationнаAnnotatedStringбудут применены в соответствии с указанными значениями. (I61900, b/184760917)
Версия 1.0.0-beta06
5 мая 2021 г.
Выход androidx.compose.ui:ui-*:1.0.0-beta06. Версия 1.0.0-beta06 содержит следующие коммиты.
Изменения в API
- Устранение конфликта с жестом навигации (I1145e)
@ComposeCompilerApiбольше не@RequiresOptIn(Iab690)- Добавлены API специальных возможностей CollectionInfo и CollectionItemInfo, которые позволяют отмечать коллекции и их элементы для сервисов специальных возможностей (Id54ef, b/180479017).
- Добавлены функции
SemanticsActions.ScrollToIndexдля прокрутки списка с индексированными элементами до элемента с определенным индексом иSemanticsProperties.IndexForKeyдля получения индекса элемента в списке с элементами, имеющими ключи. Оба действия реализуются с помощью LazyList.- Добавлены функции
SemanticsNodeInteraction.performScrollToIndex, которая прокручивает список до указанного индекса, иSemanticsNodeInteraction.performScrollToKey, которая прокручивает список до элемента с указанным ключом. (I4fe63, b/178483889, b/161584524)
- Добавлены функции
- Добавлен параметр ownerViewId в GraphicLayerInfo (I19f62)
- Добавлены перегрузки Font(), чтобы загружать шрифты из объектов, файлов и дескрипторов файлов (I5d382).
- Добавлен API специальных возможностей
error, позволяющий отмечать узлы, содержащие недопустимые входные данные (I12997, b/180584804, b/182142737). - Добавлено
Font()перегрузки для загрузки шрифтов из объектов, файлов и дескрипторов файлов (I43007). - Поддержка сохранения AnnotatedString в
TextFieldValue.Saver. Добавлены функцииaddTtsAnnotationи withAnnotation в утилитуAnnotatedString.Builder(I8cbdc, b/178446304). - Добавлена функция конструктора TextUnit
TextUnit(value: Float, type: TextUnitType)(I7ecce, b/178446304)
Версия 1.0.0-beta05
21 апреля 2021 г.
Выход androidx.compose.ui:ui-*:1.0.0-beta05. Версия 1.0.0-beta05 содержит следующие коммиты:
Изменения в API
- Добавлены экспериментальные функции
FocusManager.moveFocus(In)иFocusManager.moveFocus(Out)(Ic5534, b/183746743). - Добавлен экспериментальный API
performTextInputSelection(I2dcbb, b/178510628) - Интерфейс
InputEventCallbackбольше не поддерживается. Интерфейс нельзя было использовать в каком-либо общедоступном API, и он не использовался в коде. (I34a02, b/184003208) - Прекращена поддержка функции
TextLayoutResult/createTextLayoutResult. Это неиспользуемая общедоступная функция, добавленная для тестирования. Эта функция не подходит для API Compose text. Поддержка этой функции прекращена, и она будет удалена. (I80413)
Исправление ошибок
- Исправлены действия прокрутки для специальных возможностей:
ACTION_SCROLL_FORWARD,ACTION_SCROLL_BACKWARD,accessibilityActionScrollLeft,accessibilityActionScrollUp,accessibilityActionScrollRightиaccessibilityActionScrollDown. Вместо того чтобы прокручивать до конца, он будет прокручивать на один экран в заданном направлении. (Ieccb0) - Файлы AndroidManifest из ui-test-manifest и ui-tooling-data теперь совместимы с Android 12 (I6f9de, b/184718994).
Версия 1.0.0-beta04
7 апреля 2021 г.
Выход androidx.compose.ui:ui-*:1.0.0-beta04. Версия 1.0.0-beta04 содержит следующие коммиты.
Изменения в API
- Переименуй файлы
hideSoftwareKeyboardиshowSoftwareKeyboardнаSoftwareKeyboardControllerвhide()иshow()соответственно.- Предоставлен полный интерфейс CompositionLocal для LocalSoftwareKeyboardController, позволяющий задавать его (особенно полезно при тестировании) (I579a6).
- Добавлен API специальных возможностей LiveRegion. Если узел отмечен как динамическая область, сервисы специальных возможностей автоматически уведомят пользователя о ее изменениях (Idcf6f, b/172590946).
- Добавлен параметр TextOverflow.Visible. (Ic8f89)
Исправление ошибок
- Исправлена проблема, из-за которой объекты
LazyColumn/LazyRow, расположенные по краям, неправильно позиционировались после быстрой передачи (Ie4d13, b/183877420). - Теперь
AndroidViewBindingправильно удаляет фрагменты, раздутые с помощьюFragmentContainerView, когдаAndroidViewBindingудаляется из иерархии композиции. (Ib0248, b/179915946) - Теперь
AndroidViewBindingправильно вкладывает фрагменты, созданные с помощьюFragmentContainerView, когдаComposeViewнаходится вFragment. Это позволяет устранить проблемы с сохранением и восстановлением состояния таких фрагментов. (I70eb0, b/179915946) - Теперь Compose ViewBinding зависит от Fragment
1.3.2и после изменений конфигурации всегда показывает фрагменты, раздутые с помощьюFragmentContainerView. (I0743d, b/179915946)
Версия 1.0.0-beta03
24 марта 2021 г.
Выход androidx.compose.ui:ui-*:1.0.0-beta03. Версия 1.0.0-beta03 содержит следующие коммиты:
Изменения в API
- Отложенная проверка зависимостей ViewTree для ComposeView (I8dbbf, b/182466548)
- В функции
swipeUp/swipeDown/swipeLeft/swipeRightвGestureScopeдобавлены необязательные параметрыstartX/endXиstartY/endY. (I49e2d, b/182063305)
Версия 1.0.0-beta02
10 марта 2021 г.
Выход androidx.compose.ui:ui-*:1.0.0-beta02. Версия 1.0.0-beta02 содержит следующие коммиты:
Изменения в API
- Добавлен новый локальный API композиции
LocalSoftwareKeyboardController, который заменит предыдущий интерфейс SoftwareKeyboardController в TextField. (I5951e, b/168778053) - Добавлен новый локальный API композиции
LocalSoftwareKeyboardController, который заменит предыдущий интерфейс SoftwareKeyboardController в TextField. (I84472, b/168778053) - Удалены следующие
SemanticsMatcher:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(If16bd)
- Следующие элементы
SemanticsMatchersпомечены как @ExperimentalTestApi:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(Ia600c)
- Добавлены следующие
SemanticsMatcher:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(I2f502)
Исправление ошибок
- Внедрение ограничений на общедоступное использование экспериментальных API (I6aa29, b/174531520)
androidx.compose.ui:uiбольше не зависит от AppCompat или Fragment. Если вы используете в приложении ComposeView, а также Fragment и/или AppCompat, убедитесь, что у вас установлена версия AppCompat 1.3+ или Fragment 1.3+. Эти версии необходимы для правильной настройки владельцев жизненного цикла и сохраненного состояния, которые требуются для ComposeView. (I1d6fa, b/161814404)- Исправлена ошибка, из-за которой не работал элемент
rememberSaveable { mutableStateOf(0) }, если он использовался в целевом элементе навигации Compose. (I1312b, b/180042685, b/180701630) - Добавлен новый локальный API композиции
LocalSoftwareKeyboardController, который заменит предыдущий интерфейс SoftwareKeyboardController в TextField. (I658b6, b/168778053) - Исправлена редкая ошибка NoSuchElementException в
ComposeRootRegistry'stearDownRegistry()(Iddce1).
Версия 1.0.0-beta01
24 февраля 2021 г.
Выход androidx.compose.ui:ui-*:1.0.0-beta01. Версия 1.0.0-beta01 содержит следующие коммиты:
Это первый выпуск Compose 1.0.0 Beta.
Изменения в API
- В
detectDragGesturesдобавлен обратный вызов onStart (I67269, b/179995594). - Модификаторы для определения размера на основе внутренних параметров больше не являются экспериментальными. (I15744)
- MeasureBlocks был переименован в MeasurePolicy, который стал более удобным. API макетов были обновлены и упрощены для использования MeasurePolicy. (Icab48, b/167662468, b/156751158)
InteractionStateзаменен на[Mutable]InteractionSource- Интерфейсы отвечают за отправку и сбор событий взаимодействия.
- Вместо того чтобы передавать
interactionState = remember { InteractionState() }компонентам, таким какButtonиModifier.clickable(), используйтеinteractionSource = remember { MutableInteractionSource() }. - Вместо
Interaction.Pressed in interactionStateиспользуйте функции расширения для InteractionSource, например InteractionSource.collectIsPressedAsState(). - В сложных случаях можно использовать InteractionSource.interactions, чтобы отслеживать поток взаимодействий. Дополнительную информацию можно найти в документации по InteractionSource и примерах.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Добавление интерфейса AccessibilityMananger и LocalAccessibilityMananger в CompositionLocals (I53520)
- Удалены устаревшие методы LayoutCoordinates. Вместо свойства для positionInParent и boundsInParent теперь используется функция (I580ed, b/169874631, b/175142755).
- Псевдонимы типов заменены на базовые типы:
- Теперь ваш банк –
Pair<Float, Color>, а неColorStop SpanStyleRangeтеперь называется AnnotatedString.Range- Теперь ваш банк –
AnnotatedString.Range<ParagraphStyle>, а неParagraphStyleRange - Теперь ваш банк –
AnnotatedString.Range<String>, а неStringAnnotation - (I8dd1a)
- Теперь ваш банк –
- Создан новый TextInputSession для сеансов ввода из текстовых компонентов низкого уровня, таких как CoreTextField. (I8817f, b/177662148)
- Теперь в Placeable есть measuredSize, представляющий размер, до которого дочерний макет был фактически измерен. Этот размер может не соответствовать ограничениям на измерение. (Ib2729, b/172560206, b/172338608)
- Добавлен модификатор selectionGroup, позволяющий отмечать коллекцию вкладок или переключателей для специальных возможностей (Ie5c29).
defaultFactoryдляcompositionLocalOfиstaticCompositionLocalOfтеперь обязателен, а не необязателен.Это изменение устраняет потенциальную ошибку типа для типов, допускающих значение NULL, для которых не был предоставлен заводской метод по умолчанию. Раньше в этом случае для типа, допускающего значение NULL, возвращалась бы нулевая ссылка.
Для типов, допускающих значение NULL, в качестве фабрики по умолчанию рекомендуется использовать
{ null }.Мы не рекомендуем использовать локальные переменные с типами, допускающими значение NULL, если не удается задать разумное значение по умолчанию. Если подходящего значения по умолчанию нет, лямбда-функция
defaultFactoryдолжна выдать исключение. Однако при этом потребители локали будут неявно зависеть от ее предоставления, что не будет контролироваться системой типов. (Ifbd2a)Удалены устаревшие методы из модулей интерфейса (I646f6).
Изменены названия модификаторов размера. Параметры Modifier.width/height/size были переименованы в requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize были переименованы в width/height/size. (I5b414)
Ресурс
Modifier.tapGestureFilterуже удален. Используйте вместо негоModifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)Частичное использование удалено из системы ввода указателя. Рекомендуемый способ координации частичного использования – Modifier.nestedScroll. (Ie9c9b)
Ориентация перенесена в основной пакет. Класс VelocirtTracker перенесен из ui.gesture в ui.input.pointer. (Iff4a8, b/175294473)
imageResource и vectorResource теперь являются функциями расширения для объектов ImageBitmap и ImageVector соответственно. Удалено
load{Image,Vector,Font}Resourceфункций. (I89130)Удалены AnimationClockObservable и его подклассы. Класс AnimatedFloat удален. (Icde52, b/177457083)
Компонент Providers переименован в CompositionLocalProvider.
- Конструктор Composition больше не принимает параметр key и считается устаревшим.
- currentCompositeKeyHash теперь является composable-свойством верхнего уровня, а не composable-функцией верхнего уровня.
- Объекты CompositionData и CompositionGroup перемещены в пространство имен androidx.compose.runtime.tooling
- ComposableLambda теперь является интерфейсом, а не классом, и больше не имеет параметров типа.
- ComposableLambdaN теперь является интерфейсом, а не конкретным классом, и больше не имеет параметров типа.
- Функция snapshotFlow перенесена в пространство имен androidx.compose.runtime
- Метод слияния SnapshotMutationPolicy больше не является экспериментальным.
- Удалена функция clearRoots верхнего уровня с аннотацией @TestOnly. Он больше не нужен.
- Удалены функции keySourceInfoOf и resetSourceInfo. Они больше не нужны.
- Функция Composer.collectKeySourceInformation удалена. Он больше не нужен.
- Удалены методы isJoinedKey, joinedKeyLeft и joinedKeyRight. Они больше не нужны.
- Различные API верхнего уровня были перемещены и реорганизованы в другие файлы. Из-за семантики класса файла Kotlin это нарушит совместимость на уровне двоичного кода, но не на уровне исходного кода, поэтому для большинства пользователей проблем не возникнет.
- (I99b7d, b/177245490)
ComponentActivity.setContent()удален из compose:ui. Используйте адрес изandroidx.activity:activity-compose:1.3.0-alpha01.viewModel()иLocalViewModelStoreOwnerбыли удалены из compose:ui. Используйте те, что указаны вandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01(I6f36b).Изменения в Modifier.scrollable Теперь вместо класса ScrollableController используется интерфейс Scrollable (I4f5a5, b/174485541, b/175294473).
Удалена поддержка CustomEvens из PointerInputModifier (I02707, b/175294473).
SnapshotStateObserver больше не является экспериментальной функцией (Id2e6a)
Удалены некоторые ранее устаревшие API (Ice5da, b/178633932).
longPressGestureFilter и doubleClickGestureFilter удалены. Используйте Modifier.pointerInput со вспомогательными функциями, например detectTapGestures (I2fedf, b/175294473).
Удален API String.format.Использование этого API в различных методах toString было переработано. (Id1290)
Удалены утверждения dp (I798d2)
Удалена библиотека androidx.compose.runtime:runtime-dispatch (I55feb)
Действия с текстом теперь автоматически проверяют фокус (I13777, b/179648629)
Удалено
runBlockingWithManualClock(I15cdc, b/179664814)Позиция прокрутки в Modifier.verticalScroll()/horizontalScroll() теперь представлена целыми числами (I81298)
Класс FlingConfig переименован в FlingBehavior и теперь позволяет настраивать анимацию приостановки, а не использовать заданные значения Decay. (I02b86, b/175294473)
Добавлена вспомогательная функция, которая позволяет задать одно и то же действие для всех обратных вызовов ImeAction (I63447, b/179226323).
Удален обратный вызов SoftwareKeyboardController из всех текстовых полей. Вскоре будет добавлен новый API. (Iae869, b/168778053)
Классы FontSpan и FontWeigthStyleSpan больше не используются и удалены. (Ie5b56, b/177423444)
В Material API внесены следующие изменения:
- В Top/BottomAppBar добавлен параметр contentPadding, позволяющий настраивать отступы по умолчанию.
- Параметры в BackdropScaffold были переупорядочены в соответствии с рекомендациями API, согласно которым обязательные параметры должны идти перед необязательными.
- Параметр
iconв BottomNavigationItem перемещен послеselectedиonClick. - Параметр
alwaysShowLabelsв BottomNavigationItem переименован вalwaysShowLabel. - В некоторых компонентах параметры
bodyContentбыли переименованы вcontent. - Параметры в
ButtonDefaults.buttonColors()переставлены местами. Обратите внимание, что тип параметров не изменился, поэтому в коде не возникнет ошибок. Однако вам нужно будет вручную изменить порядок параметров или использовать именованные параметры, иначе код будет работать не так, как раньше. - В
darkColors()добавлен параметрsecondaryVariant. Обычно этот цвет совпадает с цветомsecondaryв темной теме, но мы добавили его для единообразия и возможности дальнейшей настройки. - Из общедоступного API удалены ElevationDefaults и animateElevation(), поскольку они не пользовались популярностью.
- Поле
onValueChangeEndвSliderпереименовано вonValueChangeFinishedи стало допускать нулевые значения. - Параметр
textвSnackbarпереименован вcontentдля единообразия. - Добавлен параметр
contentPaddingвDropdownMenuItem, чтобы можно было настраивать отступы по умолчанию, аcontentстал расширениемRowScope. - Название "
ModalDrawerLayout" изменено на "ModalDrawer". - Название "
BottomDrawerLayout" изменено на "BottomDrawer". - (I1cc66)
Исправление ошибок
- Добавлен API для использования ресурсов AnimatedVectorDrawable в Compose. Используйте animatedVectorResource, чтобы загрузить XML-файл
<animated-vector>как AnimatedImageVector и анимировать его с помощью painterFor (I8ea91). - Добавлен новый локальный API LocalSoftwareKeyboardController для композиции, который заменяет предыдущий интерфейс SoftwareKeyboardController в TextField. (I658b6, b/168778053)
Версия 1.0.0-alpha12
10 февраля 2021 г.
Выход androidx.compose.ui:ui-*:1.0.0-alpha12. Версия 1.0.0-alpha12 содержит следующие коммиты:
Изменения в API
- Из UiApplier удалена поддержка ViewGroups. Удалены устаревшие функции emitView. (Ifb214)
- Теперь для Modifier.pointerInput требуются ключи remember, чтобы указывать, когда сопрограмма обнаружения ввода указателя должна перезапускаться для новых зависимостей. (I849cd)
- Элемент CompositionReference переименован в CompositionContext (I53fcb).
- Параметр "Границы" переименован в DpRect (I4b32a)
- Изменение в тестировании: функция hasText() будет проверять как введенный текст, так и текст ярлыка, подсказки или заполнителя в текстовом поле (Iab803)
- Компонуемые функции viewModel() и LocalViewModelStoreOwner были перенесены в androidx.lifecycle.viewmodel.compose. Чтобы использовать его, добавьте отдельную зависимость androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. (I7a374)
- Разрешить нулевое значение для действия в AccessibilityAction, изменить тип action label в AccessibilityAction и CustomAccessibilityAction с CharSequence на String (I0dc82)
- Чтобы привести названия в соответствие с ImageBitmap и ImageVector, ImagePainter был переименован в BitmapPainter, чтобы параллельно использовать VectorPainter. (Iba381, b/174565889)
- Улучшены API для тестирования подстрок: теперь подстрока передается в качестве аргумента (Icbe78).
- Добавлен
Modifier.focusOrder(), который принимает FocusRequester без указания пользовательского порядка фокуса в лямбда-выражении. Это полезно, когда нужно указать только ссылку, но не задавать порядок перехода между элементами в composable-функции (I4f52a, b/179180978). - Метод ComponentActivity.setContent перенесен в androidx.activity.compose.setContent в модуле androidx.activity:activity-compose. (Icf416)
- Из нескольких классов, где они редко использовались, удалены методы деструктуризации и copy(). (I26702, b/178659281)
- Всплывающее окно теперь зависит от платформы. Класс AndroidPopupProperties переименован в PopupProperties, а значение
isFocusableперенесено в параметрfocusableклассаPopupProperties(Ieeea5). - Диалоговое окно теперь зависит от платформы. Класс AndroidDialogProperties переименован в DialogProperties. (I4ef69, b/179138130)
- Сделан внутренним класс LayoutNode (I8a7b1, b/175103944)
- Функция Constraints.enforce была заменена на Constraints.constrain. (I8b8ea)
- Поддержка loadFontResource прекращена. Вместо них используйте fontResource. imageResource, loadImageResource, vectorResource и loadVectorResource устарели. Вместо него используйте painterResource. (I6b809)
- В целях повышения производительности семантика ScrollAxisRange теперь принимает лямбда-функции, возвращающие значения типа Float, вместо прямых значений типа Float. (If4a35, b/178657186)
- Добавлена семантика EditableText, чтобы отмечать редактируемый текст в текстовом поле для специальных возможностей, а также соответствующие методы тестирования для проверки семантики (I8e07a).
- Сделаны внутренними классы OwnerLayer, OwnerScope и OwnerSnapshotObserver (I4ffaf, b/175103944)
- Метод toIntPx() был переименован в roundToPx(). (I9b7e4, b/173502290)
- Класс IntBounds был переименован в IntRect, а API был улучшен. (I1f6ff)
- Мы обновили Snapshot API, чтобы он лучше соответствовал рекомендациям по работе с API и чтобы скрыть классы внутренней реализации из общедоступного API. (Id9e32)
- Добавлены семантические действия для развертывания и сворачивания. Добавлены состояния expand и halfExpand в ModalBottomSheetState (Ib5064)
- Поддержка Modifier.dragGestureFilter прекращена. Вместо него используйте
Modifier.pointerInput { detectDragGestures (...)}. Также можно использовать Modifier.draggable для перетаскивания по одной оси (I0ba93, b/175294473). - Переименованы объекты Ambients в соответствии с переименованием Ambient -> CompositionLocal. Раньше объекты Ambients назывались AmbientFoo, а теперь объекты CompositionLocals называются LocalFoo. (I2d55d)
- Удален устаревший компонент BaseTextField. Используйте BasicTextField. (I71368)
- Выделение перемещено в основание. (I7892b)
- Как и в случае с удалением composable-функции
state { 0 }и продвижением функцииremember { mutableStateOf(0) }, мы удалим composable-функциюsavedInstanceState { 0 }. Вместо этого используйтеrememberSaveable { mutableStateOf(0) }. Если тип, используемый в MutableState, можно сохранить в Bundle, то состояние будет сохраняться и восстанавливаться автоматически. Если раньше вы передавали специальный объект сохранения, теперь вам нужно использовать новую перегрузку функции rememberSaveable с параметромstateSaver. Пример использования:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }(Ib4c26, b/177338004) - Добавлена семантика пароля для специальных возможностей (I231ce)
- Добавлен ProgressBarRangeInfo.Indeterminate, чтобы отмечать неопределенные индикаторы выполнения для специальных возможностей (I6fe05).
- Утилиты
emptyContent()и(@Composable () -> Unit).orEmpty()устарели, поскольку больше не влияют на эффективность и не имеют ценности (I0484d). snapshotFlowиwithMutableSnapshotбольше не являются экспериментальными функциями (I6a45f)- Теперь можно закрывать окна с перекомпоновкой. Закрытые рекомпоновщики продолжат рекомпозицию, пока не завершатся дочерние сопрограммы. Функция Recomposer.shutDown переименована в cancel, чтобы отличать ее от функции close. (Ib6d76)
- UiSavedStateRegistry переименован в SaveableStateRegistry, AmbientUiSavedStateRegistry – в AmbientSaveableStateRegistry. Оба класса перемещены в пакет androidx.compose.runtime.saveable. (I30224)
- Артефакт androidx:compose:runtime:runtime-saved-instance-state был переименован в androidx:compose:runtime:runtime-saveable (I6dcac).
- Удалены многие устаревшие API в пакете ui. (I2f2dc)
- Объект compose:runtime-dispatch больше не поддерживается. MonotonicFrameClock теперь находится в compose:runtime, а AndroidUiDispatcher – в compose:ui. (Ib5c36)
- Классы Outline.* больше не являются классами данных (I4879e, b/178001427).
- Удален символ
view.captureToImage()без замены. (I7fcd2) - Добавлен API ColorMatrix, который используется для изменения значений RGB исходного контента. API ColorFilter переработан в интерфейс и теперь соответствует реализации PathEffect. (Ica1e8)
- Добавьте параметр layoutDirection в метод createOutline класса Shape. Это позволяет создавать фигуры с учетом направления макета. (I57c20, b/152756983)
- onImeActionPerformed устарел. Используйте KeyboardActions (If0bbd, b/179071523).
- Добавлен элемент контекста сопрограммы
InfiniteAnimationPolicy, который будет применяться в бесконечных анимациях. По умолчанию правила не устанавливаются, за исключением случаев, когда тестирование проводится с помощьюComposeTestRule. (I50ec4, b/151940543) - canDrag удален из Modifier.scrollable. (Id66e7, b/175294473)
- Переименовано свойство LayoutCoordinates.parentCoordinates в LayoutCoordinates.parentLayoutCoordinates, чтобы добавить новое свойство parentCoordinates. Свойство parentCoordinates теперь предлагает LayoutCoordinates родительского модификатора. Это позволит более полно использовать функции onSizeChanged() и onGloballyPositioned() (Idfbfd, b/177926591).
- tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter и pressIndicaitonGestureFilter больше не поддерживаются. Вместо этого используйте Modifier.clickable или Modifier.pointerInput с функцией detectTapGestures. (I6baf9, b/175294473)
- Метод unregisterProvider класса SaveableStateRegistry был удален. Теперь registerProvider() возвращает объект SaveableStateRegistry.Entry, который можно использовать для отмены регистрации (Ic4274, b/178583739).
- Функция rememberSavedInstanceState() переименована в rememberSaveable() и перенесена в пакет androidx.compose.runtime.saveable. (I1366e, b/177338004)
- Удалены CoreText и CoreTextField из общедоступного API
- Удалена устаревшая перегрузка SelectionContainer
- (I99c19)
- Тесты, в которых Compose используется в иерархиях, добавляемых или удаляемых непосредственно в WindowManager, теперь более стабильны. (Ie81ed, b/175765614)
- Удален Recomposer.current(). Теперь [Abstract]ComposeView по умолчанию создает Recomposer с областью действия окна лениво, используя ViewTreeLifecycleOwner для окна. Рекомпозиция и такты анимации на основе withFrameNanos приостанавливаются, когда останавливается жизненный цикл хоста. (I38e11)
- Recomposer.runningRecomposers теперь предлагает глобальный StateFlow только для чтения RecomposerInfo для наблюдения за текущим состоянием композиции в процессе. Рекомендуем использовать этот API вместо Recomposer.current(), который теперь считается устаревшим. (If8ebe)
- Saver, listSaver(), mapSaver(), autoSaver были перенесены из androidx.compose.runtime.savedinstancestate в androidx.compose.runtime.saveable (I77fe6)
- EditCommands принимает AnnotatedString. Однако это изменение касается только API, а редактирование текста с несколькими стилями пока не реализовано. (I4c3ea)
- Удалены параметры "Время работы" и "Продолжительность". (Ib9bf4, b/177420019)
- Метод CompositionData.asTree() и связанные с ним API перенесены в отдельный модуль ui-tooling-data и помечены как экспериментальные (Ic95b8)
- Параметры RounderCornerShape, CutCornerShape и CornerBasedShape были переименованы с left/right на start/end, чтобы поддерживать автоматическое зеркальное отображение формы в направлении справа налево. Классы AbsoluteRounderCornerShape и AbsoluteCutCornerShape были добавлены для случаев, когда автоматическое зеркальное отражение нежелательно. (I61040, b/152756983)
API, на который ориентирован плагин компилятора Compose, был переработан. Теперь вместо конкретного класса используется интерфейс. Кроме того, в интерфейсе больше не используется параметр типа.
Это внутреннее изменение, которое не должно повлиять на совместимость исходного кода, но является критическим изменением для двоичного кода. (I3b922, b/169406779)
Удалена непреднамеренно общедоступная функция StringBuilder.deleteAt (Id6ed9)
Исправление ошибок
- ComposeView, размещенные в иерархиях представлений, которые являются дочерними элементами другого композиционного элемента, теперь содержат дочерние композиции своих предков (I92883).
- Обновлен API imageFromResource в Compose, чтобы при загрузке объектов ImageBitmap повторно использовался кеш ресурсов drawable. (If3627, b/178751994)
Версия 1.0.0-alpha11
28 января 2021 г.
Выход androidx.compose.ui:ui-*:1.0.0-alpha11. Версия 1.0.0-alpha11 содержит следующие коммиты:
Изменения в API
- Компонент WithConstraints был переработан и переименован в BoxWithConstraints. Теперь он находится в foundation.layout. (I9420b, b/173387208)
- Key.DPadUp больше не поддерживается. Вместо него используйте Key.DirectionUp. (Iab335, b/177954892)
- Интерфейс владельца теперь внутренний. (If8e35)
- Добавлен API FocusManager.moveFocus(), позволяющий программно перемещать фокус. (I045cb, b/177681839)
- Изменено значение PopupPositionProvider, чтобы использовать координаты относительно окна, а не глобальные координаты. Переименован параметр parentGlobalBounds в anchorBounds, а параметр windowGlobalBounds изменен на windowSize: IntSize (I2994a).
- Поля "Продолжительность" и "Время работы" будут заменены на поле "Длинные миллисекунды". Это позволит убрать зависимость ввода указателя от этих классов. (Ia33b2, b/175142755, b/177420019)
- AmbientSavedStateRegistryOwner был добавлен аналогично уже существующим AmbientLifecycleOwner и AmbientViewModelStoreOwner (I9a3e8, b/176756365).
- Обновлен API векторной графики, чтобы поддерживать анализ тонирования, примененного к корню векторной графики. (Id9d53, b/177210509)
- В PointerInputChange добавлен параметр toolType, чтобы различать устройства (Iac787, b/175142755)
- AmbientWindowManager переименован в AmbientWindowInfo (I2686a, b/177084714, b/177084983)
- Устаревшие методы глобальных координат заменены новыми методами координат на основе окон. (Iee284)
- Добавлен модификатор Modifier.toolingGraphicsLayer, который добавляет модификатор графического слоя при включении проверки. (I315df)
- Метод FocusRequester.createRefs теперь помечен как экспериментальный, поскольку может быть изменен. (I2d898, b/177000821)
- Поле SemanticsPropertyReceiver.hidden было переименовано в invisibleToUser и отмечено аннотацией @ExperimentalComposeUiApi. AccessibilityRangeInfo переименовано в ProgressBarRangeInfo. stateDescriptionRange переименовано в progressBarRangeInfo. AccessibilityScrollState переименовано в ScrollAxisRange. horizontalAccessibilityScrollState переименовано в horizontalScrollAxisRange. verticalAccessibilityScrollState переименовано в verticalScrollAxisRange. (Id3148)
- Удален класс PointerInputData. Класс PointerInputChange был изменен, чтобы включать все поля класса PointerInputData. Классы PointerInputEvent и PointerInputEventData стали внутренними, поскольку они не используются ни в одном общедоступном API. (Ifff97, b/175142755)
- В реализацию GraphicsLayerScope добавлена функция density, которая позволяет преобразовывать единицы dp в пиксели. (Ied528, b/176819695)
- Обновлен API матрицы, чтобы он следовал порядку строк и предоставлял константы индекса для преобразования между разными представлениями матрицы в соответствии с логикой преобразования фреймворка между SkMatrix и Matrix4. (I432e6)
- Удалены экспериментальные методы monotonicFrameAnimationClockOf (Ib753f, b/170708374).
- Переместите String.fintPrecedingBreak и String.fingFollowingBreak в InternalTextApi. (I657c4)
- Функция androidx.compose.ui.util.isSurrogatePair удалена из общедоступного API. (Ia9494)
- Переименовано поле TransformedText.transformedText в TransformedText.text.
- TransformedText больше не является классом данных (Ie672a)
- Удален параметр
data classиз следующих классов:- InlineTextContent
- LocaleList (I605c7)
- Следующие классы больше не являются классами данных:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- Изменен интерфейс VisualTransformation на функциональный (I3bba4).
- Добавлен тип параметра "Ссылка на функцию" (I5e1bd).
- Добавление преобразованных границ в InspectorNode (Ice42f)
Исправление ошибок
- onCommit, onDispose и onActive устарели. Вместо них теперь используются API SideEffect и DisposableEffect (If760e).
Изменения в фабричных функциях для Font/FontFamily/Typeface
- Добавлены фабричные функции, начинающиеся с заглавной буквы
- Прекращена поддержка предыдущих фабричных функций с первой буквой в нижнем регистре.
- Новые фабричные функции возвращают FontFamily вместо подклассов
- Скрыты конструкторы подклассов, чтобы их можно было создавать только с помощью фабричных функций.
- Переименован метод Font.asFontFamily в Font.toFontFamily (I42aa7).
Добавлен тег
ComposeContentTestRule, который расширяет тегComposeTestRuleи определяет тегsetContent, удаленный из тегаComposeTestRule. Добавлен фабричный методcreateEmptyComposeRule(), который возвращаетComposeTestRuleи не запускает Activity. Используйте этот параметр, если хотите запустить действие во время тестирования, например с помощьюActivityScenario.launch(I9d782, b/174472899).animateAsState теперь называется animateFooAsState, где Foo – тип анимируемой переменной, например Float, Dp, Offset и т. д. (Ie7e25).
В изображения и значки добавлен параметр описания контента. Используется для предоставления описания сервисам специальных возможностей (I2ac4c).
Удалите displaySize, так как его следует избегать. Обычно лучше использовать размер onRoot() или хотя бы размер окна. (I62db4)
OnSizeChanged сообщал о размере содержимого макета. Теперь он сообщает размер в том положении, в котором находится в цепочке модификаторов. (I36b78, b/177562900)
API emit() и все его перегрузки объявлены устаревшими и переименованы в ComposeNode. API идентичны, но имеют разные названия, чтобы соответствовать правилам именования Compose (I4137b).
TextFieldValue принимает AnnotatedString. Однако это изменение касается только API, и редактирование текста с несколькими стилями пока не реализовано.
- Удален параметр
initialиз конструктора EditingBuffer. (I326d5)
- Удален параметр
invalidate и compositionReference() теперь считаются устаревшими. Вместо них следует использовать currentRecomposeScope и rememberCompositionReference. (I583a8)
Класс AnnotatedString теперь наследуется от kotlin.CharSequence. Поэтому length и subSequence теперь являются функциями экземпляра, а функции расширения удалены. (Iaf429)
RememberObserver заменяет CompositionLifecycleObserver, который теперь считается устаревшим.
RememberObserver– это замена дляCompositionLifecycleObserverс измененной семантикой и переименованными методами. Переход на новый API можно выполнить автоматически для объектов, которые запоминаются только один раз. Это рекомендуемый подход. Однако если ссылка была упомянута в композиции несколько раз, функцияonRememberedвызывается для каждой ссылки, а функцияonEnter– только один раз.onEnterвызывался несколько раз, если объект использовался в подкомпозициях, таких какWithConstraintsиScaffold, поэтому однократный вызовonEnterне гарантировал надежность, и он был удален дляRememberObserver.RememberObserverдобавляетonAbandoned, который вызывается, если экземплярRememberObserverвозвращается из обратного вызова, переданного вremember, но не был сохранен в состоянии композиции и, следовательно, никогда не будет вызванonRemembered. Это может произойти, если исключение завершает композицию до ее завершения или композиция отбрасывается, поскольку состояние, для которого она создавалась, больше не является текущим или больше не требуется. Если экземплярRememberObserver, следующий за рекомендацией по использованию одной ссылки, отслеживает внешний ресурс, тоonForgottenиonAbandonedуказывают, что ресурс больше не нужен. Если объект отслеживает начало работы или выделение ресурсов вonRemembered,onAbandonedможно игнорировать, поскольку он не будет вызываться, если вызываетсяonRemembered. (I02c36)Устаревшие арифметические операции с двумя или более объектами TextUnit. Устаревшие функции TextUnit.Sp и TextUnit.Em заменены функциями расширения, такими как Int.sp и Int.em. (I48369)
Ресурсы в библиотеках, в которых не указаны общедоступные ресурсы (например, в файле public.xml), теперь по умолчанию являются частными. (Ia1dcc, b/170882230)
ScrollableColumn/Row были объявлены устаревшими. Использование ScrollableColumn менее эффективно по сравнению с LazyColumn, если у вас большой прокручиваемый контент, поскольку с помощью LazyColumn мы можем составлять/измерять/рисовать только видимые элементы. Чтобы пользователи не выбирали неэффективные способы, мы решили прекратить поддержку ScrollableColumn и ScrollableRow и рекомендовать вместо них LazyColumn и LazyRow. Пользователи могут отказаться от ленивой загрузки и использовать модификаторы напрямую, например так: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083).
Новый фабричный метод
items(count: Int)для области действия LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)иitemsIndexed(items: List)теперь являются функциями расширения, поэтому их нужно импортировать вручную. Новые перегрузки расширений для массивов:items(items: Array)иitemsIndexed(Array)(I803fc, b/175562574)Используйте ImeAction.None вместо ImeAction.NoAction.
- Используйте ImeAction.Default вместо ImeAction.Unspecified (Ie1bcc)
Использование TestCoroutineDispatcher при тестировании (I532b6)
Функция TextInputService.onStateUpdated переименована в updateState (Id4853)
Переход на основе TransitionDefinition устарел (I0ac57)
Удален параметр TextUnitType.Inherit. Вместо него используйте TextUnitType.Unspecified. (I9ff64)
Версия 1.0.0-alpha10
13 января 2021 г.
Выход androidx.compose.ui:ui-*:1.0.0-alpha10. Версия 1.0.0-alpha10 содержит следующие коммиты:
Критическое изменение
Реструктуризация внутреннего API компилятора позволяет объединять изменения узлов, созданных в результате композиции, в фазу "применить изменения" композиции после завершения всех функций
@Composable.Это изменение поведения, которое может повлиять на код приложения, поскольку узлы больше не доступны из внутренних и экспериментальных API до тех пор, пока не будут применены изменения. Обычно это можно обойти, заключив код с такими зависимостями в composable-функцию
SideEffect, чтобы отложить выполнение кода до тех пор, пока узлы не будут созданы и инициализированы. (I018da)
Изменения в API
- Добавлен модификатор Modifier.focusOrder(), который можно использовать, чтобы задать порядок перехода фокуса (I90cf5, b/175899543, b/170155556, b/170155429).
- Удалено устаревшее использование focusObserver. Вместо него используйте onFocusChanged или onFocusEvent (I3ecb9, b/175156387).
- Изменения в EditOperations API
- Переименован класс EditOperation в EditCommand.
- Добавлен суффикс Command для конкретных реализаций EditOperation
- EditCommand больше не являются классами данных
- Функция EditOperation.process переименована в applyTo
- Переименован InputEventListener в InputEventCallback
- (I0a366)
- Удалены неиспользуемые функции PxSquared, PxCubed и PxInverse. Функция Size.center() теперь является свойством. (I973f7)
- Модуль ui-test теперь может настраивать создание Recomposer для тестируемых интерфейсов (Ibebd8).
- Измененная скорость, состоящая из компонентов и математических операций. (Ib0447)
- Переименовано с
@ExperimentalTestingна@ExperimentalTestApi, чтобы соответствовать аналогичным экспериментальным аннотациям API (Ia4502, b/171464963). - Функция Color.useOrElse() переименована в Color.takeOrElse() (Ifdcf5)
- Удалены неиспользуемые классы DpInverse, DpSquared и DpCubed. (I4d62b)
- Свойство Constraints#satisfiedBy переименовано в isSatisfiedBy. (I9cf5c)
- Добавьте обратный вызов, чтобы уведомлять владельца об изменении границ layoutnode. (I72fd1)
- Добавлены функции isSpecified, isUnspecified и useOrElse для встроенных классов с константой Unspecified. (I93f7b, b/174310811)
Расширение API [Abstract]ComposeView, чтобы разрешить повторное использование представлений на основе Compose, удаление их композиции и повторное создание позже. Добавлены API для установки и обнаружения Recomposer с областью действия окна и CompositionReference для создания дочерних композиций.
Добавьте ViewCompositionStrategy для настройки стратегии удаления композиции [Abstract]ComposeViews; по умолчанию удаление выполняется при отсоединении окна. (I860ab)
Удален общедоступный API Any.identityHashCode() (I025d7).
Удален API toStringAsFixed в пользу прямого использования String.format. (Iaba6b)
Добавьте переключатель в файл Strings.kt (I4a5b7, b/172366489).
Перемещен nativeClass в модуль ui и сделан внутренним. В реализациях метода equals вместо nativeClass теперь используется "is MyClass". (I4f734)
Методы Modifier.focus() и Modifier.focusRequester() больше не поддерживаются. Вместо них используйте Modifier.focusModifier() и Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
Добавлен метод SelectionRegistrar.notifySelectableChange, который позволяет уведомлять SelectionManager об изменениях в Selectable. (I6ff30, b/173215242)
Добавлено свойство Outline.bounds, позволяющее получить ограничивающий прямоугольник для различных реализаций контура. (I16e74, b/175093504)
Устаревший класс TestUiDispatcher. Используйте Dispatchers.Main (Ic171f, b/175385255).
Классы ImeOptions и KeyboardOptions больше не являются классами данных (I3c898, b/168684531).
Изменения в VisualTransformation API
- Переименован параметр OffsetMap в OffsetMapping
- Переименовано поле OffsetMapping.identityOffsetMap в OffsetMapping.Identity
- PasswordTransformation больше не является классом данных
- Перемещен OffsetMapping в отдельный файл
- (I0bdf3)
Переименован параметр Position в DpOffset и удалена функция getDistance() (Ib2dfd).
Функция Dp.isFinite() изменена на значение Dp.isFinite (I50e00)
Исправление ошибок
- Теперь Recomposer предоставляет поток своего текущего состояния, позволяя отслеживать его активность и активность связанных эффектов. (Ifb2b9)
- Теперь доступ к событию keyEvent можно получить через keyEvent.nativeKeyEvent (I87c57, b/173086397).
- Функция
animate()заменена наanimateAsState(), которая возвращаетState<T>вместоT. Это позволяет повысить эффективность, поскольку область аннулирования можно сузить до места, где считывается значение State. (Ib179e) - Добавлен API для роли Semantics и параметр Role для SemanticsModifier, который можно использовать в элементах, доступных для нажатия, выбора и переключения. Изменено значение Modifier.progressSemantics, чтобы его можно было использовать в Slider. (I216cd)
- Новый API на основе сопрограмм
Animatable, который обеспечивает взаимную исключительность анимаций.- Новый класс DecayAnimationSpec для поддержки многомерной анимации затухания
- (I820f2, b/168014930)
Версия 1.0.0-alpha09
16 декабря 2020 г.
Выход androidx.compose.ui:ui-*:1.0.0-alpha09. Версия 1.0.0-alpha09 содержит следующие коммиты:
Изменения в API
- Удалено устаревшее поле KeyEvent.Alt. Используйте вместо него KeyEvent.isAltPressed. (Idd695)
- Modifier.keyInputFilter и Modifier.previewKeyInputFilter устарели. Вместо них используйте Modifier.onKeyEvent и Modifier.onPreviewKeyEvent (Idbf1b, b/175156384).
- Modifier.focusObserver больше не поддерживается. Используйте Modifier.onFocusChanged или Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
- Для API, приостанавливающих ввод с помощью указателя, переименованы HandlePointerInputScope в AwaitPointerEventScope и handlePointerInput() в awaitPointerEventScope(). (Idf0a1, b/175142755)
- Autofill API теперь является экспериментальным и требует согласия на использование (I0a1ec)
- Добавление объявлений деструктуризации для создания экземпляров FocuSRequester (I35d84, b/174817008)
- accessibilityLabel переименован в contentDescription. accessibilityValue переименован в stateDescription. (I250f2)
- Из API приостановки ввода указателя удалены специальные события (Ia54d5, b/175142755).
- Добавлены новые функции в SelectionRegistrar, а также переименована функция onPositionChange в notifyPositionChange. (Ifbaf7)
- Добавлено больше внутренних элементов LayoutNode (I443c6)
- LayoutInfo был добавлен для использования в инструментах и тестировании (I9b190).
- AndroidOwner made internal (Ibcad0, b/170296980)
- Удалена аннотация ExperimentalPointerInput (Ia7a24).
- Добавлена вложенная система прокрутки. Подробнее о Modifier.nestedScroll можно узнать в I36e15 и b/162408885.
- Метод subcomposeInto(LayoutNode) стал внутренним (Id724a)
Интерфейс
Applierбыл изменен, чтобы упростить создание дерева снизу вверх, а не сверху вниз.Метод
insert()переименован вinsertTopDown().Добавлен новый метод
insertBottomUp().Приложение вставляет узлы в редактируемое дерево, используя
insertTopDown()илиinsertBottomUp()в зависимости от того, что работает лучше.Некоторые деревья, например
LayoutNodeиView, гораздо эффективнее строить снизу вверх, чем сверху вниз. До этого изменения для реализации подхода "снизу вверх" требовался стек вставок, который нужно было скопировать в каждый прикладной модуль, которому для повышения производительности требовалась конструкция "снизу вверх". ТеперьApplierпереопределяетinsertBottomUp(), чтобы создать дерево снизу вверх, аinsertTopDown()– чтобы создать дерево сверху вниз. (Icbdc2)В AndroidDialogProperties добавлены свойства dismissOnBackPress и dismissOnClickOutside. Они позволяют настроить, когда будет вызываться лямбда-функция onDismissRequest диалогового окна. (If5e17)
Добавлен API painterResource для непрозрачной загрузки объектов Painter из растровых форматов (например, PNG) или VectorDrawable. Пользователям больше не нужно заранее определять тип объекта. Они могут вызвать этот метод, чтобы получить объект Painter для использования в композициях Image или модификаторах painter. (I2c703, b/173818471)
Добавлен метод Modifier.clearAndSetSemantics, позволяющий очистить семантику дочерних элементов и задать новую. (I277ca)
Перемещен ContentDrawScope в модуль ui-graphics, чтобы он находился рядом с DrawScope. (Iee043, b/173832789)
Представлен графический API PathEffect, позволяющий добавлять различные узоры к фигурам с обводкой. Устаревшее использование NativePathEffect в пользу реализации PathEffect с помощью expect/actual. (I5e976, b/171072166)
Добавлены интерфейсы IdlingResource для Compose как поддерживаемый Compose вариант ресурсов ожидания Espresso. Их можно зарегистрировать и отменить регистрацию с помощью ComposeTestRule (I433f3).
Удалена глобальная регистрация и отмена регистрации ComposeIdlingResource и глобальная регистрация и отмена регистрации часов в ComposeIdlingResource (I32660).
Исправление ошибок
- Лямбда-выражения в модификаторах смещения теперь возвращают IntOffset, а не Float. (Ic9ee5, b/174137212, b/174146755)
Удалены SlotTable, SlotReader и SlotWriter из общедоступного API. Ранее они были помечены как InternalComposeAPI. Теперь они встроены в модуль создания писем.
Классы CompositionData и CompositionGroup были добавлены в качестве замены для ui-tooling API, чтобы извлекать информацию о композиции. Эти функции являются общедоступными, но не предназначены для использования вне API инструментов интерфейса, поскольку предоставляют необработанную информацию, которую интерпретирует API инструментов интерфейса (I31a9c).
Изменен класс ShaderBrush, чтобы экземпляр шейдера создавался только при наличии информации о размере среды рисования. Это полезно для определения градиентов, которые занимают все границы отрисовки composable-функции во время композиции, без необходимости реализовывать собственные реализации DrawModifier.
Устаревшие API конструктора функций градиента в пользу методов фабрики для объекта Gradient. (I511fc, b/173066799)
Удалены LazyColumnFor, LazyRowFor, LazyColumnForIndexed и LazyRowForIndexed. Используйте LazyColumn и LazyRow вместо Column и Row (I5b48c)
Устаревший метод BuildCompat.isAtLeastR (Idb37e)
Добавлена фабричная функция buildAnnotatedString для создания AnnotatedString. Прекращена поддержка функции annotatedString builder. (Idfe0b)
Удалены методы расширения для типов Float и Double, позволяющие преобразовывать значения в радианы. Перемещено в частную функцию в реализации PathParser которая была единственным местом, где она использовалась (I25f52)
Версия 1.0.0-alpha08
2 декабря 2020 г.
Выход androidx.compose.ui:ui-*:1.0.0-alpha08. Версия 1.0.0-alpha08 содержит следующие коммиты:
Изменения в API
- Добавление семантического действия "Закрыть" (I2b706)
- API DrawModifier перенесены из пакета androidx.compose.ui в пакет androidx.compose.ui.draw. Создан файл DrawModifierDeprecated.kt, в котором содержатся псевдонимы типов и вспомогательные методы, которые помогут перейти с устаревших API на текущие. (Id6044, b/173834241)
- Переименовано Modifier.drawLayer в Modifier.graphicsLayer. Также обновлены связанные классы до GraphicsLayer в соответствии с отзывами об API. (I0bd29, b/173834241)
- Добавлены новые методы placeable.placeWithLayer() и placeable.placeRelativeWithLayer(), которые позволяют размещать дочерние элементы с помощью специальных макетов и модификаторов макетов, добавляя графический слой для их отрисовки. Во-первых, мы можем оптимизировать перерисовку, чтобы при перемещении дочернего элемента не приходилось перерисовывать его содержимое. Во-вторых, мы можем применять преобразования отрисовки для дочернего элемента (Ibd8f6, b/170296989, b/171493718, b/173030831).
<T>был удален из объявления SubcomposeLayout. Теперь его можно использовать без указания типа. (Ib60c8)- Добавлены API Modifier.scale/rotate
для удобства работы с drawLayer.
- Название "
Modifier.drawOpacity" изменено на "Modifier.alpha" - Переименован источник
Modifier.drawShadowвModifier.shadow(I264ca, b/173208140)
- Название "
- Поля uptime и position в PointerInputData теперь не могут быть пустыми. (Id468a)
- Теперь MaterialTheme задает правильные цвета для маркеров и фона выделения. В приложениях, не использующих Material Design, можно вручную задать цвета выделения с помощью AmbientTextSelectionColors. (I1e6f4, b/139320372, b/139320907)
- Добавлен метод WindowManager.isWindowFocused, позволяющий проверить, находится ли окно хоста в фокусе, и WindowFocusObserver, который предоставляет обратный вызов onWindowFocusChanged. (I53b2a, b/170932874)
- Обновленный API TransformOrigin теперь поддерживает синтаксис деструктуризации, чтобы возвращать
pivotFractionXиpivotFractionYкакcomponent1иcomponent2(If43c4, b/173586560). - Добавлена проверка lint для названий и позиций параметров лямбда-функций, чтобы обеспечить соответствие рекомендациям Compose.
Также некоторые API, в которых в качестве названия для лямбда-функции использовался символ
children, были перенесены наcontentв соответствии с проверкой и рекомендациями. (Iec48e) - Добавлен API, позволяющий проверить, были ли нажаты клавиши-модификаторы Alt, Ctrl, Meta или Shift при отправке события нажатия клавиши. (I50ed9)
- Добавлена новая перегрузка
Modifier.drawLayer(). Он принимает лямбда-блок в новом GraphicsLayerScope, где вы определяете параметры слоя таким образом, чтобы при изменении состояния можно было пропустить повторную композицию и перекомпоновку. Модификатор DrawLayerModifier теперь является внутренним. Это сделано для того, чтобы перенести его логику в метод placeable.placeWithLayer() модификатора LayoutModifier (I15e9f, b/173030831). - Устаревшие функции Ambient с суффиксом
Ambientбыли заменены новыми свойствами с префиксом Ambient, соответствующими другим функциям Ambient и рекомендациям по использованию API Compose. (I33440) - Объект "
androidx.compose.ui.text.Typeface" перемещен вandroidx.compose.ui.text.font.Typeface(Ic2b81) - Аргумент mergeAllDescendants был переименован в mergeDescendants. (Ib6250)
- Новый детектор жестов перетаскивания, приостанавливающий API ввода указателя, включая блокировку ориентации. (Icef25)
- Переименован VectorAsset в ImageVector. Перемещен и переименован VectorAsset в Builder, чтобы стать внутренним классом ImageVector в соответствии с рекомендациями по API. Добавлен псевдоним типа VectorAssetBuilder для ссылки на ImageVector.Builder для совместимости. (Icfdc8)
- Переименованы ImageAsset и связанные с ним методы в ImageBitmap. (Ia2d99)
- Добавлен параметр zIndex для функции place() из PlacementScope, чтобы Modifier.zIndex() работал как LayoutModifier, а любой макет мог задавать zIndex для дочерних элементов прямо в блоке размещения (I711f7, b/171493718).
- Перемещены свойства семантики в интерфейс (I6f05c)
- Удалены функции place(Offset) и placeRelative(Offset). Используйте перегрузки с целочисленными смещениями (I4c5e7)
- Удалены ранее объявленные устаревшими API: Modifier.onPositioned, используйте Modifier.onGloballyPositioned. Функция Modifier.onDraw удалена. Используйте Modifier.onDrawBehind. Функция Modifier.plus удалена. Используйте Modifier.then. Удалено значение Color.Unset. Используйте Color.Unspecified. Класс PxBounds удален. Вместо него используйте Rect. (Ie9d02, b/172562222)
- Интерфейс выравнивания был обновлен и стал более функциональным. (I46a07, b/172311734)
- Детектор жестов для нажатия, двойного нажатия, долгого нажатия и индикации нажатия был добавлен с помощью нового приостанавливающего указателя. Также были добавлены несколько утилит, которые упрощают написание собственных детекторов жестов. (I00807)
idпереименован вlayoutIdдляLayoutIdParentData.Measurable.idпереименован вMeasurable.layoutId. (Iadbcb, b/172449643)- Новый детектор жестов с несколькими касаниями, в том числе вспомогательные функции для обнаружения поворота, масштабирования и панорамирования. (Ic459d)
- Добавлены API SweepGradientShader и SweepGradientBrush. (Ia22c1)
- Управление временем в тестах (TestAnimationClock и его использование) теперь является экспериментальной функцией (I6ef86, b/171378521).
Добавлены API прокрутки на основе сопрограмм:
Добавлены LazyListState.snapToItem и LazyListState.smoothScrollBy, а также API более низкого уровня для управления прокруткой. Эти API предоставляют интерфейс приостановки для управления прокруткой, который ожидает завершения прокрутки, прежде чем вернуться. (Ie5642)
В библиотеку Foundation добавлен модификатор Modifier.focusable. Используйте этот метод, чтобы добавить к компоненту возможность фокусировки с правильной семантикой и доступностью. (I41eb9, b/152525426, b/162865824)
Предоставьте реализации методов и свойств по умолчанию в AnimationClockTestRule, которые можно делегировать его
clock(I7ea3d, b/173399709)Теперь AndroidComposeTestRule может принимать специальные средства запуска действий (Ib8288, b/153623653, b/154135019).
Метод TextLayoutResult.getLineVisibleEnd больше не поддерживается. Вместо TextLayoutResult.getLineEnd теперь используется новый параметр visibleEnd. (I73282)
Обновленный API TextFieldValue
- Поле TextFieldValue.composition теперь доступно только для чтения.
- Удалено исключение, возникающее при выборе недопустимого диапазона (I4a675, b/172239032).
Поддержка TtsAnnotation для механизма преобразования текста в речь. (I54cc6)
Новые API для запуска анимации в сопрограммах (Ied662)
Исправление ошибок
- Параметр выравнивания Box был переименован в contentAlignment. (I2c957)
- Модификаторы offsetPx были переименованы в offset. Теперь они принимают параметры лямбда-функции вместо состояния. (Ic3021, b/173594846)
- Добавлен параметр resetInput в TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- Добавлена проверка lint для параметров Modifier в функциях Composable. Эта проверка анализирует название, тип возвращаемого значения, значение по умолчанию и порядок параметров на соответствие рекомендациям Compose. (If493b)
- Временно добавлена возможность использовать MonotonicFrameClock для управления TestAnimationClock (I1403b, b/173402197)
- Добавлен контейнер для шрифта Android. Вы можете загрузить шрифт Android с помощью функции
typeface, напримерtypeface(Typeface.DEFAULT). Также переименовалtypefaceFromFontFamily()вtypeface()(I52ab7) - Добавлена проверка lint, чтобы убедиться, что функции фабрики модификаторов определены как расширения для модификатора, чтобы их можно было объединять в цепочки. (I07981)
- Удаление старого модуля ui-test и его заглушек (I3a7cb)
- Recomposer больше не принимает EmbeddingContext; необходимые зависимости планирования получаются из effectCoroutineContext. FrameManager больше не поддерживается. Интеграции с платформами должны инициализировать собственную обработку глобальных снимков. (I02369)
- Передавать информацию о стиле в узел специальных возможностей. (If5e8d)
- Для единообразия с другими единицами измерения TextUnit.Inherit переименован в TextUnit.Unspecified. (Ifce19)
Compose UI 1.0.0-alpha07
11 ноября 2020 г.
Выход androidx.compose.ui:ui-*:1.0.0-alpha07. Версия 1.0.0-alpha07 содержит следующие коммиты:
Изменения в API
- Добавлен встроенный класс ScaleFactor, который позволяет представлять коэффициенты масштабирования для горизонтальной и вертикальной осей независимо друг от друга, чтобы поддерживать случаи неравномерного масштабирования.
- В ContentScale добавлен метод computeScaleFactor
- Добавлен параметр ContentScale.FillBounds, позволяющий выполнять неравномерное масштабирование, чтобы растянуть границы источника и полностью заполнить целевую область.
- Добавлены методы оператора для вычисления параметров ScaleFactor с параметрами Size.
- (Ic96a6, b/172291582)
- Добавлены фабрики BiasAlignment и BiasAbsoluteAlignment для создания выравниваний. (Iac836, b/169406772)
- Разрешить разработчику принудительно убирать фокус. (I90372)
- Исправлена ошибка, из-за которой не отображалась тень для элементов View, находящихся внутри Compose. (If7782)
- Создан API onDrawBehind в ContentDrawScope, чтобы соответствовать соглашению об именовании с Modifier.drawBehind. (I4fc3a, b/171955269)
- Добавлена поддержка параметра camera distance, дополняющего трехмерные преобразования rotationX/rotationY в API слоев. (I40213, b/171492100)
- Добавлен контейнер выбора без функции обратного вызова (Ibfadb)
- Аннотация ExperimentalSubcomposeLayoutApi удалена. Теперь SubcomposeLayout можно использовать без добавления @OptIn (I708ad)
- Константы FirstBaseline и LastBaseline перенесены в пакет androidx.compose.ui.layout (Ied2e7)
- Из модификатора drawShadow() удалена непрозрачность, так как она вводила в заблуждение. (I82c62, b/171624638)
- Класс MeasureResult был перемещен из MeasureScope. (Ibf96d, b/171184002)
- Некоторые символы, связанные с макетом, были перенесены из androidx.compose.ui в androidx.compose.layout.ui. (I0fa98, b/170475424)
- Удален устаревший FocusState2 (I686cb, b/168686446)
- ZIndexModifier теперь является внутренним (I1808b, b/171493718)
- Обновлен тип возвращаемого значения метода lerp для параметров Size, чтобы возвращать ненулевой объект Size и избежать ненужной упаковки. (Ib0044)
- Добавлен TestMonotonicFrameClock для тестирования кода, который полагается на MonotonicFrameClock из Compose для ожидания событий кадра композиции с помощью runBlockingTest из kotlinx-coroutines-test (I4402f).
- Удален метод GestureScope.localToGlobal (I15299, b/171462785)
- Добавлен инструмент поиска
onAllNodesWithSubstring(I81dd7, b/171462889) - Модуль androidx.ui.test больше не поддерживается. Перейдите на androidx.compose.ui.test и androidx.compose.ui.test.junit4 (I452e8).
Исправление ошибок
- Метод captureToBitmap переименован в captureToImage. (I86385)
- foundation.Text устарел и заменен на material.Text. Если вам нужен простой текстовый API, который не использует значения из темы, ознакомьтесь с информацией о функции androidx.compose.foundation.BasicText. (If64cb)
- Обновление текстовых полей для поддержки KeyboardOptions (Ida7f3)
- Переименование KeyboardOptions в ImeOptions (I82f36)
- Перемещены KeyboardType и ImeAction в KeyboardOptions (I910ce)
- Параметр provideDefault был добавлен в качестве альтернативы для предоставления данных об окружающей среде. Его можно использовать, чтобы задавать значения, которые будут устанавливаться только в том случае, если значение уже не предоставлено. (Id6635, b/171024925)
- Поддержка BaseTextField прекращена. Используйте BasicTextField. (I896eb)
- Добавлен модуль ui-test-junit4 (Ib91f8).
relativePaddingFromпереименован вpaddingFrom. Добавлен модификаторpaddingFromBaseline, позволяющий задавать расстояние от границ макета до базовых линий текста. (I0440a, b/170633813)- Для согласованности с API SideEffect и DisposableEffect LaunchedTask был переименован в LaunchedEffect. Чтобы поощрять использование лучших практик, запрещено использовать LaunchedEffect без параметров subject. (Ifd3d4)
- Добавлен компонент resources, который перекомпонуется при обновлении конфигурации. (I6387c, b/167352819)
- Теперь при создании Recomposer требуется CoroutineContext (Ic4610)
- Суммировать значения
zIndex, если применено несколько фильтровModifier.zIndex(). Раньше выигрывала первая ставка. (Ic514c, b/170623936) - Изменения во внутренней реализации SlotTable, которые не должны повлиять на общедоступный API. (If9828)
- Добавлен параметр автокоррекции клавиатуры IME (I57b8d)
- androidx.ui.test перенесен в androidx.compose.ui.test (I9ffdb)
- Удален метод KeyboardOptions.toImeOptions из общедоступного API. (Ic2e45)
Внешний вклад
- Отключена публикация внутреннего артефакта androidx.compose.ui:ui-text-android (Ib93fa)
Версия 1.0.0-alpha06
28 октября 2020 г.
Выход androidx.compose.ui:ui-*:1.0.0-alpha06. Версия 1.0.0-alpha06 содержит следующие коммиты.
Изменения в API
- Теперь Recomposer является CompositionReference и допустимым родительским элементом композиции. Теперь явное указание Recomposer требуется в меньшем количестве мест. (I4036f)
- Прекратить поддержку VectorPainter в пользу rememberVectorPainter, чтобы лучше показать, что API composable-функций внутренне использует функцию remember для сохранения данных между композициями. (Ifda43)
- Обновлен API Modifier.drawWithCache: теперь ContentDrawScope используется в качестве области получателя вместо DrawScope, чтобы реализации могли менять порядок команд рисования. Это полезно для случаев смешивания и тонирования, когда пиксели контента должны быть отрисованы первыми, чтобы соответствующий алгоритм режима смешивания был применен правильно. (Ie7ec8)
- Перенос SimpleContainer в PopupTestUtils.kt (I78c57)
- ConsumedData больше не является классом данных. Подробнее: https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
- Исправьте положение маркера справа налево. (I6e1e0)
- Рефакторинг DrawScope и ContentDrawScope: теперь это интерфейсы, а не абстрактные классы.
- Создана реализация CanvasDrawScope объекта DrawScope
- Реализации DrawScope были переработаны для использования CanvasScope.
- Создан DrawContext для упаковки зависимостей для DrawScope
- Удалены устаревшие методы в DrawScope (I56f5e)
- Критическое изменение: удалено возвращаемое значение из
PointerInputFilter.onPointerEvent(...), поскольку единственное значение, которое можно изменить в событиях указателя, – это данные о потреблении. Вместо того чтобы возвращать данные изPointerInputFilter.onPointerEvent(...), теперь можно просто изменять данные о потреблении объектов PointerEvent, переданных в функцию. (I6acd0) - MeasureScope и IntrinsicMeasureScope стали интерфейсами. (I1a087, b/170461665)
- Функция объединения для AlignmentLine была скрыта. (I9da1a, b/170612900, b/170611568)
- Добавлена возможность указывать информацию об инспекторе в составном модификаторе (Idee08, b/163494569).
- В меню выбора добавлен вариант "Выбрать все" (Ief02b).
- В функцию DrawTransform.rotate добавлен параметр pivot со значением по умолчанию center, чтобы она соответствовала документации.
- Обновлена функция DrawScope.rotateRad, чтобы она использовала смещение для точки поворота, как и другие методы преобразования.
- Устарела перегрузка DrawScope.rotateRad, которая использовала числа с плавающей запятой для координат X и Y точки поворота.
- (Iffcbb, b/170434992)
Исправление ошибок
- Для androidx включена проверка API на наличие MissingGetterMatchingBuilder (I4bbea, b/138602561).
- Добавьте тест. (I6b8ae)
- Включите переходы в ComposeTestRule; удалите параметр, позволяющий включить мигающий курсор из ComposeTestRule. (If0de3)
- Добавлен параметр IME KeyboardCapitalization (I8ac38)
- В CoreTextField добавлена возможность использовать однострочную клавиатуру (I72e6d).
- Перенос SimpleContainer в PopupTestUtils.kt (I65c3e)
- Мы переименовали Radius API в CornerRadius, чтобы лучше отразить его использование в Compose. В документацию добавлена информация о том, что отрицательные значения радиуса скругления углов приводятся к нулю. (I130c7, b/168762961)
- Улучшена совместимость с Android за счет продолжения отправки MotionEvents дочерним представлениям Android, которые возвращают значение false для onTouchEvent для всех действий, кроме
ACTION_DOWN(I94c5a, b/170320973). - Box стал встроенной функцией. (Ibce0c, b/155056091)
Внешний вклад
- Поддержка разных региональных настроек для
AnnotatedString.capitalizeиAnnotatedString.decapitalize(I4aa7f)
Версия 1.0.0-alpha05
14 октября 2020 г.
Выход androidx.compose.ui:ui-*:1.0.0-alpha05. Версия 1.0.0-alpha05 содержит следующие коммиты:
Изменения в API
- Добавлен DSL для указания информации об инспекторе (Ic9a22)
- Переместите LongPress в Text. (Iff2bc)
- Экспериментальный модификатор.Модификатор ввода, приостанавливающий ввод указателя (Ia77d2)
- Добавлены действия специальных возможностей "Копировать", "Вставить" и "Вырезать" (I6db4f).
- Удален общедоступный конструктор для AndroidOwner (Iacaef)
- Всплывающие окна и диалоговые окна теперь наследуют флаг FLAG_SECURE от родительского окна. Также добавлена возможность задавать это значение явным образом (I64966, b/143778148, b/143778149).
Данные о потреблении теперь можно изменять. Кроме того, вызовы функций расширения, которые выполняют обработку, больше не возвращают новый PointerInputChange, а изменяют предоставленный PointerInputChange.
Это первый шаг из двух, необходимых для того, чтобы сделать данные PointerEvent изменяемыми, а другие данные указателя – нет. На втором этапе нужно будет удалить тип возвращаемого значения
List<PointerInputChange>изPointerInputFilter.onPointerEvent(...). (Id067e)Отключить выделение текста и демонстрацию. (Ie7e97)
Сделана встроенной функция GloballyPositioned (I15830)
OnPositionedModifier переименован в OnGloballyPositionedModifier, а onPositioned() – в onGloballyPositioned(). (I587e8, b/169083903)
В класс Owner добавлено свойство hasPendingMeasureOrLayout, которое указывает, есть ли у владельца незавершенная работа с макетом. (I3d9f8, b/169038599)
Добавлен API для программного сброса фокуса (Ie1dc2, b/161487952).
Контакт (
PointerInputFilter.onPointerInput(...)) удален. Вместо него следует использовать свойствоPointerInputFilter.onPointerEvent(...). (I6f04a)Изменения в размере
- Удален метод Size.getFlipped
- Удален файл Size.rem
- Удален метод Size.truncDiv (Ief44d, b/169790720)
В рамках стандартизации значений sentinel для встроенных классов переименуйте Color.Unset в Color.Unspecified, чтобы обеспечить единообразие с другими встроенными классами (I97611, b/169797763).
Добавлен параметр TextOverflow.None. Если для параметра overflow задано значение None, компонент Text больше не будет обрабатывать переполнение и будет сообщать LayoutNode свой фактический размер. (I175c9, b/158830170)
Параметр scope в AnnotatedString.Builder.addStringAnnotation переименован в tag для согласованности API. (I7c8cb)
Исправление ошибок
- Прокрутка в LazyColumn/Row стала более плавной, поскольку при каждом пролистывании выполняется меньше операций вложенной композиции. В класс Composition добавлен новый метод hasInvalidations(). Метод hasPendingChanges() из Recomposer переименован в hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371).
- Параметры Size.Unspecified теперь имеют значение Float.NaN, а не Float.POSITIVE_INFINITY. Реализации Painter обновлены, чтобы проверять не только бесконечные размеры, но и Size.Unspecified. (I95a7e)
- Порядок вызовов place() в пользовательских макетах теперь определяет порядок отрисовки дочерних элементов (Ibc9f6)
- Поддержка преобразования AnnotatedString в SpannableString для специальных возможностей. (Ief907)
- Добавлены заглушки для классов Android, которые есть на более старых платформах, чтобы по возможности избежать использования отражения. (Ia1790)
- Исправлена ошибка, из-за которой при появлении экранной клавиатуры и переводе текста в приложении координаты указателя становились некорректными. (Ic4cec, b/163077821)
Версия 1.0.0-alpha04
1 октября 2020 г.
Выход androidx.compose.ui:ui-*:1.0.0-alpha04. Версия 1.0.0-alpha04 содержит следующие коммиты:
Изменения в API
- Добавлен OwnerScope, позволяющий собирать данные о макете и отрисовке, когда они становятся недействительными. (Ic4cf8)
- Добавлены OnRemeasuredModifier и onSizeChanged(), чтобы получать обратный вызов, когда макет контента был пересчитан и когда изменился размер соответственно. (I657cf, b/154108792)
- Добавлено действие для семантики долгого нажатия (I6281b, b/156468846)
- Сделан закрытым класс FocusManager. (I7872f)
Реализация обновлена: вместо добавления необязательных свойств в DrawModifier создана отдельная реализация DrawCacheModifier.
Обновлена документация для различных методов (Ibd166)
Чтобы избежать создания объекта, сделайте TextRange встроенным. (Id034b)
PlacementScope#parentWidth и PlacementScope#parentLayoutDirection больше нельзя считывать из блока размещения специальной разметки. (Icc1ae, b/168295623)
добавьте AccessibilityScrollState в семантические свойства; (Ifeda9)
Добавлен метод Modifier.drawWithCache для создания объекта рисования, который условно воссоздает зависимости, зависящие от размера или состояния (I376dc).
Удалено правило ParagraphConstraints. Ширина теперь передается непосредственно в абзац. (Ica712)
Исправление ошибок
- Обновлены многие графические API.
- Обновлены API преобразования масштаба и поворота, чтобы использовать один параметр Offset для представления опорной координаты вместо отдельных параметров float для координат x/y в DrawScope и DrawTransform.
- Удалены методы Rect.expandToInclude и Rect.join
- В документацию по радиусу добавлено слово "овальный" в дополнение к слову "эллиптический"
- Добавлена документация, в которой указано, что публичный конструктор для встроенного класса Radius нельзя вызывать напрямую. Вместо этого объекты Radius следует создавать с помощью конструкторов функций.
- Удалены API RoundRect для запросов topRight, bottomRight, bottomCenter и т. д.
- Устаревший метод Rect.shift заменен на Rect.translate
- Удалены API RoundRect.grow и Rect.shrink
- Переименовано RoundRect.outerRect в Rect.boundingRect
- Удалены методы RoundRect.middleRect/tallMiddleRect/wideMiddleRect и Rect.isStadium
- Переименован параметр RoundRect.longestSide в RoundRect.maxDimension
- Переименован параметр RoundRect.shortestSide в RoundRect.minDimension
- Изменено значение RoundRect.center: теперь это свойство, а не функция
- Обновлен конструктор RoundRect, чтобы использовать свойства Radius вместо отдельных параметров для значений радиуса по осям X и Y.
- Удалены API размера, которые предполагали, что это прямоугольник с началом координат в точке 0,0.
- В Radius добавлен API для удаления объектов
- Некоторые функции расширения RoundRect были преобразованы в свойства.
- (I8f5c7, b/168762961)
- Поддержка foundation.Box прекращена. Используйте вместо него foundation.layout.Box. (Ie5950, b/167680279)
- Приложение Stack переименовано в Box. Предыдущий компонент Box будет удален, а вместо него будет использоваться новый компонент Box из compose.foundation.layout. Новый контейнер Box располагает дочерние элементы друг над другом, а не в столбец, как предыдущий. (I94893, b/167680279)
- Параметры оформления блоков больше не поддерживаются. Если вы хотите добавить к блоку декоративные элементы или отступы, используйте модификаторы (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279).
- Обновлены многие графические API.
- В API DrawScope добавлены методы преобразования с областью действия, чтобы указать, что преобразование применяется только в рамках обратного вызова и удаляется после его вызова.
- В документации по clipPath теперь упоминается Path, а не прямоугольник со скругленными углами
- Исправлены пробелы в документации для параметра right в clipPath
- Переименован метод DrawScope.drawCanvas в drawIntoCanvas и удален параметр size
- Переименованы параметры dx/dy в методе inset на horizontal и vertical
- Добавлена перегрузка inset, которая позволяет задать одинаковое значение для всех четырех границ.
- Удалена документация по методу inset, в которой указывалось, что он применяется ко всем четырем сторонам.
- Обновлена документация по классу Rect
- Обновлены комментарии к параметрам Rect в соответствии со стилем kdoc.
- Удалены Rect.join и Rect.expandToInclude
- Создана перегрузка для Rect.translate(offset) и устаревший Rect.shift
- (If086a, b/167737376)
- Аннотируйте rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled и textInputServiceFactory с помощью @VisibleForTesting, сделайте их внутренними API и скройте их kdoc (I554eb, b/168308412).
- Удалите SelectionContainer из верхней части, чтобы отключить выбор по умолчанию и избежать неожиданного поведения. Вместо этого можно использовать SelectionContainer, чтобы обернуть контент, который должен быть доступен для выбора. (I8dfe0, b/158459594)
Версия 1.0.0-alpha03
16 сентября 2020 г.
Выход androidx.compose.ui:ui-*:1.0.0-alpha03. Версия 1.0.0-alpha03 содержит следующие коммиты.
Изменения в API
- Удалите семантические действия "Прокрутить вперед" и "Прокрутить назад". Добавлены шаги в AccessibilityRangeInfo. (Ia47b0)
- Пользователь
onInvalidate()удален из чат-группы "Owner".OwnedLayerобрабатывает аннулирование. (Ica72b, b/162061312) Удалены методы оператора в API Size, которые используют параметры смещения. Результат этих операций неясен, а тип результата неожиданный. Например, если ввести "размер – смещение", будет ли возвращено смещение или размер с разницей?
Также удалены устаревшие методы класса Size. (Iec902, b/166514214)
Исправление ошибок
- Исправлена ошибка, из-за которой иногда неправильно отрисовывались элементы LazyColumn. В некоторых случаях это приводило к сбоям. (Ibcf17, b/163066980, b/165921895)
- DpConstraints и API, использующие его, устарели. (I90cdb, b/167389835)
- Объекты "
createAndroidComposeRule" и "AndroidInputDispatcher" перемещены изandroidx.ui.test.androidвandroidx.ui.test(Idef08, b/164060572) - Во всех API макетов слово "gravity" было заменено на "align" или "alignment". (I2421a, b/164077038)
- Добавлены методы onNode и другие глобальные методы в ComposeTestRule, поскольку текущие глобальные методы будут объявлены устаревшими. (Ieae36)
Версия 1.0.0-alpha02
2 сентября 2020 г.
Выход androidx.compose.ui:ui-*:1.0.0-alpha02. Версия 1.0.0-alpha02 содержит следующие коммиты:
Изменения в API
- Удаление обратного вызова для уведомления владельца при изменении границ узла макета. (If654e, b/166106882)
- Добавлена поддержка параметров filltype для путей векторной графики, чтобы можно было вырезать фигуры в соответствии с правилами заполнения путей evenOdd или NonZero. (I43dd2)
- Uptime и Velocity теперь являются встроенными классами (I48f4a)
- Класс Duration теперь встроенный (I565eb)
- Добавьте обратный вызов, чтобы уведомлять владельца об изменении границ layoutnode. (Ic40b3)
Исправлена ошибка, из-за которой конструктор функции Rect с параметрами Offset и radius создавал объект Rect в порядке "слева, справа, сверху, снизу" вместо "слева, сверху, справа, снизу".
Удалены устаревшие сопутствующие методы для Rect в пользу конструкторов функций.
Добавлены тесты для проверки методов в Rect.kt (I08460, b/165822356).
Исправление ошибок
- Добавлен MutableRect – прямоугольник, который можно изменять. (I71bd2, b/160140398)
- Matrix4 был заменен на Matrix. Все остальные части пакета vectormath удалены. (Ibd665, b/160140398)
Изменилось соглашение о вызовах для составных функций. Это изменение, нарушающее совместимость на уровне двоичных файлов. Все библиотеки необходимо перекомпилировать, чтобы они работали с этой версией плагина компилятора Compose.
Это изменение не приведет к нарушению совместимости на уровне источника, поскольку изменились только API компилятора, для которых требуется явное согласие. (I7afd2, b/158123185)
Исправлен сбой, который мог произойти, когда отправка в PointerInputFilter могла привести к синхронному удалению PointerInputFilter. (I58f25)
Версия 1.0.0-alpha01
26 августа 2020 г.
Выход androidx.compose.ui:ui-*:1.0.0-alpha01. Версия 1.0.0-alpha01 содержит следующие коммиты:
Версия 0.1.0-dev
Версия 0.1.0-dev17
19 августа 2020 г.
Выход androidx.compose.ui:ui-*:0.1.0-dev17. Версия 0.1.0-dev17 содержит следующие коммиты:
Изменения в API
- Поддержка
emitViewпрекращена. Если вы используете Compose, по возможности используйтеAndroidViewвместо этого. Обратите внимание, что в будущем создание представлений и групп представлений напрямую не будет поддерживаться, если только они не являются листьями в дереве композиции. В этом случае их можно будет создать с помощью AndroidView. (I29b1e, b/163871221) FocusState2устарел и заменен наFocusState(Ia8b79, b/160822876, b/160923332)- Удалены устаревшие перегрузки AndroidView. (I946b9, b/163802393)
- Теперь в пользовательских событиях можно объявлять, что один или несколько их сеттеров можно пропустить и перекомпоновать независимо от события. (Ibbd13)
Классы Vector больше не являются классами данных, поскольку один и тот же экземпляр объекта используется для композиции.
Добавлен флаг mutableStateOf для VectorPainter, чтобы при изменении содержимого вектора происходила условная перерисовка.
Рефакторинг экземпляра VectorComponent, чтобы он был частью VectorPainter, поскольку он используется повторно в разных композициях.
Обновлены GroupComponent и PathComponent, чтобы их поля name были изменяемыми (Ieae45, b/151378808).
Удалены
onChildPositionedиOnChildPositionedModifier. Вместо этого разработчикам следует использоватьonPositionedиOnPositionedModifierв дочернем макете. (I4522e, b/162109766)Смещение стало встроенным классом (Iaec70).
Добавлен параметр модификатора в SelectionContainer (I4aada, b/161487952)
Удален устаревший модификатор фокуса (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
В
SemanticsPropertyKeyдобавлена лямбда-функцияmergePolicy. Это можно использовать для определения специального правила для семантики объединения всех дочерних элементов. По умолчанию используется значение родительского объекта, если оно задано, в противном случае – значение дочернего объекта. (Iaf6c4, b/161979921)Класс Constraints теперь встроенный (I88736)
Добавлен FocusManager, который переносит общую логику фокуса из AndroidComposeView (I528ef, b/161487952, b/162206799).
Обновлены названия PointerEventPass для альфа-версии. (Ifda6f)
IntOffset теперь встроенный класс (Iac0bf)
IntSize теперь встроенный класс (I2bf42)
PlacementScope.placeAbsolute()переименован вPlacementScope.place(), а предыдущийPlacementScope.place()переименован вPlacementScope.placeRelative(). В результате методPlacementScope.place()больше не будет автоматически зеркально отражать позицию в контекстах с письмом справа налево. Если вам нужно именно это, используйте правилоPlacementScope.placeRelative(). (I873ac, b/162916675)В AlertDialog теперь используется FlowRow для кнопок (I00ec1, b/161809319, b/143682374)
Некоторые тестовые утилиты стали недоступны для общего пользования, поскольку они не соответствуют требованиям. Будет опубликован в будущем. (I32ab1)
Изменен код для ввода с помощью указателя. (Ie3f45)
Устаревший параметр PxBounds заменен на Rect. Обновлены все случаи использования PxBounds с rect и добавлены аннотации deprecate/replace with для упрощения перехода. (I37038, b/162627058)
Удален устаревший класс KeyEvent2. Используйте KeyEvent. (Ied2d0, b/162097587)
У объекта KeyEvent есть свойство unicode, которое можно использовать, чтобы получить символ Unicode, сгенерированный указанной клавишей и сочетанием клавиш-модификаторов (If3afc).
Специальное событие DelayUp и связанные с ним классы теперь можно включить с помощью API, поскольку они, скорее всего, будут изменены. (I56d6f)
Удалены два объекта PointerEventPass, которые больше не нужны. (I3dd9d)
Добавьте параметры color, shadow и TextDecoration в Paragraph.paint. Эта функция позволяет избежать ненужного воссоздания Paragraph. (I81689)
Исправление ошибок
- Удалены обратные вызовы onFocusChanged из TextField. Вместо него используйте Modifier.focusObserver. (I51089, b/161297615)
- Поддержка Modifier.drawBorder прекращена. Используйте Modifier.border. Класс данных Border заменен на BorderStroke (I4257d, b/158160576)
Удалены устаревшие вызовы FrameManager.
Внутренние API для создания писем были изменены, чтобы уменьшить объем служебной информации, необходимой для отслеживания объектов состояния, таких как
mutableStateof()(I80ba6).Удалены компоненты VerticalScroller и HorizontalScroller. Вместо этого используйте ScrollableColumn/Row. Функция Modifier.drawBackground удалена. Используйте Modifier.background (I73b0d, b/163019183)
Исправлен сбой, возникавший при использовании внутри цикла for чего-либо, сохраняющего состояние. Теперь в savedInstanceState() можно использовать один и тот же ключ. API UiSavedStateRegistry был изменен в соответствии с этим новым требованием (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).
Компонуемый элемент
state { ... }теперь считается устаревшим. Вместо него рекомендуется использовать явные вызовыremember { mutableStateOf(...) }. Это уменьшает общую поверхность API и количество концепций для управления состоянием, а также соответствует шаблонуby mutableStateOf()для делегирования свойств класса. (Ia5727)Переименована функция RRect в RoundRect, чтобы она лучше соответствовала шаблонам именования Compose. Созданы аналогичные конструкторы функций для RRect и устаревшие конструкторы функций RRect (I5d325).
Версия 0.1.0-dev16
5 августа 2020 г.
Выход androidx.compose.ui:ui-*:0.1.0-dev16. Версия 0.1.0-dev16 содержит следующие коммиты:
Изменения в API
- Поддержка метода OnChildPositioned прекращена. Вместо этого используйте OnPositioned для дочернего элемента. (I87f95, b/162109766)
- Метод setViewContent устарел. Вместо него следует использовать setContent. (I7e497, b/160335130)
- Добавлен API AndroidViewBinding для раздувания и создания ресурсов макета на основе ViewBinding. (I081c6)
- KeyEvent2 заменен на KeyEvent (I2d770, b/162097585)
- Добавлена поддержка альтернативного аппаратного ключа (I9036b)
- Поддержка FocusManager прекращена. Вместо этого используйте Modifier.focus(), Modifier.focusObserver() и Modifier.focusRequester(). (I74ae4, b/162211322)
- Функция loadVectorResource поддерживает атрибуты trimPath (I808fe)
- Переместить диалоговое окно в интерфейс (I47fa6)
- Удалены два объекта PointerEventPass, которые больше не нужны. (I33ca7)
- Реализован PointerInteropModifier, который позволяет получать события MotionEvent и взаимодействовать с Compose так, как если бы вы использовали реализацию Android View. (Ieb08c)
- Удален устаревший модификатор тега. Вместо него используйте layoutId. (Idaa05, b/162023919)
- Обновлены API для поддержки языков с письмом справа налево. Добавлен параметр LayoutDirectionAmbient, который можно использовать для чтения и изменения направления макета. Удалены модификаторы Modifier.rtl и Modifier.ltr. (I080b3)
- Поддержка обрезки контуров в векторной графике (Ie16c9, b/158188351)
- Добавлен метод Modifier.layout(), который позволяет удобно создавать пользовательские модификаторы макета (I73b69, b/161355194).
- Добавлен новый API AndroidView, а поддержка существующих API прекращена. (I5bcfd)
- Метод Modifier.plus устарел. Используйте вместо него Modifier.then. Слово "затем" лучше указывает на порядок действий, а также запрещает использовать символ
Modifier.padding().background() + anotherModifier, который нарушает последовательность и затрудняет чтение (Iedd58, b/161529964). - Добавлены подклассы View [Abstract]ComposeView для размещения контента Compose в иерархии View. (I46357)
- Функции
RowиColumnтеперь встроены, что значительно снижает издержки на их использование. (I75c10) - Добавлен SubcomposeLayout. Это примитив низкого уровня, который позволяет создавать дочерние элементы во время измерения, если мы хотим использовать некоторые значения, доступные только позже во время измерения для композиции поддерева. Например, WithConstraints не реализован с помощью SubcomposeLayout. (I25cc8)
- Добавлен метод
SemanticsNode.positionInRoot, позволяющий получить позицию объекта SemanticsNode относительно корня иерархии Compose (Icdf26, b/161336532). - События MotionEvent передаются из Android в Compose и обратно в Android. (I14be8, b/158034713)
- Удален элемент dropdownPopup. (I00430)
- Исправлено положение всплывающего окна на экранах с вырезом. (Idd7dd)
- Добавление действия специальных возможностей для получения TextLayoutResult (I9d6e6)
- Добавлен RemeasurementModifier, который позволяет синхронно пересчитывать макет. В большинстве случаев он не нужен, поскольку перерасчет и перекомпоновка выполняются автоматически, но мы используем его в LazyColumnItems во время прокрутки. (I5f331, b/160791058)
- Удалите getLineEllipsisOffset/getLineEllipsisCount. Вместо него используйте getLineVisibleEnd, getLineEnd или isLineEllipsized. (I85aa2)
- Добавьте пометки или аннотации. (I66b20)
- добавить больше API строк в TextLayoutResult; (I79bd2)
- Встроенные конвертеры векторных объектов для преобразования встроенных единиц теперь доступны через Foo.VectorConverter, например Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter и т. д. (I3e273)
Исправление ошибок
- Исправления в API для широкого диапазона адресов (I077bc)
- Удаление неиспользуемого интерфейса OffsetBase
- Приведение классов Offset и IntOffset к единому API
- Переименование IntOffset.Origin в IntOffset.Zero для соответствия Offset API
- Метод nativeCanvas перенесен из интерфейса Canvas для поддержки потребителей при создании собственных экземпляров Canvas.
- Создан класс-заглушка EmptyCanvas, чтобы переработать DrawScope и сделать его ненулевым параметром вместо lateinit, а также обеспечить ненулевое значение поля.
- Переименованы перечисления ClipOp в Pascal Case
- Переименованы перечисления FilterQuality в Pascal Case
- Переименованы перечисления StrokeJoin в Pascal Case
- Переименованы перечисления PointMode в Pascal Case
- Переименованы перечисления PaintingStyle в Pascal Case
- Переименованы перечисления PathFillType в Pascal Case
- Переименованы перечисления StrokeCap в Pascal Case
- Обновлена реализация DrawCache, чтобы больше не использовать параметры lateinit.
- В DrawScope больше не используется отложенная делегация для внутренних параметров fillPaint и strokePaint.
- Обновлен компонент Image, чтобы избежать использования Box и снизить нагрузку.
- Добавлены аннотации @Immutable в класс Outline
- Обновление PathNode: добавлены аннотации @Immutable для каждой инструкции пути
- Вложенная композиция Vector обновлена: удалены лишние условные проверки на равенство, поскольку они уже обрабатываются в Compose.
- Устаревшие методы конструктора Rect companion заменены на конструкторы функций
- Обновлены классы кистей и конструкторы функций с помощью API @Immutable и @Stable
- Переименовано перечисление VertexMode в PascalCase
- Обновлен метод selectPaint в DrawScope, чтобы условно перезаписывать параметры обводки в paint, если они изменились.
- Обновлен размер: добавлен API деструктуризации, переименован UnspecifiedSize в Unspecified и удалены неиспользуемые методы
- Обновлено использование API BlendMode в Compose, чтобы правильно сопоставлять BlendMode фреймворка Android и режимы PorterDuff в зависимости от уровня API. Добавлен API BlendMode#isSupported, который позволяет определить, поддерживается ли на устройстве режим наложения BlendMode, прежде чем его использовать. (I0ef42)
- Для параметра itemContent ленивых списков добавлен LazyItemScope. Он предоставляет модификаторы, которые позволяют заполнить максимальный размер родительского элемента. Это решает проблему, когда элемент должен заполнять область просмотра, а обычный Modifier.fillMaxSize() не работает, поскольку размер элемента определяется с помощью бесконечных ограничений. (Ibd3b2, b/162248854)
- Контакт (
SemanticsNodeInteraction.performPartialGesture) удален. Используйте вместо негоSemanticsNodeInteraction.performGesture. (Id9b62) LazyColumnItemsпереименован вLazyColumnFor.LazyRowItemsпереименован вLazyRowFor(I84f84).- Пакет
foundation.shape.cornerбыл преобразован вfoundation.share(I46491, b/161887429) - Название "
AndroidComposeTestRule" изменено на "createAndroidComposeRule". (I70aaf) - В
TextLayoutResultдобавлены новые API. (Id7e04) - Материал
FilledTextFieldбыл переименован вTextField, а базовыйTextField– вBaseTextField, чтобы упростить поиск и использование нужного API (Ia6242, b/155482676). - Функция Modifier.drawBackground переименована в Modifier.background (I13677).
Версия 0.1.0-dev15
22 июля 2020 г.
Выход androidx.compose.ui:ui-*:0.1.0-dev15. Версия 0.1.0-dev15 содержит следующие коммиты:
Обновление зависимостей
- Чтобы использовать версию
0.1.0-dev15библиотеки Compose, вам нужно обновить зависимости в соответствии с новыми фрагментами кода, приведенными выше в разделе Объявление зависимостей.
Изменения в API
- FocusModifier устарел. Вместо него используйте Modifier.focus, Modifier.focusRequester и Modifier.focusObserver. Классы FocusState и FocusDetailedState устарели. Вместо них следует использовать класс FocusState2 (I46919, b/160822875, b/160922136).
- Добавлен модификатор для отслеживания изменений состояния фокуса. (I05866, b/160924455, b/160923326)
- Добавлен модификатор для запроса изменений фокуса (I8dd73, b/161182057, b/160924778).
- Настройте меню панели инструментов, чтобы команды "Копировать", "Вырезать" и "Вставить" отображались корректно. (Id3955)
- Свойства семантики с одним значением теперь используют стиль вызова.
Например, запись 'semantics { hidden = true }' теперь выглядит так:
semantics { hidden() }. (Ic1afd, b/145951226, b/145955412) - Добавлен Modifier.focus, который заменяет FocusModifier. (Ib852a, b/160924778)
- Добавлена плавающая панель инструментов для выделения текста в текстовом поле. (Ie8b07)
- Добавлена экспериментальная аннотация API для API, связанных с вводом с клавиатуры (I53c0a).
- Добавлена экспериментальная аннотация API для всех API, связанных с фокусом (I53b24, b/160903352).
- Добавлен FocusState2, который заменит FocusDetailedState (I0a3ba, b/160822595).
- Добавлена аннотация ExperimentalFocus, которая используется для API Focus. (I1544b, b/160820961)
- Добавлен класс IntBounds, представляющий границы в целых пикселях из макета. API PopupPositionProvider был обновлен, чтобы использовать его. (I0d8d0, b/159596546)
- Теперь для удаления композиций в Applier требуется метод clear() (Ibe697).
- Класс KeyEvent устарел и заменен классом KeyEvent2 (I68730).
- В тестировщики поиска добавлен новый необязательный флаг useUnmergedTree. (I2ce48)
- Сделан экспериментальным API LayoutNode (I4f2e9)
Добавлены методы копирования для различных встроенных типов классов, в том числе:
- Смещение
- Размер
- Радиус
- Анимация
TransformOrigin
Устаревший метод объекта-компаньона Size.copy в пользу метода копирования экземпляра (Ife290, b/159905651)
Всплывающие окна, диалоговые окна и меню теперь наследуют контекстную тему MaterialTheme (Ia3665, b/156527485).
Поле TextDirection переименовано в ResolvedTextDirection (I3ff38)
Удален параметр направления макета из блока измерения функции Layout(). Однако направление макета доступно в обратном вызове через объект области действия измерения (Ic7d9d).
Рефакторинг SelectionHandles для повторного использования. (I420e0)
Параметр "Возможность нажать" удален. Используйте Modifier.clickable (I84bdf).
Удалены TestTag и Semantics. Вместо этого используйте Modifier.testTag и Modifier.semantics (I15ff0, b/158841414).
До этого изменения плагин компилятора Compose перехватывал вызовы конструкторов внутри composable-функции, если существовала ошибка I5205a (b/158123804).
Поле Modifier.tag переименовано в Modifier.layoutId, чтобы избежать путаницы с Modifier.testTag. (I995f0)
Позиции линий выравнивания типа Int, возвращаемые из Placeable#get(AlignmentLine), теперь не могут быть нулевыми. Если запрошенная линия выравнивания отсутствует, будет возвращено значение AlignmentLine.Unspecified. (I896c5, b/158134875)
В компонент AndroidView добавлен параметр модификатора. (I48a88, b/158746303)
Функция Semantics() больше не поддерживается. Вместо него используйте Modifier.semantics(). (I72407, b/158841414)
Добавлен компонент viewModel(), который позволяет создавать или получать уже созданные объекты ViewModel так же, как это делается в Activity или Fragment (I5fdd1).
Заменено использование IntPx на Int. Заменено IntPxPosition на IntOffset. Параметр IntPxSize заменен на IntSize. (Ib7b44)
Чтобы уменьшить количество классов, используемых для представления информации о размерах, стандартизируйте использование класса Size вместо PxSize. Это позволяет использовать преимущества встроенного класса, чтобы упаковать два значения с плавающей запятой, представляющие ширину и высоту, в одно значение типа long. (Ic0191)
Чтобы уменьшить количество классов, используемых для представления информации о позиционировании, стандартизируйте использование класса Offset вместо PxPosition. Это позволяет использовать преимущества встроенного класса, чтобы упаковать два значения float, представляющие смещения x и y, в одно значение long. (I3ad98)
В рамках масштабной реорганизации кода мы заменили класс Px в различных классах Compose на Dp и примитивные типы для параметров пикселей. Удален весь класс Px (I3ff33).
В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose, чтобы для параметров пикселей использовались только Dp и примитивные типы (I086f4).
В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose, чтобы для параметров пикселей использовались только Dp и примитивные типы (Id3434).
В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose на использование только Dp и примитивных типов для параметров пикселей (I97a5a).
Тег TestTag больше не поддерживается. Вместо него используйте Modifier.testTag. (If5110, b/157173105)
Реализация по умолчанию (без операций) метода ParentDataModifier#modifyParentData удалена, поскольку она была эквивалентна отсутствию реализации интерфейса. (I0deaa)
Удален ранее признанный устаревшим параметр ScaleFit as. Используйте ContentScale. (Ifbc5b)
В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose, чтобы для параметров пикселей использовались только Dp и примитивные типы (I19d02).
Добавлен компонент DropdownMenu в ui-material, реализацию меню Material Design. (I9bb3d)
Удален устаревший метод LayoutTag(). Вместо него используйте Modifier.tag(). Удален устаревший метод Modifier.matchParent(). Вместо него используйте Modifier.matchParentSize(). (Если8044)
В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose на использование только Dp и примитивных типов для параметров пикселей (I57bff).
Свойство Modifier.semantics снова доступно для использования в компонентах высокого уровня. (I4cfdc)
Объединили реализации CanvasScope, поэтому теперь есть только DrawScope и ContentDrawScope. Переименовали CanvasScope в DrawScope. Обновлен DrawScope, чтобы реализовать интерфейс Density и предоставить LayoutDirection. Удален подкласс DrawScope в ContentDrawScope. Обновлены Painter и PainterModifier, чтобы больше не поддерживать свойство RTL, поскольку DrawScope уже предоставляет его без необходимости указывать вручную (I1798e).
Теперь DoubleTapGestureFilter различает SingleTapGestureFilter в дереве. (If92b1)
Обновлен Alignment API и добавлена поддержка абсолютного выравнивания (которое не зеркально отражается в контексте RTL) (I38cd3).
Изменения в API модификаторов DrawLayer: outlineShape переименован в shape, имеет значение по умолчанию RectangleShape и теперь не может быть нулевым; clipToOutline переименован в clip; clipToBounds удален, поскольку он аналогичен clip == true с RectangleShape (I7ef11, b/155075735).
Обновлены API более высокого уровня, которые предоставляют Canvas, чтобы вместо этого предоставлять CanvasScope. Это позволяет потребителям не создавать собственные объекты Paint. Пользователи, которым по-прежнему нужен доступ к Canvas, могут использовать метод drawCanvas, который предоставляет функцию обратного вызова для отправки команд рисования с помощью базового Canvas. (I80afd)
Изменен API конечной лямбда-функции WithConstraints. Теперь вместо двух параметров используется область действия получателя, которая помимо ограничений и направления макета предоставляет свойства minWidth, maxWidth, minHeight и maxHeight в единицах dp (I91b9a, b/149979702).
Класс LayoutModifier2 переименован в LayoutModifier. (Id29f3)
Удален устаревший интерфейс LayoutModifier. (I2a9d6)
Встроенные функции измерений в Layout и LayoutModifier2 теперь имеют получатель IntrinsicMeasureScope, который предоставляет API запроса встроенных значений с неявно распространяемым направлением макета. (Id9945)
Дочерние элементы Layout и LayoutModifier можно измерять с другим направлением макета. (Ibd731)
Добавлен новый модификатор Modifier.zIndex(), который позволяет управлять порядком отрисовки дочерних элементов в одном родительском макете. Свойство elevation в DrawLayerModifier переименовано в shadowElevation и больше не управляет порядком отрисовки. Порядок параметров в DrawShadow изменен: теперь первым идет параметр elevation, а вторым – shape со значением по умолчанию RectangleShape. (I20150, b/152417501)
Удалены методы onSizeChange и onPositionChange в классе Owner. (I5c718)
Добавлен Constraints2 – копия Constraints, которая поддерживает только значения Int, а не IntPx. IntPx будет удален, и все ограничения на целые числа будут считаться пикселями, как в Android.
- Также добавлен параметр IntSize, который в будущем заменит IntPxSize. (I4b43a)
Теперь объект Alignment можно создавать с произвольными значениями. Добавлены выравнивания по одной оси. (Ia0c05)
Теперь alignToSiblings принимает Measured вместо Placeable. (I5788d)
-
- ScaleFit переименован в ContentScale
- Перемещен ContentScale из модуля ui-graphics в модуль ui-core, чтобы он находился в том же модуле, что и Alignment API.
- Параметр FillMaxDimension переименован в Crop
- Параметр FillMinDimension переименован в Fit.
- Название "По размеру" изменено на "Вписать".
- Аналоги ImageView.ScaleType
- Добавлена документация, в которой указано, что сочетание Crop и Alignment.Center дает тот же результат, что и ImageView.ScaleType.CENTER_CROP, а сочетание Fit и Alignment.Center дает тот же результат, что и ImageView.ScaleType.FIT_CENTER. Также указано, что сочетание Inside и Alignment.Center дает тот же результат, что и ImageView.ScaleType.CENTER_INSIDE.
Поддержка RTL для модификаторов рисования. (I0aaf9)
Выпущен API для развертывания представлений Android из XML. Подробнее о демоверсии ViewInCompose… (I42916)
Улучшения DrawModifier API:
- Область действия получателя для функции draw() изменена на ContentDrawScope
- Удалены все параметры в функции draw()
- У DrawScope такой же интерфейс, как и у CanvasScope.
- У ContentDrawScope есть метод drawContent() (Ibaced, b/152919067)
Добавлены positionInParent и boundsInParent для LayoutCoordinates. (Icacdd, b/152735784)
Теперь по умолчанию для DrawLayerModifier и drawLayer() задано значение false для clipToBounds и clipToOutline. (I0eb8b, b/152810850)
Класс LayoutResult переименован в MeasureResult. (Id8c68)
Добавлен LayoutModifier2 – новый API для определения модификаторов макета. LayoutModifier (If32ac) больше не поддерживается.
Замена оператора "Модификатор плюс" на функции расширения производителя (I225e4)
Добавлены свойства translationX/Y для поддержки смещения списка команд рисования для определенного слоя. Это полезно для перемещения контента в ответ на анимацию или события касания. (I8641c)
В API слоев добавлены параметры pivotX и pivotY, чтобы поддерживать поворот и масштабирование вокруг определенной точки на слое (Icf7c3).
Добавьте OnPositionedModifier и OnChildPositionedModifier, чтобы заменить функции OnPositioned и OnChildPositioned. (I2ec8f)
Добавлен модификатор LayerModifier, который позволяет добавлять RenderNode для макета. Он позволяет задавать обрезку, прозрачность, поворот, масштабирование и тени. Он заменит RepaintBoundary. (I7100d, b/150774014)
Направление макета теперь передается от родительского узла макета дочерним. Добавлен модификатор направления макета. (I3d955)
Компонент Stack поддерживает направление текста справа налево (Ic9e00)
Первоначальная поддержка макетов с письмом справа налево в Compose (Ia5519)
Параметры "Плотность" и "Область плотности" объединены в один интерфейс. Вместо ambientDensity() теперь можно использовать DensityAmbient.current. Вместо withDensity(density) используйте with(density) (I11cb1).
Изменено свойство LayoutCoordinates, чтобы providedAlignmentLines было не картой, а набором. Для получения значения теперь используется оператор get(). Это позволяет модераторам изменять одно или несколько значений набора, не создавая для каждого модератора новую коллекцию. (I0245a)
У LayoutCoordinates больше нет свойства position. Свойство position не имеет смысла при использовании LayoutModifiers, поворота или масштабирования. Вместо этого разработчикам следует использовать parentCoordinates и childToLocal(), чтобы рассчитать преобразование из одной LayoutCoordinate в другую.
В LayoutCoordinates для свойства size используется IntPxSize вместо PxSize. В макетах используются размеры в целых пикселях, поэтому все размеры макетов должны быть целыми числами, а не числами с плавающей запятой. (I9367b)
Улучшения API для ограничений (I0fd15)
Создан API CanvasScope, который оборачивает объект Canvas, чтобы предоставить поверхность API для рисования без сохранения состояния и с декларативным подходом. Преобразования содержатся в собственной области получателя, а информация о размере также ограничена соответствующими границами вставки. Для настройки операций рисования потребителю не нужно поддерживать собственный объект состояния Paint.
- Добавлен CanvasScopeSample, а также обновлено демонстрационное приложение, чтобы включить демонстрацию декларативной графики (Ifd86d).
Удален неиспользуемый API MaskFilter, поскольку он редко применяется и в большинстве случаев не оптимизирован для аппаратного ускорения (I54f76).
RectangleShape перемещен из androidx.ui.foundation.shape.* в androidx.ui.graphics.* (Ia74d5, b/154507984)
Заменили все случаи использования допускающего значение NULL типа Color в API на недопускающий значение NULL и вместо null используем Color.Unset (Iabaa7).
Добавлен необязательный параметр rect в ImagePainter, чтобы можно было рисовать фрагмент базового объекта ImageAsset (I0ea9e).
Добавлен вариант "Не задан", чтобы представлять незаданное значение без использования рамки. (If901a)
Добавлены методы расширения Canvas.rotate и Canvas.scale для использования необязательных координат центра вращения при преобразованиях. По умолчанию они находятся в левом верхнем углу текущего холста.
Также для единообразия метод Canvas.rotateRad был перенесен в расширение (Ibaca6).
Создан PixelMap API для запроса информации о пикселях из ImageAsset. (I69ad6)
Переименовано в toFrameworkRect/toFrameworkRectF в toAndroidRect/toAndroidRectF, чтобы соответствовать соглашению об именовании для преобразования объектов между Compose и API фреймворка Android, на основе которых они созданы. Также обновлена документация по этим API (I86337).
Добавлен VectorPainter API, который заменит существующий subcomposition API для векторной графики. Результатом вложенной композиции является объект VectorPainter, а не DrawModifier. Устаревшие функции DrawVector заменены на VectorPainter.
Переименован API Image(Painter) в PaintBox(Painter). Создан компонуемый элемент Vector, который ведет себя как компонуемый элемент Image, но использует VectorAsset вместо ImageAsset (I9af9a, b/149030271).
Переименовали Image в ImageAsset, чтобы лучше различать данные Image и будущую composable-функцию Image, которая будет использоваться для макета и отрисовки контента. _Body:Создан метод расширения для android.graphics.Bitmap, Bitmap.asImageAsset(), чтобы создать экземпляр ImageAsset, который можно использовать для объединения традиционной разработки приложений для Android с фреймворком Compose (Id5bbd).
Добавлен параметр TextDirection.Content (I48f36).
Добавлен оператор TextDecoration.plus (I0ad1a)
Значение
Forceудалено из перечисляемых значений TextDirectionAlgorithm (Icc944)Алгоритм определения направления текста переименован в "Направление текста" (I75ce8)
Реализована функция LongPressAndDrag для выделения текста в TextField. (I17919)
Добавлен метод AnnotatedString.getStringAnnotations, который возвращает все аннотации в диапазоне. (I1fa00)
Изменено название пакета для Locale и LocaleList с androidx.ui.text на androidx.ui.intl (I8132c).
У курсора TextField есть мигающая анимация (Id10a7)
Изменение API: AnnotatedString(builder: Builder) переименовано в annotatedString(builder: Builder). (Ia6377)
Изменение API: AnnotatedString.Item переименован в AnnotatedString.Range. (I2d44d)
Переименован метод AnnotatedString.Builder.addAnnotationString в addStringAnnotation. (I5059e)
Теперь можно скрыть или показать виртуальную клавиатуру с помощью SoftwareKeyboardController, который передается через обратный вызов onTextInputStarted (I8dc44, b/151860051).
Добавлен оператор сложения для (Text/Paragraph/Span)Style, который делегирует функции merge(). (Ia1add)
Функция FontWeight.lerp больше не привязывается к сетке. но это по-прежнему класс данных. (I521c2)
Конструктор FontWeight теперь общедоступен и больше не является классом данных. (Id6b1f)
Добавлены функции getLineStart, getLineEnd, getEllipsisOffset и getEllipsisCount в TextLayoutResult (Ibc801)
Модуль ui-text переименован в ui-text-core (I57dec).
Удален неиспользуемый класс Size, поскольку в модуле ui-geometry есть дублирующий класс Size, который используется. (I1b602)
Добавлен компонент AdapterList – список с прокруткой, который только составляет и размещает видимые элементы. Известные проблемы: работает только в вертикальной ориентации и не всегда корректно обрабатывает изменения дочерних элементов. (Ib351b)
Добавление параметров отступов, границ, формы и фона в Box (I05027, b/148147281)
Исправление ошибок
- Обратный вызов onFocusChange в текстовых полях переименован в onFocusChanged (Ida4a1)
- Компоненты VerticalScroller и HoriziontalScroller больше не поддерживаются. Используйте ScrollableColumn и ScrollableRow, чтобы создать встроенный интерфейс с поведением и параметрами Column/Row, или Modifier.verticalScroll и Modifier.horizontalScroll для собственного элемента. Аналогично, ScrollerPosition был объявлен устаревшим в пользу ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
runOnIdleComposeпереименован вrunOnIdle(I83607)- Некоторые API для тестирования были переименованы, чтобы их названия были более понятными. Все API findXYZ переименованы в onNodeXYZ. Все API doXYZ были переименованы в performXYZ. (I7f164)
- Теперь интерфейс Compose можно создавать внутри ViewGroups без необходимости новой композиции. Пример можно найти в ViewInteropDemo. (I9ab0b, b/160455080)
- В MutableVector добавлены функции sortWith и removeRange (Icccf7).
- Реализуйте маркеры перетаскивания, чтобы изменить выделение для TextField. (I27032)
- Удален встроенный класс Shader, который использовался для класса NativeShader. Класс NativeShader переименован в Shader. Встроенный класс Shader не добавлял ничего ценного в API и был встроенным классом, поэтому используйте класс NativeShader напрямую. (I25e4d)
Изменен код PainterModifier, чтобы масштабирование больше не выполнялось на основе заданных ограничений и параметра ContentScale. Реализации Painter должны самостоятельно масштабировать контент в соответствии с размером DrawScope, в который они рисуют.
Устранена проблема, из-за которой размер кешируемой растровой карты VectorPainter был задан по умолчанию, а не в соответствии с размером, указанным для рисования.
Обновлен ImagePainter, чтобы масштабировать контент, а не полагаться на PainterModifier. (I6ba90)
Добавлена функция верхнего уровня withFrameNanos для определения времени анимации (Ie34c5).
Аннотация @Untracked больше не поддерживается. Замените на @ComposableContract(tracked=false) (Id211e)
androidx.ui.foundation.TextFieldValue и androidx.ui.input.EditorValue больше не поддерживаются. Компонуемые функции TextField, FilledTextField и CoreTextField, в которых используется этот тип, также устарели. Используйте androidx.ui.input.TextFieldValue (I4066d, b/155211005).
Исправлена ошибка, из-за которой при обработке ввода указателя происходил сбой, если фильтры PointerInputFilters удалялись с помощью субкомпозиции во время обработки. Теперь эта неполадка устранена. (I1f48b, b/157998762)
Устранена проблема, из-за которой при отправке данных указателя происходил сбой, если фильтры PointerInputFilters удалялись с помощью субкомпозиции. Теперь эта неполадка устранена. (Iab398, b/157998762)
Класс Radius был преобразован в класс inline. Удалены методы создания дополнительных объявлений. Вместо них используется конструктор функций с параметром по умолчанию, чтобы радиус по оси Y совпадал с обязательным параметром радиуса по оси X.
Обновлена функция DrawScope.drawRoundRect, которая теперь принимает один параметр Radius вместо двух отдельных значений float для радиуса по осям X и Y (I46d1b).
Компонуемый элемент Recompose больше не является полезной абстракцией. Большинство повторных композиций должно происходить в результате присвоений MutableState. В остальных случаях рекомендуется использовать функцию
invalidate, чтобы запустить повторное создание текущей области. (Ifc992)В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose на использование класса Dp и примитивных типов для параметров пикселей (Iede0b).
Изменяет стратегию генерации кода компилятора Compose. До изменений компилятор Compose преобразовывал вызовы функций, которые можно использовать в композиции. Теперь мы преобразуем тело composable-функции, оставляя место вызова практически без изменений.
Это означает, что большая часть логики, связанной с передачей данных в среду выполнения Compose, выполняется в начале тела функции, а не в месте ее вызова.
Это изменение должно быть совместимо с исходным кодом для всех случаев использования функции compose. Большинству пользователей Compose не нужно будет обновлять код.
Чтобы обеспечить поддержку этой работы, сигнатура JVM всех функций, которые можно комбинировать, была изменена. Функция Composable, принимающая один параметр, преобразуется в функцию, принимающую три параметра: Composer, целочисленный ключ и целочисленную битовую маску, используемую для передачи метаданных через вызовы.
Compose теперь также преобразует аргументы по умолчанию в composable-функцию. При этом не создается дополнительная синтетическая перегрузка функции по умолчанию, поэтому в результате изменений будет определено меньше функций.
Известные изменения в поведении, которые произойдут в результате этого:
- Некоторые звонки будут пропускаться, хотя раньше этого не происходило.
- Теперь составные выражения в выражениях аргументов по умолчанию правильно обрабатываются и на них можно подписываться.
В ходе этой работы были выполнены следующие оптимизации: 1. Результаты сравнения параметров передаются через граф вызовов другим функциям, которые можно комбинировать. Это приведет к меньшему количеству сравнений во время выполнения, уменьшит размер таблицы слотов, а также позволит пропускать больше составных функций, которые ранее не пропускались. 2. Параметры, которые во время компиляции определяются как статические, больше не сравниваются и не хранятся во время выполнения. Это уменьшает количество сравнений и размер таблицы слотов. 3. Структура управления потоком тела функций используется для минимизации количества создаваемых групп. Это уменьшает размер таблицы слотов и снижает нагрузку на среду выполнения 4. Неиспользуемые параметры отправки и получателя для функций не учитываются при определении возможности пропуска функции, если они не используются в теле функции.
Большинство критических изменений коснулись API, на которые непосредственно нацелен компилятор, поэтому типичное использование Compose не будет затронуто: 1. Composer::startExpr был удален 2. Функция Composer::endExpr удалена 3. Composer::call устарел 4. Перегрузки функции
key, не использующие varargs, удалены. Используйте версиюvararg. 5. Аннотация Pivotal устарела. Используйте вместо негоkey. 6. Функция ScopeUpdateScope::updateScope теперь принимает Function3 вместо Function1. 7. Функции restartableFunction и restartableFunctionN были обновлены и теперь включают дополнительные параметры времени компиляции (I60756, b/143464846).Удалены устаревшие модификаторы LayoutAlign. (I10877)
Удален RepaintBoundary в пользу DrawLayerModifier (I00aa4)
У компонентов Button, FloatingActionButton и Clickable теперь есть отдельный параметр
enabled. Некоторые параметры кнопки были переименованы или изменены. (I54b5a)Заменили ButtonStyle отдельными функциями и удалили перегрузку текста (строки). Чтобы узнать, как использовать эти данные, ознакомьтесь с обновленными примерами. (If63ab, b/146478620, b/146482131)
Критические изменения в API для фоновых функций. Подробную информацию можно найти в документации по журналам и
Ambient<T>(I4c7ee, b/143769776).Изменено поведение TextDirection по умолчанию, чтобы оно определялось LayoutDirection. Например, если LayoutDirection – RTL, то TextDirection по умолчанию будет RTL. Ранее использовалось значение TextDirection.ContentOrLtr/Rtl (I4e803).
Исправлена ошибка, из-за которой текст неправильно отображался, когда вес и стиль шрифта были вложены в AnnotatedString. (I77a9d)
Добавлены часто используемые параметры в Text(). Если вы создаете локальный стиль текста, чтобы передать небольшое количество этих параметров, например Text(style = TextStyle(textAlign = TextAlign.Center)), теперь вы можете просто указать параметры напрямую: Text(textAlign = TextAlign.Center) (I82768).
Модуль ui-android-text переименован в ui-text-android (I68cbe)