Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(Документация по 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 приложения или модуля зависимости для нужных артефактов:
Яркий
dependencies { implementation "androidx.compose.foundation:foundation:1.12.1" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.12.1") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Подробнее о зависимостях приведено в статье Добавление зависимостей сборки.
Отзыв
Ваши отзывы помогают нам улучшать Jetpack. Если вы обнаружите проблемы или решите что-то предложить, отправьте отзыв. Прежде чем создавать новую проблему, ознакомьтесь с существующими. Вы можете добавить свой голос к существующей проблеме, нажав на значок звездочки.
Дополнительную информацию можно найти в документации по системе отслеживания ошибок.
Версия 1.13
Версия 1.13.0-beta01
7 октября 2026 г.
Выход androidx.compose.foundation:foundation-*:1.13.0-beta01. Версия 1.13.0-beta01 содержит эти коммиты.
Изменения в API
- Добавлены аннотации
@FloatRangeи@IntRangeк параметрам фабрикиPolygonShapeиPolygonShapeScope, а также ограничениеinnerRadiusRatioвPolygonShape.starиPolygonShape.pillStarдо(0f, 1f). (I47ea3) - Обновлены API
PolygonShape:CornerRoundingперенесен на верхний уровень с фабрикамиdp()иfraction(), а расширенияtransformed()иscaledToFit()заменены на изменяемыеPolygonShape.transform(PolygonShapeTransformScope.() -> Unit)иPolygonShape.copy(). (If5970) - Исправлена ошибка, из-за которой запрос фокуса на
BasicTextFieldдо того, как окно получило фокус (например, вonCreate), приводил к тому, что экранная клавиатура не появлялась.BasicTextFieldтеперь ждет, пока окно получит фокус, прежде чем начать сеанс ввода текста. Если это вызывает проблемы у разработчиков, вы можете вернуться к предыдущему поведению, установив для параметраComposeFoundationFlags.isTextFieldWaitWindowFocusForInputSessionEnabledзначение false. (I4206b) - Теперь библиотеки предназначены для Kotlin 2.2 и требуют kotlinc 2.2 (I82396, b/498369605).
- В класс
CommonStyleдобавлен методstyleLayer(), который указывает, что все свойства на слое имеют приоритет над свойствами, заданными на более низком уровне. Методstate()(и вспомогательные функции, такие какpressed()) теперь неявно создает слой. (I24473)
Исправление ошибок
- Исправлена ошибка в
FlexBox, из-за которой при неправильной настройкеalignContent(FlexAlignContent.Stretch) дочерние элементы растягивались вместе со строкой. (Ida156) - Исправлена ошибка в
FlexBox, из-за которой одна перенесенная строка (FlexWrap.WrapилиFlexWrap.WrapReverse) принудительно расширялась до минимального ограничения контейнера по поперечной оси, что приводило к неправильному выравниванию объектов вalignContentиalignItems. (I038b1) - Исправлен сбой
IllegalStateExceptionпри обновленииconsumeWindowInsets,windowInsetsPaddingилиonConsumedWindowInsetsChangedна отсоединенных узлах модификаторов, например во время перемещенияmovableContent. (I80ae5) - Зависимость
androidx.lifecycle:lifecycle-runtimeбыла обновлена до версии 2.10.0. Эта версия необходима для выполнения встроенных проверок lint времени выполнения жизненного цикла с AGP версии 9.5.0-alpha04 или более поздней. (I99bfd, b/556807521)
Версия 1.13.0-alpha03
9 сентября 2026 г.
Выход androidx.compose.foundation:foundation-*:1.13.0-alpha03. Версия 1.13.0-alpha03 содержит эти коммиты.
Изменения в API
- Добавлена поддержка указания стиля отдельных частей составной composable-функции (например,
TextFieldилиDatePicker) непосредственно в параметре style composable-функции. Это позволяет, например, создать composable-функцию, похожую наTextField, которая позволяет настроить каждый из декораторов с помощью стиля, чтобы их можно было переопределить на уровне темы или в месте вызова. (I43c0f) - Перегрузки текстового поля Material 2, принимающие параметры
value, onValueChange, устарели. Перейдите на перегрузку, в которой для сохранения состояния используетсяTextFieldState. (I6b841, b/556234973) - Удалена аннотация "
@ExperimentalFoundationApi" из видео "undoState" на канале "TextFieldState". (I93a44) - Добавьте объекты конфигурации по умолчанию для каждого ленивого макета, содержащие значения по умолчанию, используемые в соответствующих функциях
@Composeable. В настоящее время содержит только окно кеша по умолчанию для каждого макета. (I58633) - Если флаг
isUsingDynamicDefaultCacheWindowIn[List|Grid|StaggeredGrid]sвключен, ленивые макеты будут использовать окно кеша, в котором средний размер видимых элементов используется для предварительной выборки за пределами области просмотра. Минимальный размер окна предварительной выборки составляет 10% области просмотра, а максимальный – 50 %. (I59212) - Прекращена поддержка функций
LazyListPrefetchStrategy,LazyListPrefetchScopeиLazyListPrefetchResultScope. Поведение при предварительной выборке следует настраивать с помощью файлаLazyLayoutCacheWindowна устройствеLazyColumnилиLazyRow.LazyLayoutCacheWindowпредоставляет декларативный механизм кеширования на основе области просмотра, который автоматически подготавливает элементы перед видимым окном и сохраняет элементы за ним без необходимости использовать сложные императивные обратные вызовы планирования. Новый API проще и требует меньше действий по настройке, чемLazyListPrefetchStrategy. (I1fa2d) - Добавлены функции расширения
PolygonShape.transformedиPolygonShape.scaledToFitв Compose Foundation для преобразования и подгонки многоугольников. (I3f327) - В результате этого изменения Styles API будет разделен на две независимые части: Styles DSL и модификаторы, которые настраиваются с помощью DSL. Предыдущая реализация на основе
Styleпо-прежнему присутствует, но будет признана устаревшей и удалена. Все случаи его использования следует заменить на новый API на основеCommonStyle. - Основные добавленные компоненты:
CustomStyleиCommonStyle– базовые интерфейсы и вспомогательные функции для объединения, которые позволяют объявлять стили, применимые к нескольким элементам.StyleResolver: разрешает свойства стиля в композиции и привязывает их к узлам макета с помощьюModifier.styleResolver.Modifier scopes:Modifier.appearance,Modifier.placement, а также динамическиеModifier.paddingиModifier.graphicsLayerна основе обратного вызова.- Примитивы ресурса:
stylePropertyOf,styleLocalOf. - Типы, подходящие для свойств стиля:
Breadth,FillиShadows.
- Новые модификаторы полезны для реализации системы дизайна с помощью Styles API, но не являются обязательными. В системе дизайна могут использоваться эти модификаторы или собственные. (Ieb8cc, b/549921960)
- Удалена аннотация
ExperimentalFoundationApiизTextFieldBufferAPI, которые отслеживают изменения (I546a7). - В Compose Foundation добавлен элемент
MorphPolygonShapeдля создания анимаций морфинга между многоугольниками, а также конвертерыtoPolygonShape()дляRoundedCornerShapeиCutCornerShape. (Ic5a89) - В Compose Foundation добавлен класс
PolygonShapeдля отрисовки обычных, звездчатых и пользовательских многоугольников со скругленными углами. (I0b99d) - Перегрузки
BasicTextField, принимающие параметрыvalue, onValueChange, устарели. Перейдите наBasicTextField, в котором для сохранения состояния используетсяTextFieldState. (I636bf, b/552879150) - В соответствии с
BasicTextField(value, onValueChange),VisualTransformationтакже устарел, поскольку он доступен только через этот вариантTextField. Существующие преобразования должны быть перенесены вOutputTransformation. (I636bf, b/552879150) - Передача
LazyLayoutCacheWindowиLazyListPrefetchStrategyчерезLazyListStateбольше не поддерживается. Вместо этого нужно передаватьLazyLayoutCacheWindowв composable-функцию. (I71f19) - Удален временный флаг функции
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabled. (Ifff7f) - Добавлен параметр
InputTransformation.maxLengthTrim, чтобы ограничить длину текста путем усечения лишних символов. Добавлен параметрInputTransformation.maxLengthReject, чтобы отклонять входные данные, превышающиеmaxLength. ПараметрInputTransformation.maxLengthобъявлен устаревшим в пользу параметровmaxLengthTrimиmaxLengthReject. (I8d4cd)
Исправление ошибок
compileSdkдля библиотек Compose обновлены до версии 37.1. Это потребует транзитивного обновленияcompileSdkдля всех приложений и библиотек, использующих Compose. (I05b0f)- Исправлена проблема, из-за которой вставки IME
WindowInsetsRulersне помечались как анимированные во время прогнозируемого возврата, а также проблема, из-за которойimePaddingне обновлялся при переключении фокуса между текстовыми полями. (Id4562, b/537386261, b/539686000) - Обновлены компоненты
SecureTextFieldиOutlinedSecureTextField(а также устаревшие перегрузкиBasicSecureTextField), чтобы в качестве режима обфускации по умолчанию использовалсяTextObfuscationMode.SystemвместоTextObfuscationMode.RevealLastTyped. (I76c7e)
Версия 1.13.0-alpha02
26 августа 2026 г.
Выход androidx.compose.foundation:foundation-*:1.13.0-alpha02. Версия 1.13.0-alpha02 содержит эти коммиты.
Изменения в API
- API макета "Сетка продвигаемых товаров" (
Grid,GridScope,GridConfigurationScope,GridFlow,Fr,GridTrackSize,GridTrackSpec,Modifier.gridItem) теперь стабильны. (I43ac4, b/462550392) - Добавлено новое семантическое свойство
BackgroundColorдля Modifier.background (I7eec3, b/518049030). - Удалена аннотация
ExperimentalFlexBoxApi, а свойства на основе пикселей вFlexConfigScopeпереименованы с добавлением суффиксаPxво избежание неясности. (I5b24e, b/543092286) - Хранить в кеше только объекты, которые не используются при предварительном просмотре. Добавлен флаг
isKeepAroundDuringLookaheadDisabled. Чтобы вернуться к прежнему поведению, установите для флага значениеfalse. (I110e9) - Добавлен флаг
isLazyLayoutItemAnimatorVisibleBoundsFixEnabled. Если эта функция включена, границы видимого индекса элемента рассчитываются до того, как в тактахLazyListиLazyGridбудут запущены анимации размещения. (I56150) - Исправлена ошибка потребления при первом проходе в Draggable. Это гарантирует, что если событие нажатия будет обработано при первом проходе, перетаскивание начнется сразу при основном проходе. Это изменение поведения контролируется флагом функции
ComposeFoundationFlags.isDraggableInitialPassConsumptionFixEnabled. (I6a77f, b/532946466)
Версия 1.13.0-alpha01
12 августа 2026 г.
Выход androidx.compose.foundation:foundation-*:1.13.0-alpha01. Версия 1.13.0-alpha01 содержит эти коммиты.
Критические изменения
- Как мы и сообщали в предыдущем выпуске, реализация
Modifier.onFocusedBoundsChangedполностью удалена. Использование этого модификатора теперь не приводит к каким-либо действиям. Перейдите на использованиеFocusTargetModifierNode.getFocusedRect(), чтобы запрашивать эту информацию по мере необходимости. (Ia39db, b/220030968)
Изменения в API
- Передача
LazyLayoutCacheWindowиLazyGridPrefetchStrategyчерезLazyGridStateбольше не поддерживается. Вместо этого нужно передаватьLazyLayoutCacheWindowв composable-функцию. (I3f31e) - Удалить флаг
isSkipItemPlacementAnimationFixEnabled(I890f3, b/493183465) - Удалить флаг
isClearNestedScrollCoroutineScopeFixEnabled(Iedfd7, b/506963276) - Изменен флаг "
isCacheWindowVisibleItemCountCheckEnabled" на "isCacheWindowLookaheadCheckEnabled" (I2ea06). TextFieldStateтеперь сохраняет и восстанавливает информацию о стиле текста.AnnotatedString.Annotation.Saverтеперь является общедоступным, что позволяет сохранять и восстанавливать объектыAnnotatedString.Annotation. (I8b533, b/135556699)- Добавляет окно кеша в раскладку с ленивой шахматной сеткой. Чтобы вернуться к прежнему поведению при предварительной выборке, задайте для параметра
isUsingCacheWindowInStaggeredGridsзначение false. (I1c70d) FlexBoxи связанные с ним API конфигурации перешли в стабильную версию и больше не являются экспериментальными. (I209ed, b/475491619)- В
FlexBoxдобавлена конфигурацияmaxItemsInEachLine, позволяющая ограничить количество объектов в строке при включенном переносе. (I2744b, b/475491619) - Добавлены аннотации для переопределяемых пустых базовых методов в Compose с помощью
@EmptySuper, чтобы указать, что переопределяемые реализации не должны вызывать super. (Id407b) - API видимости и анимации
WindowInsetsпереведены в стабильную версию. (I37441, b/537329254) - Теперь при нажатии на кликабельные элементы на устройствах Android автоматически воспроизводятся звуковые эффекты взаимодействия. (Ia72f8)
- Теперь окно кеша заполняет окно "Вперед", если количество видимых объектов меняется без прокрутки. Чтобы отключить эту проверку и вернуться к прежнему поведению, задайте для флага
isCacheWindowVisibleItemCountCheckEnabledзначениеfalse. (I67b5a) - Обновлено свойство
NestedScrollDispatcher.coroutineScope, чтобы безопасно возвращать отмененный объектCoroutineScope, когда он не прикреплен или откреплен. (I9b112, b/535290281) - Переименован источник
enableNonScrollCachingвisNonScrollCachingEnabled(I7a54b, b/535290282) - Добавлен символ @
CheckResultв функцииSemanticsNodeInteraction.isDisplayed() иisNotDisplayed(), чтобы их возвращаемые значения проверялись. Это предотвращает незаметные сбои при тестировании, когда разработчики по ошибке используют эти функции вместо API утверждений. (I1b447, b/508178494) - Сделайте
LazyLayoutCacheWindowстабильной версией (I2cda3) - Добавлен параметр
bringIntoViewSpecдля горизонтального и вертикального пейджера, позволяющий переопределять реализацию пейджера по умолчанию. (Icdcbf, b/505052292) - Исправлена ошибка в планировщике предварительной выборки ленивой загрузки, связанная с обнаружением бездействия. Раньше планировщик мог ошибочно считать себя бездействующим, когда кадр сильно задерживался, что могло приводить к временным зависаниям при прокрутке. Чтобы вернуться к прежнему поведению, установите для флага
isLazyPrefetchSchedulerIdleTimeFixEnabledзначение false. (If0594, b/458024295) - В
NestedScrollDispatcherдобавлен альтернативный APIcoroutineScopeOrNull()для доступа к родительской области сопрограммы диспетчера. (I18c0f) - Исправлена проблема со смещением горизонтального текста при прокрутке в режиме создания письма. Можно отключить с помощью метода
AndroidComposeFoundationFlags.isOverscrollPixelRoundingEnabled. (Ica169, b/532079110, b/532081619) - Добавлен флаг
isDraggableZeroDeltaConsumptionEnabled, позволяющий контролировать развертывание этого исправления в Draggable. Теперь события с нулевой дельтой обрабатываются правильно. (I50eb1, b/524163413) - Теперь при одновременном обновлении текста выделение текста безопасно ограничивается длиной текста, чтобы предотвратить сбои. (I64fd7)
- У пользователя
androidx.benchmarkтеперьminSdk(24). (Ic2a85) - Ссылки теперь лучше обрабатывают клики, когда они занимают несколько строк. Чтобы это реализовать, область прикосновения была переопределена на 0. Если это нежелательно, используйте флаг
ComposeFoundationFlags.isLinkMinimumTouchTargetSizeZeroEnabled, чтобы переопределить поведение. (Ide41b, b/361106057) - Исправлена ошибка, возникавшая при записи в изменяемый объект состояния. (I48194, b/503110696)
- Добавьте наблюдаемые объекты
keysвSaveableStateHolder, чтобы упростить навигацию и управление состоянием стека возврата, а также отказаться от внешнего отслеживанияkey. Доступ черезholder.keys; удалить с помощьюremoveState. (I9bbbb, b/398887924) - Удалена устаревшая экспериментальная вспомогательная функция
IndirectPointerEvent. (I05dee, b/499336763, b/501098299, b/501098376, b/513249467) - Повышена стабильность работы
LocalBringIntoViewSpecна устройствах Android. (Ibcb97) - Добавлен флаг
isMultiLaneCacheWindowEnabled(I3d997). - Создан новый API
SelectionState, который будет передаваться вSelectionContainerдля отслеживания выбранного текста и программного обновления выделения." в androidx-main am: 929401883c am: c02871cac4 (I15bd4) - Добавлен метод
LocalTextFieldContentObserverRegistrationExecutor, который позволяет делегировать неявную регистрациюContentObserver, происходящую вTextField, фоновому потоку. (Ib4fa6, b/505287297, b/509842675) - Название "
TextObfuscationMode.Default" изменено на "System".TextObfuscationMode.RevealLastTypedтеперь всегда показывает последний введенный символ. Аргумент по умолчанию дляBasicSecureTextFieldизменен на "Система". (If26d3, b/425658491, b/453647378)
Исправление ошибок
- Исправлена проблема, из-за которой при быстрой прокрутке в Compose, вложенном в контейнер прокрутки Android (например,
ScrollViewилиCoordinatorLayout), иногда неправильно рассчитывалась скорость. (I0f017) - Исправлена проблема в
FlexBox, из-за которой при использовании обратного направления, обратного переноса или пользовательского порядка элементов переход фокуса не соответствовал визуальному порядку элементов. (I4cc61, b/521609263) - Исправлена проблема, из-за которой стандартные модификаторы макета, такие как
Modifier.fillMaxWidth()иModifier.fillMaxHeight(), не влияли на элементы внутриFlexBox, если не был указан явный фактор растяжения flex. (Ib0ac3, b/515657458) - Оптимизированная инициализация на уровне файла свойств класса значений верхнего уровня
foundationс помощью динамических методов получения. (I570d7) - Оптимизированная инициализация сопутствующих объектов классов значений
foundation-layout(WindowInsetsSidesи т. д.) с помощью динамических методов получения. (I01c2b) - Исправлена ошибка, из-за которой пункты контекстного меню для выбора текста в режиме создания письма отображали устаревшие строки после переключения языка в приложении, когда перезапуск Activity был отключен с помощью
android:configChanges. (Ic910b, b/515156417) - Оптимизированная инициализация сопутствующих объектов классов значений
compose:foundation(KeyModifiers,MarqueeAnimationMode,Sourceи т. д.) с помощью динамических методов получения. (I78455) - Исправлены анимации стилей, чтобы при переходе к значению, которое задается в анимации только при определенных условиях, и обратно оно обрабатывалось как переход к значению по умолчанию и обратно. (I8e41d, b/527140078)
- Исправлена проблема в Grid, из-за которой автоматически размещенные элементы с диапазоном, превышающим доступные явные дорожки в ограниченном направлении, выходили за границы сетки при применении промежутков. (I00ce0, b/506570362)
- Удалена информация об API (Ia8066)
- Исправлена ошибка в
BasicTextField, из-за которой при запросе не предоставлялись обновления извлеченного текста для IME. (I746fa, b/203549026, b/492363474)
Версия 1.12
Версия 1.12.1
9 сентября 2026 г.
Выход androidx.compose.foundation:foundation-*:1.12.1. Версия 1.12.1 содержит эти коммиты.
Версия 1.12.0
12 августа 2026 г.
Выход androidx.compose.foundation:foundation-*:1.12.0. Версия 1.12.0 содержит эти коммиты.
Важные изменения с версии 1.11.0
Версия 1.12.0-rc01
29 июля 2026 г.
Выход androidx.compose.foundation:foundation-*:1.12.0-rc01. Версия 1.12.0-rc01 содержит эти коммиты.
Версия 1.12.0-beta02
1 июля 2026 г.
Выход androidx.compose.foundation:foundation-*:1.12.0-beta02. Версия 1.12.0-beta02 содержит эти коммиты.
Версия 1.12.0-beta01
17 июня 2026 г.
Выход androidx.compose.foundation:foundation-*:1.12.0-beta01. Версия 1.12.0-beta01 содержит эти коммиты.
Изменения в API
- Переименована тестовая функция для запуска событий непрямого указателя (I3ee35, b/509618414).
- Название "
TextObfuscationMode.Default" изменено на "System".TextObfuscationMode.RevealLastTypedтеперь всегда показывает последний введенный символ. Аргумент по умолчанию для функцииBasicSecureTextFieldизменен наSystem. (If26d3, b/425658491, b/453647378) - Функции
getSpanStylesиgetParagraphStylesтеперь принимают параметрTextRangeвместо отдельных индексов начала и конца. Ослаблена проверка границ в запросах стиля, чтобы больше не возникали исключения, и предотвращены сбои при запросе свойств недействительных объектовTrackedRanges. (I62a9a, b/514404697) - В макет "Сетка" добавлена функция именованных областей. Теперь разработчики могут определять семантические области с помощью
GridConfigurationScope.area()и размещать в них объекты, используя новую перегрузкуModifier.gridItem(area), отделяя семантическое намерение от физических координат. (Id9303, b/487503921) - Добавлены операторы и функции фабрики комбинаций для
FlexBoxConfigиFlexConfig, позволяющие объединять и переопределять конфигурации макета. (Icfdd8, b/475491619) - Добавлены функции
RevealState.drag(),SwipeToRevealDragScopeи пользовательский параметрflingBehaviorвSwipeToReveal, чтобы можно было программно управлять жестами пролистывания, смещениями и анимацией перехода в конечное состояние. (Ibfe56, b/484185090)
Исправление ошибок
- Исправлена ошибка, из-за которой панель инструментов для выбора текста могла не обновлять свое положение или элементы. (Ib2566)
Внешний вклад
- В
SelectionContainerразрешить выбор (с помощью мыши) в пустых областях между элементами, которые можно выбрать, вText. (I93f69, b/502151445) - Добавлен интерфейс
AndroidClipboardдля тестирования, позволяющий имитировать реализацию буфера обмена (Ie4d72, b/512924975). - Добавлена обратная совместимость для вариантов
TextAttributecommitText()иsetComposingText(). В SDK версии 37 и выше сервисы специальных возможностей могут сообщать, выбран ли предложенный текст. Для SDK версии ниже 37 не влияет на голосовую обратную связь (то есть сохраняется существующее поведение). (I90e3d, b/439879822)
Версия 1.12.0-alpha03
19 мая 2026 г.
Выход androidx.compose.foundation:foundation-*:1.12.0-alpha03. Версия 1.12.0-alpha03 содержит эти коммиты.
Изменения в API
- В экспериментальном API стилей добавлена поддержка создания собственных типов стилей с пользовательскими областями действия. Это позволяет задавать подмножества свойств, которые можно задать с помощью стиля (например, полностью удалить графический слой или текстовые свойства), а также расширять область действия независимо от других стилей (например, поддерживать синтаксис
playing { }только в composable-функцииMediaPlayer). Это изменение нарушает совместимость с двоичными файлами и исходным кодом. Основное изменение, нарушающее совместимость с исходным кодом, заключается в том, что вспомогательные функции вStyleScopeтеперь являются функциями расширения (например,fun contentProperty(all: Dp)теперь функция расширения). Чтобы код, вызывающий эти методы, компилировался правильно, достаточно импортировать нужные функции расширения или все символы из androidx.compose.foundation.styles. (I1ef27, b/493676648). - В реализациях
ScrollIndicatorStateтеперь правильно возвращается смещение прокрутки от начала визуального представления для макетов с обратным порядком, что обеспечивает корректное визуальное представление индикаторов. (Ia3fae, b/503604996) - Добавлен флаг
isClearNestedScrollCoroutineScopeFixEnabledдля управления исправлением. (Ibd394, b/505343254)
Внешний вклад
- Включена автоматическая прокрутка при перетаскивании выделенного текста за пределы области просмотра в
SelectionContainer. (Ibcb08, b/424433794)
Версия 1.12.0-alpha02
6 мая 2026 г.
Выход androidx.compose.foundation:foundation-*:1.12.0-alpha02. Версия 1.12.0-alpha02 содержит эти коммиты.
Версия 1.12.0-alpha01
22 апреля 2026 г.
Выход androidx.compose.foundation:foundation-*:1.12.0-alpha01. Версия 1.12.0-alpha01 содержит эти коммиты.
Изменения в API
- Добавлен новый флаг
isBasicTextFieldHeighInLinesOptimizationEnabled, позволяющий оптимизировать расчет высоты текстового поля в количестве минимальных и максимальных строк. По умолчанию он должен быть включен. Если вы обнаружите, что после отключения этого флага макет текстового поля стал работать корректно, сообщите об ошибке команде Compose. (Idffae, b/486871837, b/487546327) - Исправлена ошибка, из-за которой при редактировании текста с помощью жестов не удавалось выбрать
textfield. (I6fd98, b/490509264) - Добавлена поддержка свойства
colorFilterвStyleScopeв Compose Foundation. (I553a0) - Объект
textMotionдобавлен в список "StyleScope" (Id8523, b/482301609) - Добавлены дополнительные варианты
KeyboardType, чтобы дополнить набор поддерживаемых вариантов клавиатуры на устройствах Android, включая дату, время, дату и время, десятичное число со знаком и т. д. (I3713e, b/202353328) - Удалить флажок
isNestedDraggablesTouchConflictFixEnabled(I79e52, b/485966180) - Удалить флажок
isDelayPressesUsingGestureConsumptionEnabled(I533dd, b/485966702) - Удалите флаг
isBringIntoViewRltBouncyBehaviorInPagerFixEnabled, так как он был выпущен в стабильной версии. (I73fb2, b/485967682) - Удалите флаг
isCacheWindowRefillFixEnabled, так как он был выпущен в стабильной версии. (Ic7505, b/485967875) - Удаляет
ComposeFoundationFlags#isNonSuspendingPointerInputInCombinedClickableEnabled(I1f76c, b/485966320, b/477836055) - Добавлены перегрузки для
contentPaddingиexternalPaddingвStyleScope, которые принимаютPaddingValues. (I3a6ce, b/493154098) - Изменено значение
VelocityTracker, чтобы использовать реализацию, предоставленную фреймворком Android (настраивается с помощьюAndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled). (Ibc7e2, b/359962905)
Исправление ошибок
- Изменен способ отслеживания анимаций и свойств, чтобы избежать наложения анимаций для одного и того же свойства. (I4921f)
- Исправлена ошибка, из-за которой контекстное меню переставало работать, когда
TextField(или выделяемый текст) находился в диалоговом окне. (I21461, b/441759435) - Обновлена версия Compose
compileSdkдо API 37. Это означает, что при использовании Compose требуется минимальная версия AGP 9.2.0. (Id45cd, b/413674743) - Исправлена ошибка в сетке, из-за которой фокус клавиатуры и переход к элементам для специальных возможностей выполнялись в порядке композиции элементов, а не в порядке визуального размещения в виде буквы Z. (I122a8, b/494096503)
- Исправлена ошибка, из-за которой панель инструментов для выделения текста некорректно скрывалась, когда начальный и конечный маркеры выравнивались по горизонтали (например, при выделении нескольких строк, заканчивающихся пустой строкой). (I391d2, b/497724722)
- Исправлена ошибка в
FlexBox, из-за которой элементы неправильно уменьшались при выходе за границы контейнера. (Ia741d, b/480797591) - Исправлена ошибка, из-за которой не удавалось правильно аннулировать
foregroundColor. (I74abe, b/493245886) - Исправлены устаревшие вставки в случае, когда прослушиватель вставки для Compose отсоединен и присоединен повторно. (I1e905, b/491346046, b/486084139)
- Когда пользователь перемещает курсор за пределы области прокрутки, курсор теперь прокручивается в видимую область. (If694c, b/266094055)
Версия 1.11
Версия 1.11.4
1 июля 2026 г.
Выход androidx.compose.foundation:foundation-*:1.11.4. Версия 1.11.4 содержит эти коммиты.
Версия 1.11.3
17 июня 2026 г.
Выход androidx.compose.foundation:foundation-*:1.11.3. Версия 1.11.3 содержит эти коммиты.
Версия 1.11.2
19 мая 2026 г.
Выход androidx.compose.foundation:foundation-*:1.11.2. Версия 1.11.2 содержит эти коммиты.
Версия 1.11.1
6 мая 2026 г.
Выход androidx.compose.foundation:foundation-*:1.11.1. Версия 1.11.1 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка в
FlexBox, из-за которой элементы неправильно уменьшались при выходе за границы контейнера. (Ia741d, b/480797591)
Версия 1.11.0
22 апреля 2026 г.
Выход androidx.compose.foundation:foundation-*:1.11.0. Версия 1.11.0 содержит эти коммиты.
Версия 1.11.0-rc01
8 апреля 2026 г.
Выход androidx.compose.foundation:foundation-*:1.11.0-rc01. Версия 1.11.0-rc01 содержит эти коммиты.
Изменения в API
- Исправлена ошибка, из-за которой при редактировании текста с помощью жестов не удавалось выбрать
textfield. (I2ba33, b/490509264)
Версия 1.11.0-beta02
25 марта 2026 г.
Выход androidx.compose.foundation:foundation-*:1.11.0-beta02. Версия 1.11.0-beta02 содержит эти коммиты.
Изменения в API
- Добавлен флаг
isReverseLayoutNestedScrollConnectionInPagerFixEnabled, позволяющий контролировать развертывание этого исправления. (I07404, b/399800244) - Представляем
isSkipItemPlacementAnimationFixEnabledдля управления развертыванием этой функции. (Id665d, b/455884472, b/352584409, b/410487464, b/372509998) - Объект
MinMax(min: Dp, max: Fr)добавлен в список "GridTrackSize" Это позволяет разработчикам явно задавать минимальные границы гибкой дорожки. ИспользованиеMinMax(0.dp, 1.fr)позволяет успешно обойти встроенные запросы на отслеживание, поэтому компонентыSubcomposeLayout, такие какLazyColumnиLazyRow, можно безопасно размещать в дорожках с гибкой сеткой без сбоев. (Ieb8c2, b/483822148)
Исправление ошибок
- Исправлена ошибка в
FlexBox, из-за которой элементы неправильно уменьшались при достижении минимального размера. Теперь объекты правильно передают неиспользованное пространство для сжатия дочерним элементам. Кроме того,FlexBoxбольше не будет искусственно ограничивать размер элементов на главной оси. Если элементы не могут уменьшиться до размера контейнера, они будут визуально выходить за пределы главной оси. Если вы хотите обрезать изображение, используйте свойствоModifier.clipToBounds(). (Ief751, b/480797591) - Запретить Keep Around доступ к незаконным индексам. (I19121, b/485626636)
- Исправлена ошибка в макете сетки, из-за которой при расчете общего размера контейнера не учитывались промежутки между неявно созданными строками или столбцами, что приводило к обрезке контента. (Ib9df8, b/480372415)
ClipboardиClipboardManagerтеперь запрашивают системный сервис при первом вызове метода (If0016, b/487947860).- Исправлена ошибка в
RowсArrangement.spacedByв RTL, из-за которой при переполнении элементов возникали проблемы с макетом и интервалами. (I44e53, b/476006478)
Версия 1.11.0-beta01
11 марта 2026 г.
Выход androidx.compose.foundation:foundation-*:1.11.0-beta01. Версия 1.11.0-beta01 содержит эти коммиты.
Изменения в API
- Оптимизированы внутренние расчеты минимального размера для
BasicTextField. Если вам нужно отключить их, воспользуйтесь правиломComposeFoundationFlags#isBasicTextFieldMinSizeOptimizationEnabled. (I70ade) - Добавлен элемент
rememberUpdatedStyleState, который входит в экспериментальный Style API.rememberUpdatedследует использовать при создании экземпляровStyleState, когда параметры composable-функции (например,enabled) копируются в состояние стиля (Idf7ff, b/485510967). - Переименованы свойства
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) - В файл
GridConfigurationScopeдобавлено полеconstraints, позволяющее определять треки сетки на основе доступного размера. (I80a41, b/481205205, b/481205205) - В DSL
FlexBoxтеперь используются функции (например, grow(1f)) вместо свойств (например, grow = 1f) для конфигурации вFlexBoxConfigи Modifier.flex. (I8dbae, b/475491619)
Исправление ошибок
- Исправлена ошибка, из-за которой при использовании некоторых методов ввода
OutputTransformationприводило к вставке повторяющихся символов. (I9fdc0) - Добавлена поддержка жестов прокрутки на сенсорной панели (I55f8a, b/479285849).
- Добавлены контрольные показатели для экспериментального Style API (I67437).
Внешний вклад
- Добавьте свойство
InputTextSuggestionState, чтобы определять различные состояния, в которых может находиться ввод транслитерации, когда доступны предложения по замене текста. Также добавлен параметрTextCompositionRange, позволяющий отслеживать диапазон текущего текста транслитерации. Нулевое значение указывает на отсутствие композиции. (I7a67f, b/476472318) - Добавлена новая перегрузка для
BasicTooltipBox, которая позволяет настраиватьpropagateMinConstraints, как и параметр Box с тем же названием. Это позволяет передавать минимальные ограничения непосредственно дочерним элементамBasicTooltipBox, не ослабляя их с помощьюBasicTooltipBox. Спасибо, Стивен Шон! (Ib145f, b/467532639, b/301605744)
Версия 1.11.0-alpha06
25 февраля 2026 г.
Выход androidx.compose.foundation:foundation-*:1.11.0-alpha06. Версия 1.11.0-alpha06 содержит эти коммиты.
Изменения в API
- Представлен экспериментальный API стилей, который позволяет единообразно настраивать функции, созданные с помощью Compose. Этот API находится в активной разработке и может претерпеть значительные изменения до того, как станет стабильным. Информацию о том, как использовать этот API, можно найти в прилагаемой документации. (I7fed2, b/455788242)
Исправление ошибок
Modifier.combinedClickableпереписывается так, чтобы не использовать указатель на приостановку в качестве входных данных для оптимизации. Эта функция включена с помощью флага, который можно отключить, если вы обнаружите ошибку в новой реализации:ComposeFoundationFlags.isNonSuspendingPointerInputInCombinedClickableEnabled.(Iea684)
Известные проблемы
- В версии
Modifier.combinedClickableисправлена регрессия в поведении при долгом нажатии, из-за которой на некоторых устройствах при глубоком нажатии многократно срабатывало долгое нажатие. В следующей версии проблема будет устранена. До тех пор вы можете задать значениеComposeFoundationFlags.isNonSuspendingPointerInputInCombinedClickableEnabled=false, чтобы избежать ее.
Версия 1.11.0-alpha05
11 февраля 2026 г.
Выход androidx.compose.foundation:foundation-*:1.11.0-alpha05. Версия 1.11.0-alpha05 содержит эти коммиты.
Изменения в API
- Добавлен параметр
isNestedDraggablesTouchConflictFixEnabledдля устранения конфликтов при перетаскивании вложенных объектов. Мы будем отдавать предпочтение вертикальным перетаскиваниям, поскольку при выполнении вертикального жеста пользователь имеет больше свободы и неопределенности, чем при выполнении горизонтального жеста. (I273c7, b/252334353, b/269627294, b/363198504, b/442390269, b/419580124) - Добавлена поддержка жестов на сенсорной панели и преобразования событий ввода с сенсорной панели в события мыши. После этого изменения события указателя трекпада, управляющие курсором, например на планшетах или ноутбуках, будут в основном регистрироваться как события указателя мыши. Жесты масштабирования и панорамирования также будут регистрироваться с дополнительной информацией, доступной в изменениях событий указателя, с новыми значениями
PointerEventType.PanиPointerEventType.Scale, указывающими, что эти значения будут заданы (Id071a, b/315527861, b/459831570). - Представляем
isDelayPressesUsingGestureConsumptionEnabled. Если этот флаг включен, контейнеры с жестом перетаскивания будут задерживать нажатие. Это изменение касается контейнеров, созданных на основеModifier.draggable, которые ранее не задерживали нажатие. (I53f24, b/203141462) - Удалены флаг
isDetectTapGesturesImmediateCoroutineDispatchEnabledи устаревший флагDetectTapGesturesEnableNewDispatchingBehavior(I9bba3).
Исправление ошибок
- Исправлена
IndexOutOfBoundsExceptionвBasicTextField, возникавшая при использовании OutputTransformation и удалении текста. (I20ee1) - Изменено поведение
GridTrackSize.Auto. Теперь размер треков может варьироваться отmin-contentдоmax-content. (Ifa22e, b/477748472)
Внешний вклад
- Добавлена поддержка ключей движения
NumPad(I1ff12).
Версия 1.11.0-alpha04
28 января 2026 г.
Выход androidx.compose.foundation:foundation-*:1.11.0-alpha04. Версия 1.11.0-alpha04 содержит эти коммиты.
Изменения в API
- Исправлена ошибка, из-за которой значение
AnchoredDraggableStateвtargetValueбыло неправильным в некоторых сценариях с несколькими якорями с одинаковым смещением. Когда якорь устанавливался на том же смещении, что и другой якорь,targetValueошибочно возвращал последний из якорей с этим смещением. Теперь он возвращает значениеcurrentValue, когда курсор находится на смещенииcurrentValue. (I66a7a, b/476365336) - Добавлена функция
FlexBox– настраиваемая система макетов, которая является надмножеством функцийRow,Column,FlowRowиFlowColumn. Он поддерживает такие функции, как flex-grow, flex-shrink, пользовательский перенос, изменение направления и детальное управление выравниванием с помощьюFlexBoxConfigиModifier.flex. (I44780) - Добавлен новый компонент
Gridдля двумерной разметки без отложенной загрузки, созданный на основе CSS Grid. В этой версии можно задавать явные структуры сетки с дорожками разных размеров, включаяFixed,Percentage,Flex, а также варианты на основе контента с помощью блокаconfig. Основная логика макета поддерживает явное размещение элементов в сетке с помощью свойстваModifier.gridItem(). Все API, связанные с сеткой, в настоящее время являются экспериментальными и требуют согласия на их использование с помощью@OptIn(ExperimentalGridApi::class). Мы будем рады вашим отзывам о новом интерфейсе. (I04907, b/462550392)
Версия 1.11.0-alpha03
14 января 2026 г.
Выход androidx.compose.foundation:foundation-*:1.11.0-alpha03. Версия 1.11.0-alpha03 содержит эти коммиты.
Исправление ошибок
- Устранена утечка памяти в
LazyStaggeredGridпри использовании вLookaheadScopeI286ad
Версия 1.11.0-alpha02
17 декабря 2025 г.
Выход androidx.compose.foundation:foundation-*:1.11.0-alpha02. Версия 1.11.0-alpha02 содержит эти коммиты.
Изменения в API
- API
MultiModalInjectionScopeтеперь стабильны. К ним относятсяperformKeyInputиperformRotaryScrollInput, а также их базовые API для ключей и ротации. Экспериментальная аннотация удалена. (Ie8bbc, b/261561237) - Удален флажок
isNonSuspendingPointerInputInClickableEnabled. (I6a168, b/455591971)
Версия 1.11.0-alpha01
3 декабря 2025 г.
Выход androidx.compose.foundation:foundation-*:1.11.0-alpha01. Версия 1.11.0-alpha01 содержит эти коммиты.
Изменения в API
- Добавлен атрибут
Modifier.scrollIndicator, позволяющий добавлять в контейнеры с возможностью прокрутки собственные индикаторы прокрутки. В интерфейсеScrollIndicatorFactoryможно создавать индикаторы прокрутки, задавая их внешний вид и поведение. (I89322) - Контакт (
ComposeFoundationFlags.isTextFieldDpadNavigationEnabled) удален. Новое поведение теперь включено всегда. (I3f034) - Добавьте
isCacheWindowRefillFixEnabled, чтобы контролировать развертывание исправления для пополнения окна кеша. (I4e52b, b/454439658) - Контакт (
ComposeFoundationFlags.isKeepInViewFocusObservationChangeEnabled) удален. Новое поведение теперь включено всегда. (I7cbd4) Modifier.onFirstVisible()устарел, поскольку его поведение вводит в заблуждение и не всегда соответствует контракту, заявленному в названии. Например, если добавить его к элементуLazyColumn, обратный вызов будет вызываться каждый раз, когда этот элемент становится видимым после прокрутки. Это не то, чего могли ожидать пользователи модификатора с таким названием. Рекомендуем использоватьModifier.onVisibilityChanged()и вручную отслеживать, был ли макет виден ранее, в зависимости от требований конкретного варианта использования. (Ia7095, b/447601783)- Добавлен параметр
MeasuredSizeAwareModifierNode, который необходим при использовании обратного вызоваonRemeasured(). Если вам не нужны другие обратные вызовы, используйте этот интерфейс напрямую, а не более общийLayoutAwareModifierNode. (If6fb0) - Добавлен модификатор
visible, который позволяет пропустить отрисовку контента Composable, не влияя на занимаемое им пространство. (Ia6871, b/158837937)
Версия 1.10
Версия 1.10.6
25 марта 2026 г.
Выход androidx.compose.foundation:foundation-*:1.10.6. Версия 1.10.6 содержит эти коммиты.
Исправление ошибок
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabledпо умолчанию отключен из-за возможных проблем со стабильностью. (I73960, b/482223006, b/488433633)
Версия 1.10.5
11 марта 2026 г.
Выход androidx.compose.foundation:foundation-*:1.10.5. Версия 1.10.5 содержит эти коммиты.
Исправление ошибок
- Исправлена
IndexOutOfBoundsExceptionвBasicTextFieldпри использованииOutputTransformationи удалении текста. (I20ee1)
Версия 1.10.4
25 февраля 2026 г.
Выход androidx.compose.foundation:foundation-*:1.10.4. Версия 1.10.4 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой использование модификатора выравнивания из другой области (например,
ColumnScope.alignвнутриRow) приводило к неправильному позиционированию. (6888f2b, b/477639546)
Версия 1.10.3
11 февраля 2026 г.
Выход androidx.compose.foundation:foundation-*:1.10.3. Версия 1.10.3 содержит эти коммиты.
Версия 1.10.2
28 января 2026 г.
Выход androidx.compose.foundation:foundation-*:1.10.2. Версия 1.10.2 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой происходил сбой при возврате с экрана с выделенным текстом. (I9f540, b/444482508)
Версия 1.10.1
14 января 2026 г.
Выход androidx.compose.foundation:foundation-*:1.10.1. Версия 1.10.1 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой происходил сбой, когда выделение текста переходило с одного экземпляра текста на другой, расположенный горизонтально. I351311, b/439758956
Версия 1.10.0
3 декабря 2025 г.
Выход androidx.compose.foundation:foundation-*:1.10.0. Версия 1.10.0 содержит эти коммиты.
Версия 1.10.0-rc01
19 ноября 2025 г.
Выход androidx.compose.foundation:foundation-*:1.10.0-rc01. Версия 1.10.0-rc01 содержит эти коммиты.
Исправление ошибок
- Отключен флаг
isCacheWindowForPagerEnabled. (Iffdec, b/458193632)
Версия 1.10.0-beta02
5 ноября 2025 г.
Выход androidx.compose.foundation:foundation-*:1.10.0-beta02. Версия 1.10.0-beta02 содержит эти коммиты.
Версия 1.10.0-beta01
22 октября 2025 г.
Выход androidx.compose.foundation:foundation-*:1.10.0-beta01. Версия 1.10.0-beta01 содержит эти коммиты.
Изменения в API
- Все API для косвенного сенсорного ввода переименованы в API для косвенного ввода указателем, чтобы соответствовать API для ввода указателем. (I238ce, b/451607214)
- Добавлены аннотации
PagerState.currentPageOffsetFractionс помощью@FrequentlyChangingValue. (Idfaab)
Исправление ошибок
- Исправлено поведение бегущей строки при расположении справа налево. (Ib8be3)
Версия 1.10.0-alpha05
8 октября 2025 г.
Выход androidx.compose.foundation:foundation-*:1.10.0-alpha05. Версия 1.10.0-alpha05 содержит эти коммиты.
Изменения в API
PaddingValuesтеперь поддерживают сложение и вычитание, что упрощает расчеты отступов. (I327e1, b/244468479)
Исправление ошибок
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabledвключена по умолчанию. Это оптимизация производительности, которая позволяет нам лучше распределять работу, которую необходимо выполнить во время предварительной выборки. Например, мы можем выполнить композицию только для частей следующего элементаLazyColumnв одном кадре интерфейса, а затем продолжить композицию остальной части в следующих кадрах. (I4c7fe)
Версия 1.10.0-alpha04
24 сентября 2025 г.
Выход androidx.compose.foundation:foundation-*:1.10.0-alpha04. Версия 1.10.0-alpha04 содержит эти коммиты.
Изменения в API
- Сервис "
ScrollIndicatorState" добавлен дляPagerState. (I113b7) - Сервис "
ScrollIndicatorState" добавлен дляLazyStaggeredGridState. (I1028e) - Сервис "
ScrollIndicatorState" добавлен дляLazyGridState. (I9e50c) - Сервис "
ScrollIndicatorState" добавлен дляLazyListState. (I5ee29) - Сервис "
ScrollIndicatorState" добавлен дляScrollState. (I27f66) - Добавление ресурса
scrollIndicatorStateв интерфейсScrollableState(Idca93) - Флаг
isWindowInsetsModifierLocalNodeImplementationEnabledбыл удален (I15e8f, b/440964232) - Добавлен модификатор
scrollableArea(), который позволяет сделать компонент прокручиваемым с помощью обрезки контента по границам и автоматической обработки направления прокрутки контента на основе ориентации, RTL и флагаreverseScrolling. (I9471b, b/316559454)
Версия 1.10.0-alpha03
10 сентября 2025 г.
Выход androidx.compose.foundation:foundation-*:1.10.0-alpha03. Версия 1.10.0-alpha03 содержит эти коммиты.
Изменения в API
- Удаление
ComposeFoundationFlags.isNonComposedClickableEnabled(I0dfc0, b/406228525) - Переместите фабричные функции для создания экземпляров
FillableDataв сопутствующий объект. Вместо вызоваFillableData(value)используйте новые методы фабрики:FillableData.createFrom(value). (I2e200, b/441719650) - Добавлен новый узел модификатора
BeyondBoundsLayoutModifierNode, позволяющий выполнять поиск фокуса за пределами макета. (I39be1, b/416133658) - Отмечено свойство
ScrollState.valueкак@FrequentlyChangingValue. (I4723d) - Добавлен класс
LazyLayoutKeyIndexMapи фабрика для реализации по умолчанию. (I4fd0c, b/415038029)
Исправление ошибок
- Теперь столбец и строка правильно передают фактический размер объекта в
Modifier.align. Это устраняет проблему, из-за которой в пользовательскую реализациюModifier.alignпередавалось неверное значение 0. (I8194f, b/439716351)
Версия 1.10.0-alpha02
27 августа 2025 года
Выход androidx.compose.foundation:foundation-*:1.10.0-alpha02. Версия 1.10.0-alpha02 содержит эти коммиты.
Изменения в API
- Удалена пометка
isFlingContinuationAtBoundsEnabled. (I6b84f) - Удалена пометка
isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled. (I62380) - Удалена пометка
isOnScrollChangedCallbackEnabled. (I667dc) - Удалена пометка
isAutomaticNestedPrefetchEnabled. (I4f416) - Удалена пометка
DragGesturePickUpEnabled. (Ib8500) - Добавлен API
ScrollIndicatorStateдля представления состояния полосы прокрутки (I5e229)
Исправление ошибок
- Исправлена ошибка, из-за которой при использовании
Modifier.anchoredDraggableне вызывалась функцияconfirmValueChange. (Iff7cc)
Версия 1.10.0-alpha01
13 августа 2025 г.
Выход androidx.compose.foundation:foundation-*:1.10.0-alpha01. Версия 1.10.0-alpha01 содержит эти коммиты.
Изменения в API
- Обновите стратегию предварительной выборки Pager, чтобы использовать окно кеша вместо одного элемента по умолчанию в направлении прокрутки. Теперь в Pager по умолчанию включена предварительная выборка, которая выполняется на основе размера окна, равного одной области просмотра. Это означает, что мы будем пытаться заполнить всю область просмотра предварительно выбранными элементами. Объекты будут храниться дольше. (I4d45e, b/292136289)
- Добавлен флаг
ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnabled, позволяющий отключить оптимизацию производительностиWindowInsets, если новая реализация приведет к изменению поведения. (I8e912) SnapFlingBehaviorтеперь позволяет спецификациям анимации привязки превышать заданные значения во время привязки. Это позволяет, например, использовать спецификацию пружины в качествеsnapAnimationSpecдля создания анимации с эффектом пружины. При выполнении подхода со спецификацией привязки по-прежнему игнорируются значения, превышающие допустимые. (I373c2)- Теперь при нажатии кнопки мыши или сенсорной панели в
ComposeViewфокус будет автоматически сбрасываться, если нажатие происходит за пределами узла, на котором установлен фокус. В результате пользователь сможет убрать фокус, нажав на экран, что более ожидаемо, чем текущее поведение при использовании указателя. От этого поведения можно отказаться с помощью нового APIAbstractComposeView.isClearFocusOnPointerDownEnabled. (I6322b, b/282963174) - Теперь Scrollable лучше поддерживает события прокрутки колесиком мыши в двух измерениях. В
MouseInjectionScopeпоявился новый тестовый API, который помогает тестировать варианты использования. Мы также добавили новую перегрузку для методов прокрутки вMouseInjectionScopeи флаг для управления новым поведением под названиемisMouseWheel1DAxisLockingEnabled(I136df). - В
DragGestureNodeтеперь используется необработанный ввод указателя вместо приостановки ввода указателя для оптимизации. Изменения добавлены после флагаisNonSuspendingPointerInputInDraggableEnabled(I0fa4b). - Добавлена аннотация
@FrequentlyChangingValueк некоторым APIAnchoredDraggable.offset,requireOffsetиprogressчасто меняются, поэтому их не следует читать в составе предложения. Получайте эти значения на этапах макета и отрисовки, а также с помощью эффектов или других средств, не связанных с композицией. (I05539) - Удалены флаги
isOnScrollChangedCallbackEnabled,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled,isFlingContinuationAtBoundsEnabled,isAutomaticNestedPrefetchEnabled,DragGesturePickUpEnabled,isPointerInteropFilterDispatchingFixEnabled,isNestedScrollInteropPostFlingFixEnabled,isNestedScrollDispatcherNodeFixEnabled(I36c18) - Добавлен параметр
CompositionLocal, который можно использовать для изменения кисти подсветки успешного заполнения функции "Автозаполнение". (I52329) - В
FocusPropertiesдобавлен настраиваемый прямоугольник фокуса. Теперь вы можете задать собственную область фокусировки вместо граничной рамки фокусируемого элемента. Эта информация используется системой перехода фокуса и логикой сохранения в поле зрения прокручиваемых контейнеров. (Id6555, b/368378073) - Добавлен новый
LineHeightStyle.Modeпод названиемTight. Этот режим позволяет задавать меньшую высоту строки, даже если из-за этого могут обрезаться более высокие символы. (Id3849) - Добавлен новый интерфейс Interpolatable, который позволяет автоматически выполнять интерполяцию между разными типами, если один тип знает, как преобразовать другой. Этот интерфейс используется в нескольких типах композиции, например "Кисть" и "Фигура", но его можно использовать и отдельно. (I58eab)
- Добавлены события непрямого ввода и возможность указать ось координат для прокрутки. (I58e7c)
- Добавлен новый API
WindowInsets.cutoutPath, позволяющий получить путь для выреза на экране (Ib90b1, b/279636456). - Флаг
isWindowInsetsDefaultPassThroughEnabledудален, поэтому по умолчанию WindowInsets не потребляет данные, чтобы дочерние представления могли получатьWindowInsets. (I888e0, b/412469666)
Исправление ошибок
isNonSuspendingPointerInputInDraggableEnabledпока следует отключить. (Ia41c4)- Перенос значения minSdk по умолчанию с API 21 на API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- Обновлена
DraggableAnchorsдокументация поminPosition/maxPosition, чтобы указать, что эти API должны возвращать Float.NaN в соответствии с другими APIDraggableAnchors. (I0460a) - Исправлена ошибка, из-за которой
DraggableAnchors#closestAnchorдавал сбой, если якоря были пустыми (I4e646). - Улучшения производительности для
DraggableAnchors(If4065, I0460a) TextFieldState.edit { }больше не очищает историю отмены. Вместо этого создается отдельная запись об отмене. Если вы хотите, чтобы после вызоваeditстек отмены очищался, используйтеTextFieldState.undoState.clearHistory(). (I12c14)- Добавлена поддержка двойного нажатия для выбора слова в перегрузке
SelectionContainerиBasicTextField(value, onValueChange). (Ibb06a) - Исправлена незначительная ошибка, чтобы сделать
AutoboxingStateValuePropertyDetectorсовместимым с K1 и K2 (Ie81c1). - Запросы
requestRectangleOnScreen, созданные с помощью AndroidView, теперь корректно передаются в Compose. Это позволяет таким элементам, какEditText, оставаться на экране при взаимодействии с ними. (Ibbf4c) - Теперь при использовании Column и Row в
Alignment.Vertical.alignиAlignment.Horizontal.alignпередается фактический размер элемента. Это устраняет проблему, из-за которой в пользовательских реализациях выравнивания передавалось неверное значение 0. (I3e460, b/349722072)
Версия 1.9
Версия 1.9.5
19 ноября 2025 г.
Выход androidx.compose.foundation:foundation-*:1.9.5. Версия 1.9.5 содержит эти коммиты.
Версия 1.9.4
22 октября 2025 г.
Выход androidx.compose.foundation:foundation-*:1.9.4. Версия 1.9.4 содержит эти коммиты.
Версия 1.9.3
8 октября 2025 г.
Выход androidx.compose.foundation:foundation-*:1.9.3. Версия 1.9.3 содержит эти коммиты.
Версия 1.9.2
24 сентября 2025 г.
Выход androidx.compose.foundation:foundation-*:1.9.2. Версия 1.9.2 содержит эти коммиты.
Версия 1.9.1
10 сентября 2025 г.
Выход androidx.compose.foundation:foundation-*:1.9.1. Версия 1.9.1 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой происходил сбой при использовании
LazyLayoutCacheWindowвLazyLists(c39f5f3).
Версия 1.9.0
13 августа 2025 г.
Выход androidx.compose.foundation:foundation-*:1.9.0. Версия 1.9.0 содержит эти коммиты.
Важные изменения с версии 1.8.0
- Для проверок Lint, поставляемых вместе с Compose, теперь требуется AGP версии 8.8.2 или более поздней. Если вы не можете обновить AGP, обновите Lint отдельно, используя версию
android.experimental.lint.version=8.8.2(или более новую) в файлеgradle.properties. Чтобы выполнять проверки Compose lint в IDE, требуется Android Studio Ladybug или более новая версия. - Критическое изменение. Перегрузки
clickable,combinedClickable,selectable,toggleableиtriStateToggleableбез параметра Indication теперь поддерживают только экземплярыIndicationNodeFactory, предоставленные с помощьюLocalIndication. Изменения будут применены, когда вы перекомпилируете код, в котором используются эти модификаторы, с помощью этой версии Compose. Бинарные и транзитивные зависимости не будут затронуты. Если вы предоставляете устаревшую реализацию Indication дляLocalIndicationи используете эти API, во время выполнения произойдет сбой. Это изменение необходимо для повышения производительности и позволяет пропускать функции Composable с этими модификаторами во время повторной композиции. Вы можете временно отключить это изменение, чтобы обновить Compose, не дожидаясь завершения переноса, с помощьюComposeFoundationFlags.isNonComposedClickableEnabled=false. Этот флаг будет удален после одного стабильного выпуска. Чтобы устранить проблему, перенесите все устаревшие реализации Indication на использованиеIndicationNodeFactory. Вы также можете использовать перегрузки с явным параметром Indication. Эти перегрузки будут по-прежнему поддерживать экземпляры Indication, отличные отIndicationNodeFactory, хотя это не рекомендуется по соображениям производительности. (I6bcdc, b/316914333) - Добавлен метод
isFlingCancellationWithNestedScrollFixEnabled, чтобы устранить проблему с распространением прокрутки при вложенной прокрутке. В этом списке изменений восстановлено поведение продолжения перетаскивания, удаленное в I9326a. Если ребенок будет удален из композиции, анимация все равно будет отменена. (I467f4, b/405910180, b/419049142, b/416784125) - Добавьте использование
scrollAnimationSpecвContentInViewNode. Поведение было удалено во время прекращения поддержкиscrollAnimationSpec, что привело к нарушению работы вариантов использования. (I1436a, b/403301605) - Стабилизировано
LazyLayout. (If5db4),LazyLayoutPrefetchState, а также метод планированияschedulePrecompositionиschedulePrecompositionAndPremeasure. (I4362f, b/252853717) иLazyLayoutItemProvider(Icce09,b/261565751) - Разрешить функции создания текста запускать
ViewTreeObserver.OnScrollChanged. Это поведение реализовано с помощью флагаisOnScrollChangedCallbackEnabled. Мы также добавили расширенную версию свойстваDelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286) - Добавлены
Modifier.scrollable2D,Scrollable2DStateи сопутствующие API для создания состояний. Также добавлены общие функции расширения прокрутки. (Ic61c8, b/214410040) PrefetchSchedulerи настройки больше не поддерживаются. Вместо них используется встроенная реализация, которая выполняет все действия автоматически. (I3a9a6, b/420551535)TextFieldState.edit { }больше не очищает историю отмены. Вместо этого создается отдельная запись об отмене. Если вы хотите, чтобы после вызова функции редактирования стек отмены очищался, используйтеTextFieldState.undoState.clearHistory(). (I12c14)- Контекстное меню и панель инструментов выбора теперь поддерживают умные объекты (умный выбор)
- Добавлен форматированный текст
OutputTransformation, позволяющий форматировать выходные данныеTextFieldс помощью перегрузкиstate. TextField– поддержка контекстного меню (меню, открываемого при нажатии правой кнопки мыши).- Теперь при копировании текста из нескольких объектов Text, входящих в состав
SelectionContainer, между текстом из разных объектов Text будет добавляться разделитель строк \n. (I25332, b/285036739) - Добавлен API для создания пользовательских маркированных списков с помощью
AnnotatedString(I1d066, b/383269496, b/139326648) - Перегрузка
stateоператораBasicTextFieldпозволяет удерживать курсор в поле зрения при изменении его размера. (I0eb41, b/406187741) - Важное изменение: узлы модификаторов
backgroundиborderтеперь реализуютSemanticsModifierNode. Это может привести к добавлению новыхSemanticsNodesв семантическое дерево и, следовательно, к сбоям в тестах, которые делают предположения о структуре семантического дерева. Например, тесты, в которых используются методыonChild,onParent,onSiblingи другие подобные методы для создания утверждений, могут завершиться неудачно, если между текущим и целевым узлами будет добавлен новый узел. Чтобы устранить эти ошибки, лучше всего добавитьtestTagнепосредственно в целевой узел. Другой подход – использовать менее строгий сопоставитель, напримерonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
Версия 1.9.0-rc01
30 июля 2025 г.
Выход androidx.compose.foundation:foundation-*:1.9.0-rc01. Версия 1.9.0-rc01 содержит эти коммиты.
Исправление ошибок
TextFieldState.edit { }больше не очищает историю отмены. Вместо этого создается отдельная запись об отмене. Если вы хотите, чтобы после вызоваeditстек отмены очищался, используйтеTextFieldState.undoState.clearHistory(). (I12c14)
Версия 1.9.0-beta03
16 июля 2025 г.
Выход androidx.compose.foundation:foundation-*:1.9.0-beta03. Версия 1.9.0-beta03 содержит эти коммиты.
Исправление ошибок
- Исправлена регрессионная ошибка, из-за которой при использовании пустых заголовков в ленивых сетках не работали закрепленные заголовки. (e3e3400)
Версия 1.9.0-beta02
2 июля 2025 г.
Выход androidx.compose.foundation:foundation-*:1.9.0-beta02. Версия 1.9.0-beta02 содержит эти коммиты.
Новые функции
- Поддержка умных объектов в контекстном меню и на панели инструментов выбора.
Изменения в API
- Исправлена ошибка, из-за которой на некоторых аппаратных клавиатурах или пультах ДУ для телевизоров не удавалось переместить курсор в новом окне
TextFieldsс помощью клавиш со стрелками. Вместо этого фокус переключался на другой компонент. Добавлен параметрComposeFoundationFlag.isTextFieldDpadNavigationFixEnabled, позволяющий временно отключить исправление, если оно приводит к нежелательным последствиям. (Ie1922)
Исправление ошибок
- Исправлена ошибка, из-за которой закрепленные заголовки не закреплялись, если был закреплен элемент. (I9198d, b/385006133)
TextObfuscationMode.RevealLastTypedтеперь соответствует системной настройке TEXT_SHOW_PASSWORD. (I41c0c)- Исправлена ошибка, из-за которой при первом открытии панели инструментов для текста в
BasicTextFieldнеправильно показывалось предупреждение "Вставлено из буфера обмена". (I5fda2)
Версия 1.9.0-beta01
18 июня 2025 г.
Выход androidx.compose.foundation:foundation-*:1.9.0-beta01. Версия 1.9.0-beta01 содержит эти коммиты.
Критические изменения
- Узлы модификаторов
backgroundиborderтеперь реализуютSemanticsModifierNode. Это может привести к добавлению новыхSemanticsNodesв семантическое дерево и, следовательно, к сбоям в тестах, которые делают предположения о структуре семантического дерева. Например, тесты, в которых используются методыonChild,onParent,onSiblingи другие подобные методы для создания утверждений, могут завершиться неудачно, если между текущим и целевым узлами будет добавлен новый узел. Чтобы устранить эти ошибки, лучше всего добавитьtestTagнепосредственно в целевой узел. Другой подход – использовать менее строгий сопоставитель, напримерonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
Изменения в API
- Переименуйте
Modifier.addTextContextMenuComponentsвappendTextContextMenuComponents. (I4c43f) - Удалены функции
AnnotatedOutputTransformationиaddStyle, которые перенесены вTextFieldBuffer. ПользователюaddStyleпо-прежнему можно позвонить только с устройстваOutputTransformation. (I9930a, b/417991824) - Clickable is rewritten to not use suspend pointer input as an optimization. Эта функция включается с помощью флага. Если вы обнаружите ошибку в новой реализации, ее можно отключить с помощью флага
ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled. (I85b65) - Добавлен метод
isFlingCancellationWithNestedScrollFixEnabled, чтобы устранить проблему с распространением прокрутки при вложенной прокрутке. В этом списке изменений мы восстанавливаем поведение при продолжении прокрутки, удаленное в aosp/3260391. Если ребенок будет удален из композиции, анимация все равно будет отменена. (I467f4, b/405910180, b/419049142, b/416784125) WindowInsetsRulers: значение параметра "rulersIgnoringVisibility" изменено на максимальное. ФункцияgetDisplayCutoutBounds()теперь является расширением функцииPlacementScope. Значение "WindowInsetsAnimationProperties" изменено на "WindowInsetsAnimation", а значение "getAnimationProperties()" – на "getAnimation()". (I3816f)- Изменено значение
InsetsRulers, чтобы оно соответствовало общему коду с названиемWindowInsetsRulers. Упрощенный API, в котором все вставки имеют значениеWindowInsetsRulers. Свойства анимации, не связанные с линейками, были извлечены в классAnimationProperties.WindowInsetsRulers.innermostOf()можно использовать для объединения несколькихWindowInsetsRulers. (I2f0c6, b/415012444)
Исправление ошибок
- Добавьте использование
scrollAnimationSpecвContentInViewNode. Поведение было удалено во время прекращения поддержкиscrollAnimationSpec, что привело к нарушению работы вариантов использования. (I1436a, b/403301605)
Версия 1.9.0-alpha04
4 июня 2025 г.
Выход androidx.compose.foundation:foundation-*:1.9.0-alpha04. Версия 1.9.0-alpha04 содержит эти коммиты.
Изменения в API
PrefetchSchedulerи настройки больше не поддерживаются. Вместо них используется встроенная реализация, которая выполняет все действия автоматически. (I3a9a6, b/420551535)Scrollable2DStateВ методеcanScrollвместо угла теперь используется смещение. (I28694, b/417268474)- Значение в ячейке
addAnnotationв таблицеAnnotatedOutputTransformationзаменено на "addStyle". (I91c6f, b/417991824) - Стабилизировано
LazyLayout. (If5db4) - Стабилизирован пустой конструктор для
LazyLayoutPrefetchStateи его метода планированияschedulePrecompositionиschedulePrecompositionAndPremeasure. (I4362f, b/252853717) - Добавлен элемент
ProcessTextKeyдля Android, который используется для пунктов контекстного меню, добавленных для действий с объектом IntentPROCESS_TEXT. (If0ac4) - Сделайте API контекстного меню общедоступными. Добавлены объекты
Modifier.addTextContextMenuComponentsиModifier.filterTextContextMenuComponentsдля добавления и удаления элементов в контекстном меню. Кроме того, мы сделали общедоступными следующие элементарные API, чтобы вы могли создавать собственные контекстные меню:TextContextMenuProviderTextContextMenuDataProviderTextContextMenuDataTextContextMenuComponentLocalTextContextMenuDropdownProviderLocalTextContextMenuToolbarProvider(I1b7b0)
- Сделайте
LazyLayoutItemProviderстабильной (Icce09, b/261565751) - Добавлены умные функции выбора для Android, которые можно включить или отключить с помощью
ComposeFoundationFlags.isSmartSelectionEnabled. Кроме того, в нем был представлен статический тегcompositionLocalLocalTextClassifierCoroutineContext, который можно использовать, чтобы указатьCoroutineContext, в котором запускается заданиеTextClassification. (I1dbaa, b/139321320)
Версия 1.9.0-alpha03
20 мая 2025 г.
Выход androidx.compose.foundation:foundation-*:1.9.0-alpha03. Версия 1.9.0-alpha03 содержит эти коммиты.
Изменения в API
- Добавлена аннотация
AnnotatedOutputTransformation, позволяющая добавлять аннотации вTextFieldперед отрисовкой. (Ibc6f0, b/389978748) - Представляем
LazyLayoutMeasurePolicyи улучшаем стабильностьLazyLayoutMeasureScope. (I8c5df, b/252853717) BasicSecureTextFieldтеперь поднимает ScrollState своего внутреннегоBasicTextField. (I6e576)- Были добавлены модификаторы
Modifier.onFirstVisibleиModifier.onVisibilityChanged, которые являются модификаторами высокого уровня, созданными на основеModifier.onLayoutRectChanged. Эти модификаторы созданы специально для обработки множества распространенных требований приложений, таких как регистрация показов, автоматическое воспроизведение видео и т. д. Они разработаны с учетом производительности, поэтому их можно использовать в критически важных сценариях на основе списков без риска снижения скорости прокрутки. В дополнение к этим API модификаторов были добавлены дополнительные API дляRelativeLayoutBounds, чтобы поддерживать эти варианты использования, а также упростить разработчикам создание собственных модификаторов, которые точно соответствуют их потребностям. (I759b8) - Добавлен перегруженный оператор
detectDragGestures, который позволяет управлять ориентацией и чувствительностью к касаниям. (Iadb0d) - Добавлены
Modifier.scrollable2D,Scrollable2DStateи сопутствующие API для создания состояний. Также добавлены общие функции расширения прокрутки. (Ic61c8, b/214410040) - 64-разрядные значения цвета в Compose нельзя напрямую сравнивать с
ColorLongsв Android, поскольку идентификаторы цветового пространства для некоторых цветовых пространств расположены не по порядку. Чтобы преобразовывать цвета в цветовые пространства Android и обратно, добавлены два новых API:toColorLong()иfromColorLong(). (I36899)
Исправление ошибок
- Теперь при копировании текста из нескольких компонентов Text в
SelectionContainerмежду текстом из разных компонентов Text будет добавляться разделитель строк\n. (I25332, b/285036739)
Версия 1.9.0-alpha02
7 мая 2025 г.
Выход androidx.compose.foundation:foundation-*:1.9.0-alpha02. Версия 1.9.0-alpha02 содержит эти коммиты.
Изменения в API
- Исправлено добавление изменений, связанных с указателем, в
VelocityTrackerвDragGestureNode. Теперь это можно контролировать с помощью нового флагаisOffsetPositionBeforeAddingToVelocityTrackerEnabled. (Ic7992, b/292556787, b/236451818) - Сделайте
await[Vertical/Horizontal]PointerSlopOrCancellationобщедоступным (I6968b, b/298903681) - Значение по умолчанию для атрибута "
AbstractComposeView.consumeWindowInsets" теперь – false. Если для параметра задано значение false,WindowInsetsбудет автоматически корректироваться с учетом размера и положения дочернего фрейма, поэтому больше нет необходимости задавать для него значение true по умолчанию. Исправлена проблема, из-за которой дочерние представления по умолчанию не получали обновленияWindowInsets. Разработчики могут отказаться от обновления, изменив экспериментальный параметрComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabledна true или, что предпочтительнее, установив для параметраAbstractComposeView.consumeWindowInsetsзначение true во всех экземплярах Compose. (I6fa0a, b/411868840)
Внешний вклад
- Исправлена ошибка, из-за которой компонент Pager аварийно завершал работу при использовании очень больших значений beyondViewportPageCount (Idb2db).
Версия 1.9.0-alpha01
23 апреля 2025 г.
Выход androidx.compose.foundation:foundation-*: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 или более новая версия.Критическое изменение. Перегрузки
clickable,combinedClickable,selectable,toggleableиtriStateToggleableбез параметра Indication теперь поддерживают только экземплярыIndicationNodeFactory, предоставленные с помощьюLocalIndication. Изменения будут применены, когда вы перекомпилируете код, в котором используются эти модификаторы, с помощью этой версии Compose. Бинарные и транзитивные зависимости не будут затронуты. Если вы предоставляете устаревшую реализацию Indication дляLocalIndicationи используете эти API, во время выполнения произойдет сбой. Это изменение необходимо для повышения производительности и позволяет пропускать функции Composable с этими модификаторами во время повторной композиции. Вы можете временно отключить это изменение, чтобы обновить Compose, не дожидаясь завершения переноса, с помощьюComposeFoundationFlags.isNonComposedClickableEnabled=false. Этот флаг будет удален после одного стабильного выпуска. Чтобы устранить проблему, перенесите все устаревшие реализации Indication на использованиеIndicationNodeFactory. Вы также можете использовать перегрузки с явным параметром Indication. Эти перегрузки будут по-прежнему поддерживать экземпляры Indication, отличные отIndicationNodeFactory, хотя это не рекомендуется по соображениям производительности. (I6bcdc, b/316914333)
Изменения в API
- Добавлен API для создания пользовательских маркированных списков с помощью
AnnotatedString(I1d066, b/383269496, b/139326648) - Разрешить функции создания текста запускать
ViewTreeObserver.OnScrollChanged. Это поведение реализовано с помощью флагаisOnScrollChangedCallbackEnabled. Мы также добавили расширенную версию свойстваDelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286) - Для проектов, выпущенных с Kotlin 2.0, требуется KGP 2.0.0 или более поздней версии (Idb6b5).
- Добавлена поддержка проверки кода для
TextFieldState, чтобы убедиться, что он сохраняется при создании письма. Попробуйте использоватьrememberTextFieldState. (I53d74) - Добавлена поддержка проверки кода для
FocusRequester, чтобы убедиться, что он запоминается в композиции (I6bf91). - Добавлена поддержка проверки кода для
BringIntoViewRequester, чтобы убедиться, что он сохраняется при создании письма. (Ibfba6) - В стратегиях для сеток и списков добавлены области действия для вызовов
schedulePrefetch, чтобы они соответствовали возможностямLazyListPrefetchStateпо предоставлению информации о размере и индексе. (Iad80c) - Критическое изменение. Перегрузки
clickable,combinedClickable,selectable,toggleableиtriStateToggleableбез параметра Indication теперь поддерживают только экземплярыIndicationNodeFactory, предоставленные с помощьюLocalIndication. Изменения будут применены, когда вы перекомпилируете код, в котором используются эти модификаторы, с помощью этой версии Compose. Бинарные и транзитивные зависимости не будут затронуты. Если вы предоставляете устаревшую реализацию Indication дляLocalIndicationи используете эти API, во время выполнения произойдет сбой. Это изменение необходимо для повышения производительности и позволяет пропускать функции Composable с этими модификаторами во время повторной композиции. Вы можете временно отключить это изменение, чтобы обновить Compose, не дожидаясь завершения переноса, с помощьюComposeFoundationFlags.isNonComposedClickableEnabled=false. Этот флаг будет удален после одного стабильного выпуска. Чтобы устранить проблему, перенесите все устаревшие реализации Indication на использованиеIndicationNodeFactory. Вы также можете использовать перегрузки с явным параметром Indication. Эти перегрузки будут по-прежнему поддерживать экземпляры Indication, отличные отIndicationNodeFactory, хотя это не рекомендуется по соображениям производительности. (I6bcdc, b/316914333) - Добавлен флаг для управления автоматической вложенной предзагрузкой:
isAutomaticNestedPrefetchEnabled(I8d448). - Добавьте перегрузку для
LazyGridStateиrememberLazyGridState, которая принимаетLazyLayoutCacheWindow. (I51151) - Добавлены линейки для отступов окна. Добавляет
DerivedRuler, чтобы можно было рассчитать линейку на основе другой линейки. Изменяет параметрPlacmentScope, чтобы реализовать компактность. (I658bc, b/359260964) - Добавлена фабричная функция
WindowInsets()с нулевым аргументом, позволяющая легко создавать пустыеWindowInsets. (I65f62, b/395311689) - Добавлен
PaddingValues.Zeroдля пустогоPaddingValues. (If193e, b/386255688)
Исправление ошибок
- Перегрузка
stateоператораBasicTextFieldпозволяет удерживать курсор в поле зрения при изменении его размера. (I0eb41, b/406187741) - Обновлены API
onVisibleItemsUpdatedвLazyListPrefetchStrategyиLazyGridPrefetchStrategy, чтобы сообщать о начальном состоянии. (If2cfa)
Версия 1.8
Версия 1.8.3
18 июня 2025 г.
Выход androidx.compose.foundation:foundation-*:1.8.3. Версия 1.8.3 содержит эти коммиты.
Версия 1.8.2
20 мая 2025 г.
Выход androidx.compose.foundation:foundation-*:1.8.2. Версия 1.8.2 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой при расчете количества объектов для загрузки при поиске фокуса происходило деление на ноль. Проверка применена ко всем макетам, в которых используется
LazyLayoutBeyondBoundsState. (8e6dc8)
Версия 1.8.1
7 мая 2025 г.
Выход androidx.compose.foundation:foundation-*:1.8.1. Версия 1.8.1 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка в
BasicTextиTextAutoSize, из-за которой при использованииTextOverflow.Ellipsizeтекст становился меньше, чем нужно. (I1e1d8, b/396582066) - Исправлена ошибка в
BasicTextField, из-за которой возникали различные сбои, когдаTextFieldDecoratorпропускал вызовinnerTextField. (I2638c), b/308398612 - Исправлена ошибка в
TextField, из-за которой панель инструментов и маркеры выбора текста полностью исчезали при изменении экземпляраTextFieldState. (I8068a), b/390477786 - Исправлена ошибка в
BasicText, из-за которой изменение минимальной ширины не приводило к обновлению положения текста, если дляtextAlignбыло задано значение, отличное от значения по умолчанию. (I77a96), b/406305552
Версия 1.8.0
23 апреля 2025 г.
Выход androidx.compose.foundation:foundation-*:1.8.0. Версия 1.8.0 содержит эти коммиты.
Версия 1.8.0-rc03
9 апреля 2025 г.
Выход androidx.compose.foundation:foundation-*:1.8.0-rc03. Версия 1.8.0-rc03 содержит эти коммиты.
Версия 1.8.0-rc02
26 марта 2025 г.
Выход androidx.compose.foundation:foundation-*:1.8.0-rc02. Версия 1.8.0-rc02 содержит эти коммиты.
Версия 1.8.0-rc01
12 марта 2025 г.
Выход androidx.compose.foundation:foundation-*:1.8.0-rc01. Версия 1.8.0-rc01 содержит эти коммиты.
Версия 1.8.0-beta03
26 февраля 2025 г.
Выход androidx.compose.foundation:foundation-*:1.8.0-beta03. Версия 1.8.0-beta03 содержит эти коммиты.
Исправление ошибок
- Добавлено новое семантическое свойство
InputText, которое позволяет получить значение текстового поля до применения преобразования. (Iae46a, b/395911609, b/176949051) - Удалены устаревшие перегрузки
AutoSize. Используйте APITextAutoSize, которые выполняют те же функции. (I2c90f) - Исправлена проблема с кешированием в
TextAutoSize, из-за которой при втором проходе макета с теми же ограничениями мог использоваться второй по величине подходящий размер шрифта вместо самого большого. (Id367f)
Версия 1.8.0-beta02
12 февраля 2025 г.
Выход androidx.compose.foundation:foundation-*:1.8.0-beta02. Версия 1.8.0-beta02 содержит эти коммиты.
Исправление ошибок
- Исправлена проблема, из-за которой реализация прокрутки за пределы области просмотра с помощью
LayoutModifierNodeработала некорректно в контейнерах с прокруткой.
Версия 1.8.0-beta01
29 января 2025 г.
Выход androidx.compose.foundation:foundation-*:1.8.0-beta01. Версия 1.8.0-beta01 содержит эти коммиты.
Изменения в API
- Ресурс
SemanticsNodeInteraction.semanticsId()уже удален. Используйте вместо негоSemanticsNodeInteraction.fetchSemanticsNode().id. (Ie397a) - Переписать
requestAutofillAPI, чтобы он не зависел от менеджера автозаполнения. (Id1929) ContextualFlowRowиContextualFlowColumnотмечены как устаревшие. Этот экспериментальный компонент был представлен в версии 1.7 и ещё не был стабилизирован, а его реализация была признана нежелательной. В будущем может быть предоставлен компонент, решающий задачи, для которых был предназначен этот компонент.- В версии 1.7 были добавлены экспериментальные перегрузки функций
FlowRowиFlowColumn, которые включают параметрoverflow. Использование этого параметра прекращено. Вместо него можно использовать перегрузки без этого параметра. По умолчанию для этих перегрузок будет использоваться поведение "Clip", как и раньше. - Многие задачи, для которых используется
ContextualFlowRow, можно решить с помощьюFlowRow, но мы понимаем, что это не всегда так.ContextualFlowRowполностью реализуется в пространстве пользователя, и вы можете попытаться скопировать его реализацию и адаптировать ее по своему усмотрению. В будущем мы планируем реализовать эти функции другим способом. (Ibafec)
- В версии 1.7 были добавлены экспериментальные перегрузки функций
Исправление ошибок
- Исправлена ошибка, из-за которой многоточие в макете текста иногда переводилось неправильно во время анимации. Подробнее: b/389707025 (Ie55b1, b/389707025).
- Исправлена ошибка в
BasicText, когда дляTextAutoSizeиmaxLinesзадано значение 1. (Ic0450, b/376834366) - Теперь минимальная высота текста учитывает параметр
minLines. Это означает, что минимальная высота встроенных функций не будет меньше высоты, необходимой для параметраminLines(I225f9, b/388299762).
Версия 1.8.0-alpha08
15 января 2025 г.
Выход androidx.compose.foundation:foundation-*:1.8.0-alpha08. Версия 1.8.0-alpha08 содержит эти коммиты.
Изменения в API
- Параметр AutoSize переименован с
AutoSizeнаTextAutoSize. Опубликованы API, позволяющие создавать собственные реализацииTextAutoSize. Пример реализации функции автоматического определения размера текста приведен в разделеTextAutoSizeSample. (I85756) - Флаг функции
DetectTapGesturesEnableNewDispatchingBehaviorперенесен вComposeFoundationFlagsи переименован вisDetectTapGesturesImmediateCoroutineDispatchEnabled. Старый флаг больше не поддерживается и теперь будет делегировать задачиComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabled. (I62932)
Исправление ошибок
- Включено
DetectTapGesturesEnableNewDispatchingBehaviorпо умолчанию. APITapGestureDetectorтеперь по умолчанию используют новое поведение диспетчеризации (немедленную диспетчеризацию). (I9f2bc, b/369648479) - Исправлены модификаторы
requiredWidth/Height/Size, чтобы правильно обрабатывать внутренние размеры. (Ie3d7d, b/368113212)
Внешний вклад
- Объединение
BasicTooltipв foundation иBasicTooltip/Tooltipв material3. (Ifc2e6) - Добавлен новый интерфейс буфера обмена и локальный состав для него. (I80809)
Версия 1.8.0-alpha07
11 декабря 2024 г.
Выход androidx.compose.foundation:foundation-*:1.8.0-alpha07. Версия 1.8.0-alpha07 содержит эти коммиты.
Изменения в API
- Удален флаг
ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled, который помогал отменить удаление внутреннего элементаgraphicsLayerизBasicText. Если вы использовали этот флаг, сообщите нам о причинах, создав отчет об ошибке. Вы также можете передатьModifier.graphicsLayer()в вызовыBasicText, чтобы получить тот же результат, что и раньше. (Id9f90) - Добавлена реализация по умолчанию для нового DSL-подключения
stickyHeader. (I68986) - Для локального использования композиции
LocalAutofillHighlightColorзадайте тип "Цвет". (I0e05b) - Название "
OverscrollEffect#withoutDrawing" изменено на "OverscrollEffect#withoutVisualEffect". (I1a154)
Исправление ошибок
- Исправлена ошибка в расчете целевого значения в
AnchoredDraggable, из-за которой при определенных свайпах мог выбираться неправильный якорь. (I23b87, b/367660226)
Внешний вклад
- Добавьте
BringIntoViewResponderModifierNodeв интерфейс, чтобы реализовать функцию "Показать на экране" на уровне платформы (Ia6dd8). - Мы немного изменили способ отрисовки указателя. Чтобы отключить отрисовку курсора в тестах, используйте
LocalCursorBlinkEnabled. (I4c697)
Версия 1.8.0-alpha06
13 ноября 2024 г.
Выход androidx.compose.foundation:foundation-*:1.8.0-alpha06. Версия 1.8.0-alpha06 содержит эти коммиты.
Изменения в API
- Добавляет модификатор
stylusHoverIcon. (Iff20a, b/331289114) - Прекращена поддержка функции
confirmValueChangeвAnchoredDraggableState. Вместо того чтобы запрещать изменение состояния, недопустимые якоря не должны входить в активный набор якорей, а для обозначения недоступности запрошенного действия следует использоватьOverscrollEffect. (Ia717f) - Менеджер автозаполнения теперь является интерфейсом. (I84914, b/376080755)
- Добавлены API
OverscrollEffect#withoutDrawingиOverscrollEffect#withoutEventHandling. Эти API создают обернутый экземпляр предоставленного эффекта достижения конца прокрутки, который не отрисовывает и не обрабатывает события соответственно. Это позволяет отрисовывать эффект достижения конца прокрутки в отдельном компоненте от компонента, который отправляет события. Например, можно отключить эффект достижения конца прокрутки внутри списка с отложенной загрузкой, а затем отдельно нарисовать его сверху или в другом месте. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244) - Добавлена поддержка автозаполнения на текстовой панели инструментов. (Ie6a4c)
- Удалены функции
OverscrollConfigurationиLocalOverscrollConfiguration, а вместо них добавлена функцияrememberPlatformOverscrollFactory, позволяющая создавать экземпляр или настраивать параметры реализации прокрутки по умолчанию. Чтобы отключить прокрутку за пределы экрана, вместоLocalOverscrollConfiguration provides nullиспользуйтеLocalOverscrollFactory provides null. Чтобы изменить цвет свечения или отступы, вместоLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)используйтеLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, b/255554340, b/234451516) - Свойство
effectModifierвOverscrollEffectизменено наnode: DelegatableNode, как и в других API. (Ic0b46, b/255554340) - Удален экспериментальный API
GlobalAssertions. Она предназначена для проверки специальных возможностей. Для этого используйтеenableAccessibilityChecks(). (I59322)
Версия 1.8.0-alpha05
30 октября 2024 г.
Выход androidx.compose.foundation:foundation-*:1.8.0-alpha05. Версия 1.8.0-alpha05 содержит эти коммиты.
Новые функции
- Поддержка автоматического изменения размера текста. Передайте экземпляр
AutoSize(например,AutoSize.StepBased) в ваш любимый текстовый компонент (например,BasicText), и размер текста будет автоматически подстраиваться под доступное пространство. (Ice7e0, b/139320827) - Добавлены API
OverscrollFactoryиLocalOverscrollFactory, позволяющие настраивать эффект достижения конца прокрутки в иерархии. Значение, указанное вLocalOverscrollFactory, будет использоваться по умолчанию для созданияOverscrollEffect. Чтобы создать и запомнить эффект из текущей фабрики, используйтеrememberOverscrollEffect(). (I51ca4, b/255554340)
Изменения в API
- Добавлен параметр
CompositionLocal, который позволяет изменять оттенок подсветки автозаполнения. (I32092) - Удален параметр "Контакт" (
ScrollableDefaults.overscrollEffect). Вместо него используйте параметр "Контакт" (rememberOverscrollEffect). Будет создан экземпляр текущей реализации эффекта достижения конца прокрутки, предоставленной сLocalOverscrollFactory. (I1651a, b/255554340),(b/234451516) - Представляем новый интерфейс
AutofillManager, который можно использовать для настройки автозаполнения, и флагisSemanticAutofillEnabled, позволяющий включить новую версию автозаполнения. (I9d484) - Удаляет
CombinedClickableNode. Этот экспериментальный API был временно открыт, чтобы разблокировать работу по повышению производительности, но теперь он больше не нужен. Вместо этого используйтеModifier.combinedClickableнапрямую, как и в других API модификаторов. (I4b658) - Добавляет перегрузки в
horizontalScroll,verticalScroll,LazyColumn,LazyRow,LazyHorizontalGrid,LazyVerticalGrid,LazyHorizontalStaggeredGrid,LazyVerticalStaggeredGrid,HorizontalPagerиVerticalPagerс поддержкой указания специального значенияOverscrollEffect. Указанный элементOverscrollEffectбудет получать события и отображаться в границах этих компонентов. Обратите внимание, что рисовать один и тот же символOverscrollEffectдважды нельзя. Это означает, что вы не можете нарисовать символOverscrollEffect, предоставленный одному из этих компонентов, отдельно с помощью символаModifier.overscroll. В будущем мы отдельно рассмотрим случай, когда прокрутка выходит за границы этих компонентов. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
Версия 1.8.0-alpha04
16 октября 2024 г.
Выход androidx.compose.foundation:foundation-*:1.8.0-alpha04. Версия 1.8.0-alpha04 содержит эти коммиты.
Изменения в API
- Добавлены обратные вызовы
DelegatableNode#onDensityChangeиDelegatableNode#onLayoutDirectionChange, позволяющие обновлять состояние узла при его изменении. (I04f3e, b/340662451) - Параграф и
ParagraphIntrinsicsтеперь принимают список всех аннотаций, примененных кAnnotatedString. Ранее в нем был только списокSpanStyles. (I12f80) - Добавлен параметр
PointerInputModifierNode#touchBoundsExpansion, который можно использовать, чтобы увеличить границы касания для модификатора ввода с помощью одного указателя. (Iccf02, b/335339283)
Исправление ошибок
- Исправлена ошибка, из-за которой позиционные пороги, переданные в
AnchoredDraggableDefaults.flingBehavior, в некоторых случаях учитывались неправильно. (Ifdf0d, b/367660226) - Исправлена ошибка, из-за которой вложенные прокручиваемые элементы удалялись из дерева узлов во время прокрутки. Теперь эти узлы будут отменять бросок и правильно отправлять событие
onPostFlingс оставшейся скоростью. Мы также добавили флагNewNestedScrollFlingDispatchingEnabled, чтобы управлять поведением в случае регрессии. Флаг будет удален до выпуска бета-версии. (I05c37, b/371168883) - Исправлена ошибка, из-за которой
OverscrollEffects, переданный вModifier.anchoredDraggable, получал 2D-дельты вместо 1D. (Ie52c0)
Версия 1.8.0-alpha03
2 октября 2024 г.
Выход androidx.compose.foundation:foundation-*:1.8.0-alpha03. Версия 1.8.0-alpha03 содержит эти коммиты.
Изменения в API
- Обновление версии Kotlin до 1.9 (I1a14c)
- Добавлен флаг
DraggableAddDownEventFixEnabled(I848d5). - Добавлена новая семантическая роль "Карусель", которая имитирует поведение списка в пейджерах для сервисов специальных возможностей. (Id354b, b/354109776, b/239672673)
- Удален неявный модификатор
graphicsLayerиз функцииBasicText. Добавлен экспериментальный флагComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled, позволяющий вернуться к прежнему поведению. (Ie478d) - Добавлен параметр
Modifier.recalculateWindowInsets(), чтобы дети в иерархии могли использоватьinsetsPadding, даже если родители выровняли их безconsumeWindowInsets(). (I7f9e4)
Исправление ошибок
- Реализуйте функцию захвата жеста в
detectDragGestures, перетаскиваемых и прокручиваемых элементах. Теперь, если ребенок отпускает перетаскиваемый объект, родитель может подхватить его. Это позволяет более плавно и эффективно обрабатывать жесты. (Ic88fe) - Изменение поведения при отмене прокрутки в прокручиваемых элементах. Теперь, если прокручиваемый элемент достигает границ, он правильно передает скорость прокрутки следующему элементу в цепочке, а не продолжает прокрутку. (I9326a)
Версия 1.8.0-alpha02
18 сентября 2024 г.
Выход androidx.compose.foundation:foundation-*:1.8.0-alpha02. Версия 1.8.0-alpha02 содержит эти коммиты.
Изменения в API
- Теперь доступны символы
TextOverflow.StartEllipsisиTextOverflow.MiddleEllipsis, которые позволяют размещать многоточие в начале или середине строки однострочного текста (I38913, b/185418980).
Версия 1.8.0-alpha01
4 сентября 2024 г.
Выход androidx.compose.foundation:foundation-*:1.8.0-alpha01. Версия 1.8.0-alpha01 содержит эти коммиты.
Версия 1.7
Версия 1.7.8
12 февраля 2025 г.
Выход androidx.compose.foundation:foundation-*:1.7.8. Версия 1.7.8 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка в
BasicTextField, связанная с преобразованием введенных данных при замене части вставленного текста. (I73702)
Версия 1.7.7
29 января 2025 г.
Выход androidx.compose.foundation:foundation-*:1.7.7. Версия 1.7.7 содержит эти коммиты.
Исправление ошибок
- Исправлен сбой
IndexOutOfBoundпри использовании аннотаций со ссылками. (Ic96d2) - Исправлена бесконечная перекомпоновка в некоторых крайних случаях со ссылками. (I04a03)
Известные ошибки
- Мы обнаружили ошибку, из-за которой в редких случаях текст может переноситься на новую строку на устройствах с Android API уровня 35. В версии 1.7 исправить ее не получится, поэтому она будет устранена в версии 1.8. (b/391378120)
Версия 1.7.6
11 декабря 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.6. Версия 1.7.6 содержит эти коммиты.
Исправление ошибок
- Исправлена проблема, из-за которой встроенный контент с фиксированным текстом был недоступен для сервисов специальных возможностей.
- Устранена проблема, из-за которой
AndroidEmbeddedExternalSurfaceне сбрасывался должным образом и зависал при повторном использовании в ленивом списке.
Версия 1.7.5
30 октября 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.5. Версия 1.7.5 содержит эти коммиты.
Исправление ошибок
- Убедитесь, что закрепленные элементы не дублируются в области отступов. (Ic6224)
Версия 1.7.4
16 октября 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.4. Версия 1.7.4 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой в текстовых полях иногда происходил сбой. (I475c6, b/313010266)
- Удален элемент
ReusableContentHostв корне объектов Lazy Layout. Это могло быть причиной сбоев, связанных с вызовом функции измерения для деактивированного узла. (Id6e60)
Версия 1.7.3
2 октября 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.3. Версия 1.7.3 содержит эти коммиты.
Исправление ошибок
- Исправлена утечка памяти с
BasicText, когда для minLines задано значение, отличное от значения по умолчанию.
Версия 1.7.2
18 сентября 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.2. Версия 1.7.2 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой в перетаскиваемых элементах отсутствовали события нажатия, из-за чего прокрутка выглядела медленнее, чем обычно.
Версия 1.7.1
10 сентября 2024 г.
- Объекты Android не изменились. Удалено
-desktopартефактов, добавлено-jvmStubsи-linuxx64Stubsартефактов. Ни один из этих целевых показателей не предназначен для использования. Это плейсхолдеры, которые помогают Jetbrains Compose.
Версия 1.7.0
4 сентября 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0. Версия 1.7.0 содержит эти коммиты.
Важные изменения с версии 1.6.0
- Значительно улучшена производительность
Modifier.clickable,Modifier.focusable,Modifier.indication,Modifier.scrollableиModifier.draggable. В рамках этой работы мы внесли в API следующие изменения (помимо внутренних):- Добавлен новый API индикации –
IndicationNodeFactory. Это позволяет создавать более эффективные реализации индикаторов по сравнению с предыдущим (теперь устаревшим) APIrememberUpdatedInstance. Информацию о переходе можно найти на сайте developer.android.com. - Параметры
clickable,combinedClickable,selectableиtoggleableтеперь принимают параметрMutableInteractionSource, допускающий значение NULL. Если значение равно null, а предоставленный объект Indication является объектомIndicationNodeFactory, то объект Indication можно создать только при необходимости, что повышает производительность. Если вы не поднимаете и не используетеMutableInteractionSource, рекомендуем передавать значение null вместоremember { MutableInteractionSource() }. - Поддержка
Indication#rememberUpdatedInstanceпрекращена. Она значительно снижает производительность и не позволяет выполнять другие оптимизации. Вместо этого используйте новый APIIndicationNodeFactory.
- Добавлен новый API индикации –
BasicTextFieldс использованиемTextFieldStateтеперь стабилен, и мы рекомендуем всем сайтам, на которых выполняются звонки, начать переход сBasicTextField(value, onValueChange)наBasicTextField(TextFieldState).- Поддержка
ClickableTextпрекращена. Чтобы добавить в текст ссылки, по которым можно перейти, используйтеBasicTextс новой аннотациейLinkAnnotationвAnnotatedString.LinkAnnotationпозволяет задавать стили в зависимости от состояния ссылки (например, при наведении или выборе). - Представляем
ContextualFlowRowиEnhanced FlowRow/ColumnсMaxLinesиOverflow. Мы рады сообщить, что в экспериментальных тегахFlowRowиFlowColumnпоявились новые возможности, в том числе поддержка тегаmaxLinesи переполнения, а также новые тегиContextualFlowRowиContextualFlowColumn. Это обновление позволяет использовать компоненты с оптимальной производительностью. КомпонентContextualFlow*идеально подходит для большого количества объектов, если используется небольшое значение maxLines и динамические кнопки "Ещё +N". КомпонентыFlowRowиFlowColumnлучше всего подходят для небольшого количества объектов (менее 100). Важно! Чтобы сохранить существующее поведение вFlowRowилиFlowColumn, где все элементы компонуются независимо от того, помещаются ли они в максимальный размер поперечной оси, задайте для переполнения значениеFlowRowOverflow.VisibleилиFlowColumnOverflow.Visibleво время инициализации. Примеры использования новых функций можно найти в разделахContextualFlowRowSampleиFlowRowSample. (Ib9135, b/293577082) - В
LazyColumnиLazyRowдобавлена поддержка анимации появления и исчезновения объектов. Ранее можно было добавить модификаторModifier.animateItemPlacement(), чтобы поддерживать анимацию размещения (изменения порядка). Мы прекратили поддержку этого модификатора и добавили новый неэкспериментальный модификаторModifier.animateItem(), который позволяет использовать все три типа анимации: появление (затемнение), исчезновение (затемнение) и изменение порядка. (I2d7f7, b/150812265) - Добавлена экспериментальная поддержка длинных скриншотов в контейнерах прокрутки Compose с помощью официального API Android (
ScrollCaptureCallback). - Источники
NestedScrollDrag and Fling заменяются наUserInputиSideEffect, чтобы учесть расширенное определение этих источников, которое теперь включает анимацию (Side Effect) и колесико мыши и клавиатуру (UserInput). LazyLayoutЗапросы на предварительную выборку теперь можно отмечать как срочные. Это означает, что мы ожидаем, что этот элемент понадобится в следующем кадре, и хотим игнорировать бюджет кадра, чтобы выполнить больше работы заранее (Id513f).- Поддержка рукописного ввода стилусом на устройствах с Android U и более поздних версий. (I002e4)
- Некоторые API перешли на стабильную версию.
- Пейджеры, прикрепление окон, вставки окон
Версия 1.7.0-rc01
21 августа 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0-rc01. Версия 1.7.0-rc01 содержит эти коммиты.
Исправление ошибок
- Исправлена регрессия, из-за которой происходил сбой, когда фокус устанавливался на любой элемент внутри родительского элемента, который можно было выбрать (или нажать) и который был отключен. (b/317561689)
Версия 1.7.0-beta07
7 августа 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0-beta07. Версия 1.7.0-beta07 содержит эти коммиты.
Исправление ошибок
- Функции, связанные с вводом текста,
SemanticsNodeInteractionperformTextReplacement,performTextInputиperformTextClearanceтеперь будут вызывать ошибки утверждения, если они вызываются в режиме только для чтенияTextFields. (I4ae8f) - Исправлена визуальная ошибка в гиперссылках. (I23311)
- Исправлена ошибка, из-за которой модификатор
contentReceiverне работал с некоторыми методами ввода. - Генерация скорости. Предотвращение распространения значений NaN в Compose UI и Foundation.
Версия 1.7.0-beta06
24 июля 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0-beta06. Версия 1.7.0-beta06 содержит эти коммиты.
Версия 1.7.0-beta05
10 июля 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0-beta05. Версия 1.7.0-beta05 содержит эти коммиты.
Исправление ошибок
- Исправлена обработка значений NaN в
SnapFlingBehaviorи Pager.
Версия 1.7.0-beta04
26 июня 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0-beta04. Версия 1.7.0-beta04 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой происходил сбой при измерении очень длинных строк текста (например, из 10 000 символов) (8157ab).
- Исправлена ошибка, из-за которой при измерении очень большого текста происходил сбой в новой версии
BasicTextField(6b7575). - Отменяет изменение в измерении строк и столбцов, которое нарушает использование текста в некоторых сценариях (69e8ba).
Версия 1.7.0-beta03
12 июня 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0-beta03. Версия 1.7.0-beta03 содержит эти коммиты.
Версия 1.7.0-beta02
29 мая 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0-beta02. Версия 1.7.0-beta02 содержит эти коммиты.
Изменения в API
- Добавлен экспериментальный API для настройки предварительной выборки
LazyGrids, аналогичный существующему экспериментальному API дляLazyLists. В частности, должна поддерживаться предварительная выборка элементов во вложенных тегахLazyGrids. Как и в случае сLazyListPrefetchStrategy, по умолчанию предварительно загружаются первые два вложенных элемента каждой сетки, но это можно настроить с помощью новых APILazyGridPrefetchStrategy(nestedPrefetchItemCount)иLazyListPrefetchStrategy#onNestedPrefetch. (I591c4) - Переименован элемент
SemanticsProperties.EditableвIsEditable, а значениеSemanticsPropertyReceiver.editableизменено наisEditable. Теперь это логическое значение, которое всегда указывается в текстовых полях. (I8acd8) - Значения по умолчанию из
basicMarqueeперемещены в объектMarqueeDefaults. (I12ff6) - Параметр
basicMarqueedelayMillisпереименован вrepeatDelayMillis. (I12ff6) - Обновлен API для оформления ссылок:
TextLinkStylesперенесен вTextStyle, аTextDefaultsудален из материала (I5477b).
Исправление ошибок
- Параметр
LayoutCoordinates.introducesFrameOfReferenceпереименован вLayoutCoordinates.introducesMotionFrameOfReference, чтобы лучше отражать его назначение. Переименована связанная функция для расчета координат на основе этого флага. (I3a330) - Удалено значение "По умолчанию" из свойств
MarqueeDefaults. (I1d8a0) - Из свойств
MarqueeDefaultsудален тег "Афиша". (Iad4f4) - Удален из курса "
TextStyle"TextLinkStyles. Вместо этогоTextLinkStylesявляется частью конструктораLinkAnntationи методаAnnotatedString.fromHtml(I90b2b). - Исправлена ошибка, из-за которой при пролистывании к границе, когда она уже была достигнута, происходил переход к следующей странице. (I9f373, b/339171222)
- В BTF2 теперь правильно работают жесты выбора мышью. (Ibe8c6)
Внешний вклад
- Повторно отправьте запрос "Make compose/measure time calculation content-type based in prefetch to improve accuracy" (Iea622).
- При расчете времени создания/измерения в предварительной выборке теперь учитывается тип контента, чтобы повысить точность (Ibccb1).
- Сделать модификаторы
WindowInsetsPaddingдоступными из общего набора исходных файлов (I070b2)
Версия 1.7.0-beta01
14 мая 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0-beta01. Версия 1.7.0-beta01 содержит эти коммиты.
Изменения в API
- Свойство
KeyboardOptions.shouldShowKeyboardOnFocusснова добавлено как устаревшее скрытое для обеспечения совместимости. (I15cfe) Modifier.anchoredDraggableтеперь по умолчанию меняет дельты перетаскивания для компонентов с горизонтальной ориентацией при использовании в макете с письмом справа налево. (I3c6d9)AnnotatedString.hasEqualsAnnotationsтеперь называетсяhasEqualAnnotations. (I685c0)- Обновлен API для получения ссылок с темами Material в тексте. В частности, удалены методы из
TextDefaultsдля создания тематическихLinkAnnotationsи разбора HTML с тематическими ссылками. Вместо этого добавлен классTextLinkStyles, который позволяет задавать стиль ссылок в качестве параметра для функции Text. (I31b93) - Заменили
onDragStartedиonDragStoppedна обратные вызовы, не связанные с приостановкой. (I59de8)
Исправление ошибок
- Исправлена ошибка, из-за которой происходил сбой Pager, когда размер
contentPaddingбыл больше входящих ограничений. Теперь Pager принудительно преобразует отрицательные значения, возвращаемые изPageSize, в 0. (Iba5d8, b/314008560)
Версия 1.7.0-alpha08
1 мая 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0-alpha08. Версия 1.7.0-alpha08 содержит эти коммиты.
Новые функции
- В контекстное меню, вызываемое нажатием правой кнопки мыши, для значков
BasicTextFieldиSelectionContainerдобавлены пункты "Вырезать", "Копировать", "Вставить" и "Выбрать все". (If8c93, Ia2b49, I6f268)
Изменения в API
LazyLayoutЗапросы на предварительную выборку теперь можно отмечать как срочные. Это означает, что мы ожидаем, что этот элемент понадобится в следующем кадре, и хотим игнорировать бюджет кадра, чтобы выполнить больше работы заранее (Id513f).- Название "
isPositionedByParentWithDirectManipulation" изменено на "introducesFrameOfReference". Обратите внимание, что теперь это свойство имеет обратный эффект. По умолчанию большинство элементовLayoutCoordinatesзадают систему координат, и только при прямом манипулировании свойство будет иметь значение false. Чтобы запросить позицию, используя только те, которые вводят систему координат, используйтеpositionInLocalFrameOfReference(...). ИлиpositionInLocalLookaheadFrameOfReferenceотLookaheadScope. (Ifc5f7) - Название "
onClicked" изменено на "onClick" вLinkInteractionListener(Iaa35c) - Изменение лямбда-функции действия для
getScrollViewportLengthв соответствии с отзывом совета по API. (Ibc74a) - Переименованы API делегирования рукописного ввода стилусом. (Ica45f, b/327271923)
- Переименуйте
TextInclusionStrategy.isInsideвisIncluded. Сделай тип возвращаемого значенияParagraph/MultiParagraph#getRangeForRect()ненулевым. (I51f26)
Исправление ошибок
- В контекстные меню текста в
SelectionContainerдобавлен пункт "Выбрать все". (Ib750e, b/240143283) - Исправлена проблема с созданием длинных скриншотов для контейнеров с прокруткой с помощью клавиши
reverseScrolling=true. (I7c59c) - Исправлена проблема, из-за которой значение
currentValueвAnchoredDraggableStateменялось при приближении к границам штата. (Iea30b, b/333846848)
Внешний вклад
- Название
PrefetchExecutorизменено наPrefetchScheduler, чтобы лучше отражать обязанности. (Ib9154) - Добавлена поддержка предварительной выборки элементов во вложенных тегах
LazyLists(например, в тегеLazyColumn, который отрисовывает вложенный тегLazyRows). Ожидается, что это изменение позволит уменьшить количество пропущенных кадров при прокрутке для таких теговLazyLists. По умолчанию предварительно загружаются первые два вложенных элемента, но это поведение можно контролировать с помощью новых APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)иLazyListPrefetchStrategy#onNestedPrefetch. (I51952)
Версия 1.7.0-alpha07
17 апреля 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0-alpha07. Версия 1.7.0-alpha07 содержит эти коммиты.
Новые функции
- Добавлен объект
TextDefaults, содержащий методы для создания объектаLinkAnnotationи разбора строки с тегами HTML, которые применяютMaterialThemeк ссылкам. (I98532, b/139312671) - В
LazyVerticalGridиLazyHorizontalGridдобавлена поддержка анимации появления и исчезновения объектов. Ранее можно было добавить модификаторModifier.animateItemPlacement(), чтобы поддерживать анимацию размещения (изменения порядка). Мы прекратили поддержку этого модификатора и добавили новый неэкспериментальный модификаторModifier.animateItem(), который позволяет использовать все три типа анимации: появление (затемнение), исчезновение (затемнение) и изменение порядка. (Ib7d12, b/330510929) - В
LazyVerticalStaggeredGridиLazyHorizontalStaggeredGridдобавлена поддержка анимации появления и исчезновения объектов. Ранее можно было добавить модификаторModifier.animateItemPlacement(), чтобы поддерживать анимацию размещения (изменения порядка). Мы прекратили поддержку этого модификатора и добавили новый неэкспериментальный модификаторModifier.animateItem(), который позволяет использовать все три типа анимации: появление (затемнение), исчезновение (затемнение) и изменение порядка. (I69bc9, b/330511290)
Изменения в API
- Добавляет
ContextMenuColorsи связанный с нимLocalContextMenuThemeProvidableCompositionLocal. Цвета контекстного меню в текстовых полях и выделяемом тексте можно изменить, указав локаль композиции. (Ifa154) - Для текстовых ссылок добавлен стиль нажатия в дополнение к обычному стилю, стилю при наведении и стилю при фокусе. (I5f864, b/139312671)
- Добавлен жест
ViewConfiguration.HandwritingGestureLineMarginдля рукописного ввода. Поддержка рукописного ввода для языкаBasicTextField. (Ie6e13, b/325660505) - Удален код
DelegatableNode.scrollIntoViewдля версии 1.7, так как мы не успели стабилизировать остальную часть связанного API. Эта функция будет добавлена в версии 1.8 (I6cf61, b/333421581, b/332900232). - При запросе координат макета теперь можно использовать аргумент
excludeDirectManipulationOffset, чтобы исключить смещение, заданное родительскими макетами, которые разместили дочерние элементы с помощьюPlaceable.PlacementScope.withDirectManipulationPlacement. Аналогично, если макет часто меняет положение дочерних элементов, он может размещать их с помощьюwithDirectManipulationPlacement(например, прокрутки, реализованной по умолчанию). Это позволяет создавать более интуитивно понятные анимации на основеapproachLayout, поскольку теперь можно выбирать, какой параметр смещения анимировать, а какой применять напрямую. (I60ec7) - Представляем
requestScrollToItemдляLazyStaggeredGrid. Теперь клиент может отказаться от сохранения индекса на основе ключа для каждого прохода измерения, вызвав функциюrequestScrollToItem. Это не повлияет на существующее поведение, если не будет вызван методrequestScrollToItem. (I63983) - Представляем
requestScrollToPageв Pager Теперь клиент может отказаться от сохранения индекса на основе ключа для каждого прохода измерения, вызвав функциюrequestScrollToPage. Это не повлияет на существующее поведение, если не будет вызван методrequestScrollToPage. (Ic4213) - Представлен в
requestScrollToItem(LazyGrids). Теперь клиент может отказаться от сохранения индекса на основе ключа для каждого прохода измерения, вызвав функциюrequestScrollToItem. Это не повлияет на существующее поведение, если не будет вызван методrequestScrollToItem. (I0a7a0) ClickableTextотмечен как устаревший. Чтобы добавить ссылки в текст, создайтеAnnotatedStringсLinkAnnotation, соответствующим вашей ссылке, и передайте этотAnnotatedStringв composable-функциюText(I34d4b, b/323346994).- Правило
UrlAnnotationбольше не поддерживается, используйте вместо него правилоLinkAnnotation.Url. Если вы используете темы Material, то создайте аннотацию с помощью объектаTextDefaults, чтобы применить к ней тему Material (I8d180, b/323346545). String.parseAsHtmlпереименован вAnnotatedString.Companion.fromHtml(I43dcd)- В метод
parseAsHtmlдобавлены аргументы стиля (linkStyle,focusedLinkStyle,hoveredLinkStyle) и слушатель взаимодействия со ссылками. При анализе строки с тегами HTML с помощью тегов<a>метод создает объектLinkAnnotation.Urlдля каждого такого тега и передает объекты стиля и прослушиватель взаимодействия со ссылками каждой аннотации. (I7c977) - Теперь функция
LinkAnnotationпринимает аргументы для стилизации на основе статуса иLinkInteractionListener. Добавьте эту аннотацию кAnnotatedString, чтобы получить гиперссылку. С помощью параметровfocusedStateи/илиhoveredStateможно задать визуальную конфигурацию ссылок, когда на них наведен фокус и/или курсор. (I81ce4, b/139312671) - Флаг функции для длинных скриншотов удален. (I28648, b/329128246)
LazyColumnтеперь правильно отображает закрепленные заголовки на длинных скриншотах. (I8d239, b/329296635)- Стабилизированы большинство оставшихся экспериментальных API, представленных в новой версии
BasicTextField. (I714e2) - В параметр
BasicSecureTextFieldдобавлен параметрtextObfuscationCharacter, который позволяет выбрать символ для маскировки содержимого. (I0588b) - Источники
NestedScrollDrag and Fling заменены наUserInputиSideEffect, чтобы учесть расширенное определение этих источников, которое теперь включает анимацию (Side Effect) и колесико мыши и клавиатуру (UserInput). (I40579) - Добавлен параметр
LocalBringIntoViewSpec, который позволяет задать поведение прокрутки с фокусировкой в зависимости от платформы. Он применяется на уровне модификатора Scrollable. (I27aa5, b/317453911) - Контакт (
TextFieldCharSequence) удален.TextFieldBuffer.originalValuesзаменено наTextFieldBuffer.originalTextиTextFieldBuffer.originalSelection. (I2c7d6) ImeOptions.hintLocalesбольше не может иметь значение null. Если вы хотите передать пустой список языковых стандартов, используйтеLocaleList.Empty. (Ic5bc4)- Название "
getOffsetFractionForPage" изменено на "getOffsetDistanceInPages". (Ia05e2)
Исправление ошибок
- При объединении объектов
InputTransformationsс объектамиnextих объектыKeyboardOptionsтеперь корректно объединяются по отдельным параметрам с помощью нового методаKeyboardOptions.merge. (Ie5304, b/295951492) AnchoredDraggableStatetargetValueбольше не учитывает пороговые значения позиций. Теперь у него есть неявный порог в 50%, то есть значениеtargetValueменяется в середине между двумя опорными точками. (I82c2c)
Внешний вклад
- Переименованы два API прокрутки (I56a75).
Версия 1.7.0-alpha06
3 апреля 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0-alpha06. Версия 1.7.0-alpha06 содержит эти коммиты.
Новые функции
- В
LazyColumnиLazyRowдобавлена поддержка анимации появления и исчезновения объектов. Ранее можно было добавить модификаторModifier.animateItemPlacement(), чтобы поддерживать анимацию размещения (изменения порядка). Мы прекратили поддержку этого модификатора и добавили новый неэкспериментальный модификаторModifier.animateItem(), который позволяет использовать все три типа анимации: появление (затемнение), исчезновение (затемнение) и изменение порядка. (I2d7f7, b/150812265) - Клиенты
LazyColumn/LazyRowтеперь могут отказаться от ведения индекса на основе ключа для предстоящего прохода, вызвавLazyListState.requestToScrollбез приостановки. (I98036, b/209652366) - Добавлен метод
parseAsHtmlдля строк со стилями: он позволяет преобразовывать строку, отмеченную тегами HTML, вAnnotatedString. Обратите внимание, что поддерживаются не все теги. Например, пока нельзя создавать маркированные списки. (I84d3d) - Добавлена экспериментальная поддержка длинных скриншотов в контейнерах прокрутки Compose с использованием официального API Android (
ScrollCaptureCallback). Эта функция экспериментальная и может работать некорректно. Поэтому по умолчанию она отключена. Чтобы включить эту функцию, установите для экспериментального параметраComposeFeatureFlag_LongScreenshotsEnabledзначение true. Этот флаг будет удален до выхода бета-версии 1.7. (I2b055, b/329296471) - Мы добавили новый API
GraphicsLayer, который позволяет более гибко размещать и отрисовывать объектыGraphicsLayer, а также поддерживает встроенные функции отрисовки без необходимости координировать с реализациями Composable указание объектов модификатораGraphicsLayer.
Изменения в API
- Теперь все параметры
KeyboardOptionsпо умолчанию имеют неопределенное значение. Добавлен методKeyboardOptions.merge. - Атрибут
KeyboardOptions.autoCorrectпереименован вautoCorrectEnabledи теперь может иметь нулевое значение, которое означает, что значение не указано. (Ia8ba0, b/295951492) - Название "
outOfBoundsPageCount" изменено на "beyondViewportPageCount". (I129c6) fun ClipEntry.getMetadata()изменено наval ClipEntry.clipMetadata. (I50155)- Контакт (
TextFieldState.valueAsFlow()) удален. Рекомендуется использоватьsnapshotFlow { state.text }илиsnapshotFlow { TextFieldCharSequence(state.text, state.selection) }(I7d629). - Изменено расположение
InputTransformation.transformInputпараметров. Контакт (originalValue: TextFieldCharSequence) удален. Теперь это значение передается вTextFieldBufferс тем же названием. Также удален параметрvalueWithChanges: TextFieldBuffer.TextFieldBufferтеперь является областью действия получателя функции. (I919cc) - В вариантах
BasicTextField(state)иBasicSecureTextFieldтеперь используетсяKeyboardActionHandlerвместоKeyboardActionsдля обработки действий, выполненных с помощью виртуальной клавиатуры. (I58dda) - API для делегирования рукописного ввода стилусом, чтобы поддерживать его в "поддельных" полях ввода текста. (I9c09c, b/327271923)
- Название "
KeyboardOptions.shouldShowKeyboardOnFocus" изменено на "showKeyboardOnFocus". (Ib4b7a, b/295951492) - Из функции
Modifier.contentReceiverбыл удален параметрhintMediaTypes. Мы и раньше рекомендовали разработчикам проверять тип медиаконтента, полученного отTransferableContent, поскольку он может быть несовместим с настроеннымhintMediaTypes. (I82f99) - Изменен порядок параметров
BasicSecureTextField. Удалены параметрыkeyboardTypeиimeAction, вместо которых используется классKeyboardOptionsс теми же значениями по умолчанию, подходящими дляBasicSecureTextField. Также удален параметрscrollState. (Ibbfa9) - Тип параметра "
TextFieldState.text" изменен с "TextFieldCharSequence" на "CharSequence". Поэтому мы добавилиTextFieldState.selection: TextRangeиTextFieldState.composition: TextRange?, чтобы считывать текущие значения выбора и композиции непосредственно из объекта состояния. - Контакт (
TextFieldState.forEachTextValue) удален. (Idb2a2) - Удалены функции
ClipboardManager.getClipMetadataиClipboardManager.hasClip. Чтобы прочитать метаданные текущей записи клипа, используйтеclipEntry.getMetadata(). Также проверьте результатClipboardManager.getClip, чтобы узнать, есть ли в буфере обмена текущий клип. (I50498) - Теперь
ClipboardManager.setClipпринимает значение null, чтобы очистить буфер обмена. (I7d2e9) ReceiveContentListenerпреобразован в интерфейс функции. Также удалена перегрузкаModifier.receiveContent, принимающая лямбда-выражение, посколькуReceiveContentListenerтеперь является функциональным интерфейсом.Modifier.receiveContentпереименован вModifier.contentReceiver. (I1e6af)- Название "
TransferableContent.consumeEach" изменено на "TransferableContent.consume". (I1e462) rememberTextFieldStateперешел на стабильную версию API. (I37999)
Исправление ошибок
- Исправлена ошибка, из-за которой вариант
BasicTextField(state)не работал с клавиатурами CJK(на основе композиции). (I54425) - Исправлена ошибка, из-за которой
Modifier.dragAndDropTarget()мог ссылаться на устаревшие данные в некоторых сценариях с повторным использованиемModifier.Node. (I05bb1) - Отменено недавнее изменение договора, согласно которому вызовы
AnchoredDraggableState#anchoredDragдолжны были завершаться в конце операцииanchoredDrag. (I95715)
Версия 1.7.0-alpha05
20 марта 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0-alpha05. Версия 1.7.0-alpha05 содержит эти коммиты.
Изменения в API
- Удалена экспериментальная локальная композиция
LocalTextLinkStyleдля стилизации гиперссылок. (Iebfa7) - Удалено экспериментальное переопределение
BasicTextс аргументомonLinkClicked. В будущем мы добавим API, который будет поддерживать гиперссылки. (I107d5) - Удалены методы и свойства, связанные с кодовыми точками, в разделах
TextFieldStateиTextFieldBuffer. Также удалены суффиксыinCharsиз оставшихся API, связанных с выбором и композицией. (Ief7ce) AnchoredDraggablecurrentValueТеперь при прохождении через опорную точку будет обновляться. ИспользуйтеsettledValue, чтобы получить предыдущую семантикуcurrentValue, обновляя данные только при фиксации на якоре. Теперь прогресс отображается как функция (требуется указать начальную и конечную точки), а не как свойство. (Ibe6e8, b/318707189, b/298271489, b/294991954)BasicTextField(state),TextFieldState,InputTransformation,OutputTransformation,TextFieldLineLimitsиTextFieldDecoratorперешли на стабильную версию. (I9582b)- Добавлен класс
InterceptPlatformTextInputдля написания низкоуровневых тестов, связанных с IME, и других низкоуровневых вариантов использования IME. ПоддержкаPlatformTextInputTestOverrideпрекращена. (I862ed, b/322680547) - Метод
restrictedConstraints()разделен на два:fitPrioritizingWidth()иfitPrioritizingHeight()(I6d7fd).
Внешний вклад
- Добавлены два новых API
isLastScrollForward/isLastScrollBackwardдля проверки направления прокрутки последнего действия прокрутки. Если действие прокрутки ещё не выполнено, возвращается значение false. (I63a0e)
Версия 1.7.0-alpha04
6 марта 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0-alpha04. Версия 1.7.0-alpha04 содержит эти коммиты.
Изменения в API
- Поддержка рукописного ввода стилусом на устройствах с Android U и более поздних версий. (I002e4)
- В атрибут
KeyboardOptionsдобавлен атрибутhintLocales, чтобыTextFieldsмог подсказывать IME определенные языковые стандарты для выбора предпочитаемого языка. (Id18c2) - Удалены экспериментальные перегрузки
BasicTextField2иBasicSecureTextField, которые принимали параметрыvalue: StringиonValueChange: () -> String. (I568b4) - Добавьте к функции
InputTransformationнеобязательную функциюapplySemantics, чтобы повлиять на семантику элементаBasicTextField2, к которому она применяется. (I74a2f, b/170648072) - В этом списке изменений мы добавляем семантическое действие
GetScrollViewportLength, чтобы передавать в систему специальных возможностей информацию о компонентах, которые прокручиваются в Compose. Это изменение также применяется к использованию указанного свойства в прокручиваемых списках Foundation. (Ic5fa2) BasicTextField2переименован вBasicTextField. (Ie5713)FocusRequester.createRefsтеперь стабильная версия (I4d92c, b/261436820)- Добавлена функция
DelegatableNode.scrollIntoView(), позволяющая узлам модификаторов напрямую отправлять запросыscrollIntoView. (I2b3b7, b/299939840) - Добавлен параметр
DelegatableNode.requireView(), позволяющий узлам модификаторов получать текущий объектViewбез чтения локальной композиции. (I40768) - В контекстном потоке на уровне строки и столбца теперь можно указывать информацию о макете, в том числе индекс строки, положение и ограничения на максимальную ширину и высоту, чтобы элемент оставался в заданном положении. Если ширина или высота элемента превышает максимальное значение, он может быть перенесен на следующую строку или пропущен в зависимости от настроек переполнения. (Id13f8, b/292114798)
Исправление ошибок
- Исправлена ошибка, из-за которой при определенных условиях переключение атрибутов
enabledилиreadOnlyэлементаTextFieldприводило к сбою. (Iae17b)
Версия 1.7.0-alpha03
21 февраля 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0-alpha03. Версия 1.7.0-alpha03 содержит следующие коммиты:
Изменения в API
- Добавлен параметр
DelegatableNode.requireLayoutCoordinates(), позволяющий получить текущее значение параметраLayoutCoordinatesобъектаModifier.Nodeбез необходимости переопределять параметрonPlacedи сохранять координаты в свойстве самостоятельно. (Ia8657) - Добавлен параметр
DelegatableNode.currentLayoutCoordinates, позволяющий получить текущее значение параметраLayoutCoordinatesобъектаModifier.Nodeбез необходимости переопределять параметрonPlacedи сохранять координаты в свойстве самостоятельно. (Iaebaa) - Оптимизация эффективности в
DraggableAnchors, используемаяAnchoredDraggable. (I89cff) BasicTextField2и связанные с ним API из пакетаandroidx.compose.foundation.text2перенесены вandroidx.compose.foundation.text. (I9f635)- Команда
BasicTextField2больше не принимает параметрCodepointTransformation. ИспользуйтеBasicSecureTextFieldилиOutputTransformation. (Id34ff) - Добавлен метод для сравнения аннотаций двух объектов
AnnotatedStrings. (I32659) - Представляем
ContextualFlowRowи улучшенныеFlowRow/ColumnсMaxLinesиOverflow. Мы рады сообщить, что в экспериментальных тегахFlowRowиFlowColumnпоявились новые возможности, в том числе поддержка тегаmaxLinesи переполнения, а также новые тегиContextualFlowRowиContextualFlowColumn. Это обновление позволяет использовать компоненты с оптимальной производительностью. Например,ContextualFlow*идеально подходит для большого количества товаров, если используется небольшая конфигурацияmaxLinesи динамические кнопки "Ещё +N". АFlowRowиFlowColumnлучше всего подходят для небольшого количества товаров (менее 100). Важно! Чтобы сохранить существующее поведение вFlowRowилиFlowColumn, где все элементы компонуются независимо от того, соответствуют ли они максимальному значению поперечной оси, задайте дляoverflowзначениеFlowRowOverflow.VisibleилиFlowColumnOverflow.Visibleво время инициализации. Примеры использования новых функций можно найти в разделахContextualFlowRowSampleиFlowRowSample. (Ib9135, b/293577082)
Исправление ошибок
- Анимация курсора больше не запрашивает фреймы между состояниями "включено" и "выключено". (Ia2253)
KeyboardOptionsУстаревшие конструкторы копирования теперь правильно копируют все свойства. (If12de)
Версия 1.7.0-alpha02
7 февраля 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0-alpha02. Версия 1.7.0-alpha02 содержит следующие коммиты:
Изменения в API
HorizontalPager,VerticalPagerиPagerStateпереведены на стабильную версию. (I67660, b/316966909)- Добавлен локальный компонент
LocalTextLinkStyle, позволяющий менять стиль ссылок в тексте приложения. Если вы используете собственную тему, то должны задать этот локальный компонент в соответствии с ней. При использовании темы Material цвет ссылки по умолчанию будет задан как основной цвет Material. (I7eb10) - Добавлен модификатор
receiveContent, который позволяет разработчикам получать расширенный контент в Jetpack Compose. receiveContentинтегрируется сBasicTextField2, чтобы принимать контент, предоставленный программной клавиатурой или вставленный из буфера обмена. (I81b72)- В этом изменении мы заменяем
SnapFlingBehaviorнаTargetedFlingBehaviorв пейджере, чтобы разблокировать другие варианты использования и обеспечить большую гибкость. (I762ea) - В этом изменении мы делаем Snapping API стабильными. Мы также удалили часть тестового кода и добавили больше примеров в Snapping. (Id8da9)
- Представляем
TargetedFlingBehavior–FlingBehavior, который позволяет передавать информацию о состоянии текущей анимации и ее целевом смещении прокрутки. (I6a207)
Исправление ошибок
BasicTextField2теперь удерживает курсор в поле зрения при вводе текста, если он был прокручен за пределы поля зрения или может выйти за его пределы из-за ввода. (Ieb856, b/237190748)
Внешний вклад
- Добавлен экспериментальный API для настройки предварительной выборки LazyLists. (I022a4)
Версия 1.7.0-alpha01
24 января 2024 г.
Выход androidx.compose.foundation:foundation-*:1.7.0-alpha01. Версия 1.7.0-alpha01 содержит следующие коммиты:
Новые функции
- Добавлены новые
Indication APIиIndicationNodeFactory. Это позволяет создавать более эффективные реализацииIndicationпо сравнению с предыдущим (теперь устаревшим) APIrememberUpdatedInstance. Информацию о переходе можно найти на сайте developer.android.com. - Теперь команда
clickable / combinedClickable / selectable / toggleableпринимает параметрMutableInteractionSource, допускающий значение null. Если значение равно null, а предоставленный параметрIndicationявляетсяIndicationNodeFactory, тоIndicationможно создать только при необходимости, что повышает производительность. Если вы не используетеMutableInteractionSource, рекомендуется передавать значение null.
Изменения в API
DecayAnimationAnchoredDraggableВAnchoredDraggableдобавлен параметрdecayAnimationSpec, позволяющий использовать анимацию затухания при переходе к одному из якорей. Кроме того, мы переименовали существующий тегanimationSpecвsnapAnimationSpec, чтобы вам было проще понять, для чего предназначен каждый из них.BasicTextField2доступен для экспериментального использования. Она должна быть примерно на том же уровне, что иBasicTextField, а ее поведение должно быть готово к использованию в рабочей среде. Однако пока API остается экспериментальным. До стабилизации он будет переименован вBasicTextFieldи перемещен в тот же пакет.- Представлен первый черновик API
OutputTransformationдляBasicTextField2. Этот API заменяет большинство вариантов использованияVisualTransformationв старой версииBasicTextField. Однако он ещё не завершен, и некоторые функции могут работать неправильно. Мы будем рады любым отзывам о том, насколько удобно использовать API в ваших целях. (aosp/2708848) - Добавлен тег
LinkAnnotation, позволяющий добавлять в текст ссылки и кликабельные элементы. Функция связывания ещё не завершена, и в API будут внесены дополнительные изменения. - Добавлен модификатор
receiveContent, который позволяет разработчикам получать расширенный контент в Jetpack Compose. receiveContentинтегрируется сBasicTextField2, чтобы принимать контент, предоставленный программной клавиатурой или вставленный из буфера обмена.KeyboardOptions.shouldShowKeyboardOnFocusпозволяет отключить поведение по умолчанию, при которомBasicTextFieldзапрашивает виртуальную клавиатуру при получении фокуса.TextInputServiceиLocalTextInputServiceбольше не поддерживаются. Вместо этого используйтеPlatformTextInputModifierNode, чтобы напрямую интегрироваться с API IME платформы. (aosp/2862698)- Поддержка
Indication#rememberUpdatedInstanceпрекращена. Она значительно снижает производительность и не позволяет выполнять другие оптимизации. Вместо этого используйте новый APIIndicationNodeFactory.
Исправление ошибок
- Теперь при передаче параметра
VisualTransformationBasicTextFieldбудет предварительно проверять небольшое количество сопоставлений смещений. Это помогает выявлять распространенные ошибки в коде, которые приводят к невосстановимым исключениям на более поздних этапах измерения или отрисовки. Если выбрасывать исключения во время композиции, разработчики с большей вероятностью обнаружат ошибки на этапе разработки, что поможет избежать сбоев в рабочей среде. (I0fd42) - Функция
VisualTransformationне будет вызывать исключение, если вы вернете недопустимый индекс для недопустимого индекса (b/316401857 ).
Версия 1.6
Версия 1.6.8
12 июня 2024 г.
Выход androidx.compose.foundation:foundation-*:1.6.8. Версия 1.6.8 содержит эти коммиты.
Версия 1.6.7
1 мая 2024 г.
Выход androidx.compose.foundation:foundation-*:1.6.7. Версия 1.6.7 содержит эти коммиты.
Версия 1.6.6
17 апреля 2024 г.
Выход androidx.compose.foundation:foundation-*:1.6.6. Версия 1.6.6 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой при определенных условиях переключение атрибутов
enabledилиreadOnlyобъектаTextFieldприводило к сбою. (Iae17b)
Версия 1.6.5
3 апреля 2024 г.
Выход androidx.compose.foundation:foundation-*:1.6.5. Версия 1.6.5 содержит эти коммиты.
Исправление ошибок
- Добавлены журналы отладки для трудновоспроизводимых ошибок в строке/столбце (b/300280216 и b/297974033).
Версия 1.6.4
20 марта 2024 г.
Выход androidx.compose.foundation:foundation-*:1.6.4. Версия 1.6.4 содержит эти коммиты.
Исправление ошибок
- При долгом нажатии с последующим перетаскиванием, если в первом кадре перетаскивания курсор выходит за границы макета текста, приложение больше не закрывается аварийно. (Icdf90, b/325307463)
Версия 1.6.3
6 марта 2024 г.
Выход androidx.compose.foundation:foundation-*:1.6.3. Версия 1.6.3 содержит эти коммиты.
Версия 1.6.2
21 февраля 2024 г.
Выход androidx.compose.foundation:foundation-*:1.6.2. Версия 1.6.2 содержит следующие коммиты:
Исправление ошибок
- Исправьте проблему, из-за которой не сбрасываются настройки
AnimateContentSize. (I07051) - Исправлена проблема, из-за которой в некоторых случаях в кеш попадало слишком много текста
intrinsicHeight. (3cd398, b/217910352)
Версия 1.6.1
7 февраля 2024 г.
Выход androidx.compose.foundation:foundation-*:1.6.1. Версия 1.6.1 содержит следующие коммиты:
Исправление ошибок
- Исправлена ошибка, из-за которой при прокрутке за пределы экрана не отображалась сетка с чередующимися строками. (bffc39)
- Добавлена проверка макета с большими размерами. (e74af5)
- Исправлено размещение объектов нулевого размера в начале сетки с чередованием. (785f94)
- Вызовите обратный вызов onRelease в том же порядке, что и onForgotten. (31ce3b)
Версия 1.6.0
24 января 2024 г.
Выход androidx.compose.foundation:foundation-*:1.6.0. Версия 1.6.0 содержит следующие коммиты:
Важные изменения с версии 1.5.0
- Новый модификатор
Modifier.anchoredDraggable, который позволяет перетаскивать и анимировать объекты между заданными точками привязки. Этот модификатор предназначен для заменыModifier.swipeable. Узнайте, как использовать этот инструмент и перейти сModifier.swipeable, из руководства по переходу. - Добавлена функция перетаскивания между приложениями и компонентами. Начните работу с
DragAndDropTarget,Modifier.dragAndDropSourceи другими API. Modifier.draggable2D– новый модификатор, который позволяет легко перетаскивать объекты в 2D. См. пример.AndroidExternalSurfaceиAndroidEmbeddedExternalSurfaceпозволяют легко добавлять компоненты, управляемые поверхностью, в Compose.- Различные изменения и улучшения API в
PagerиsnapFlingBehaviour - Различные API для работы с фокусом, текстом и вставками теперь относятся к стабильным API
Версия 1.6.0-rc01
10 января 2024 г.
Выход androidx.compose.foundation:foundation-*:1.6.0-rc01. Версия 1.6.0-rc01 содержит следующие коммиты:
Изменения в API
- Конструктор расширения
DragAndDropTarget()удален. Создайте новый экземпляр, используяobject: DragAndDropTarget {}. (I32318)
Версия 1.6.0-beta03
13 декабря 2023 г.
Выход androidx.compose.foundation:foundation-*:1.6.0-beta03. Версия 1.6.0-beta03 содержит следующие коммиты:
Исправление ошибок
- Исправлена ошибка, из-за которой происходил сбой при работе с очень большим текстом, размер которого определялся с помощью бесконечных ограничений. (I1a7df, b/312294386)
PlatformImeOptionsтеперь является конкретным классом, а не интерфейсом. (If40a4)
Версия 1.6.0-beta02
29 ноября 2023 г.
Выход androidx.compose.foundation:foundation-*:1.6.0-beta02. Версия 1.6.0-beta02 содержит следующие коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой
canScrollне обновлялся после прокрутки без перекомпоновки. (I60a86) - Исправлены ошибки
Modifier.animateItemPlacement()иLookaheadScope, возникавшие после небольших прокруток. (I3a2b7)
Версия 1.6.0-beta01
15 ноября 2023 г.
Выход androidx.compose.foundation:foundation-*:1.6.0-beta01. Версия 1.6.0-beta01 содержит следующие коммиты:
Изменения в API
- Модификатор
DragAndDropTargetтеперь принимаетDragAndDropTargetявно и имеет лямбда-функцию для включения сеанса перетаскивания. Теперь дляDragAndDropModifierNodeесть две фабричные функции. Один для получения данных, а другой – для их передачи (I69481). - Значение
maximumFlingVelocityтеперь представлено в виде числа с плавающей запятой. В документацию внесены уточнения о параметреmaximumFlingVelocity. (I8adc7) onDragAndDropStartна заводеDragAndDropModifierNodeпереименован вacceptDragAndDropTransfer.acceptsDragAndDropTransferдобавлен вdragAndDropTargetModifier, чтобы принимать файлы, перетаскиваемые в сеансе. Эта лямбда-функция возвращает допустимый объектDragAndDropTarget, если пользователь хочет перетащить объект. Другие лямбда-функции для обработки событий перетаскивания были заменены этой.добавлена фабричная функция
DragAndDropTargetдля получения данных из сеансов перетаскивания (Iebf3a);Если в
AnchoredDraggableуказатьstartDragImmediately, можно будет обнаруживать жесты перетаскивания. Его удобно задавать, когда виджет анимируется к целевому якорю. См. пример. (Ie6d13, b/285139987)API подсказок Foundation Tooltip теперь
@ExperimentalFoundationApi(I30b0b)Удален тип
DragAndDropInfo. Теперь типDragAndDropModifierNode.dragпринимает параметры для лямбда-функцииtransferData, размера декоративного элемента и перетаскивания декоративного элементаDrawScope.DragAndDropTargetсодержит методы для определенных событий перетаскивания, а не один абстрактный методonDragAndDropEventв функции фабрики дляDragAndDropModifierNodeпереименован вonDragAndDropStart, чтобы было понятнее, что предоставленныйDragAndDropTargetдействителен только для определенного сеанса перетаскивания.Устройство
DragAndDropEventTypeудалено (I645b1).Название "
PlatformTextInputModifierNode.runTextInputSession" изменено на "establishTextInputSession". (I03cd0)Замените
OriginalTextнаTextSubstitution. (Ifa5a8)Название "
PlatformTextInputModifierNode.textInputSession" изменено на "runTextInputSession". (Ie9c6b)Дочерние элементы
SubcomposeLayout(и макеты, такие какLazyColumn, основанные на нем), которые сохраняются для повторного использования в будущем, считаются деактивированными. Для тестирования таких узлов был представлен новый APIassertIsDeactivated(). Остальные тестовые API по умолчанию отфильтровывают деактивированные узлы. (I2ef84, b/187188981)Параметр
clippingEnabledфункцииModifier.magnifierпереименован вclip.Параметр
magnifierCenterобъектаModifier.magnifierтеперь может иметь значение null, но поведение по умолчанию осталось прежним. (I6aa66)API Material
SwipeToReveal(для карточек и чипов) теперь используют API на основе слотов (как рекомендовано в Compose) вместо экземпляров на основе классов данных для создания этих слотов. Это критическое изменение. Чтобы узнать, как использовать новый API, посмотрите демонстрацию и образец кода. (Ia8943)
Исправление ошибок
- Реализуйте equals и hashcode для
PageSize.Fixed. (Ie3ede, b/300134276) - Исправлена ошибка, из-за которой макет
BasicTextне уменьшался, когдаminWidthменялся иminWidthбыл меньше исходных ограниченийmaxWidth(Idb19c). - Добавлена поддержка рендеринга кругового градиента в
ArcLine. (I4d5bb) - Исправлена проблема совместимости двоичных файлов при изменении отступа окна (Iee695).
- Удален основной слой Material для чипа/кнопки Material3, поскольку микротесты показывают, что без него производительность выше. (I55555)
Версия 1.6.0-alpha08
18 октября 2023 г.
Выход androidx.compose.foundation:foundation-*:1.6.0-alpha08. Версия 1.6.0-alpha08 содержит следующие коммиты.
Новые функции
Modifier.draggable2D– новый модификатор, который позволяет легко перетаскивать объекты в 2D. См. образец (Id95f5, b/214412658).
Изменения в API
- В функции
Modifier.dragAndDrawSourceлямбда-функцияonDrawDragShadowпереименована вdrawDragDecoration, а в функцииDragAndDropInfoпараметр размера переименован вdragDecorationSize. (Id0e30, b/303904810) - Параметр
decorationBoxфункцииBasicTextField2переименован вdecorator. Его тип также будет изменен на эквивалентный забавный интерфейсTextFieldDecorator. (I23c1c)
Исправление ошибок
- Улучшена документация по
BasicTextFieldв отношении требований кonValueChange. (I90fc9, b/160257648)
Версия 1.6.0-alpha07
4 октября 2023 г.
Выход androidx.compose.foundation:foundation-*:1.6.0-alpha07. Версия 1.6.0-alpha07 содержит следующие коммиты:
Изменения в API
- Добавлена задача
PlatformTextInputMethodTestOverrideдля написания тестов для пользовательских текстовых редакторов. (Id159b) - Переименован фильтр "
GraphicsSurface" в "AndroidExternalSurface" (I11680) - Добавлен временный флаг
DisableNonLinearFontScalingInCompose, отключающий нелинейное масштабирование шрифта. Если вам нужно время, чтобы удалить данные, задайте в тестах значениеDisableNonLinearFontScalingInCompose = true. Этот флаг будет удален в Compose 1.6.0-beta01. (Ic9486) - Добавлены коллекции
ColorListиColorSet, которые позволяют избежать распределения. (I744bd) - Это изменение удаляет
shortSnapVelocityThreshold, которое стало деталью реализацииSnapLayoutInfoProvider. (I65f6d) - Добавлены модификаторы
dragAndDropSourceдля начала сеансов перетаскивания иdragAndDropTargetдля получения данных из сеансов перетаскивания (Ib7828, b/286038936). - Обновите документацию и метод позиционирования для организации "
SnapPositionInLayout". Добавьте отступы контента в метод position вSnapPositionInLayout. (Id7938, b/300116110) - В
TextFieldStateдобавлен элементUndoState, позволяющий отменять и повторять изменения, внесенные пользователем. (Icc024)
Исправление ошибок
- Исправлена ошибка, из-за которой объект
basicMarqueeне анимировался после изменения скорости. (Id2e77, b/297974036)
Версия 1.6.0-alpha06
20 сентября 2023 г.
Выход androidx.compose.foundation:foundation-*:1.6.0-alpha06. Версия 1.6.0-alpha06 содержит следующие коммиты:
Новые функции
- Новые обертки Composable для
SurfaceView,TextureView: GraphicsSurface()иEmbeddedGraphicsSurface(). Это экспериментальный API, который может быть изменен. (I9ddb2) Modifier.magnifier()теперь стабильный API. В частности, вместоMagnifierStyleтеперь используются встроенные параметры в самом модификаторе. (I83bec, b/298381260, b/262367109, b/261438887)
Изменения в API
- В
ScrollScopeдобавлены функцииupdateCurrentPageиupdateTargetPage. Это последние элементы, необходимые для настройки анимированной прокрутки вPagerState.scroll. (I9cad5, b/267744105, b/243786897) - Удалить плотность из
SnapFlingBehavior. Во всех реализацияхSnapLayoutInfoProviderуже есть способ доступа к разрешению, поэтому область действия получателя можно удалить, что упростит реализациюSnapFlingBehaviorиSnapLayoutInfoProviders. (I153c3) - Больше модификаторов отмечено как стабильные. (I56af1, b/298046462)
- Объект
SnapStepSizeудален из списка "SnapLayoutInfoProvider" Расчет должен выполняться с использованием информации о макете и предоставляться с помощью подхода или смещений привязки. (If320c)
Изменения в поведении
- Теперь в Compose используется нелинейное масштабирование шрифтов, чтобы улучшить читаемость и доступность. Если в системных настройках масштаб шрифта больше 100 %, размер мелкого текста увеличится, как обычно, а крупного – незначительно. Кроме того, высота строк, заданная в SP, будет автоматически корректироваться, чтобы оставаться пропорциональной высоте, предназначенной для масштаба 100 %. Подробнее о масштабировании шрифтов… (I11518)
Исправление ошибок
- Удалите использование
rememberSaveableдля подсказок. (Icc131, b/299500338)
Версия 1.6.0-alpha05
6 сентября 2023 г.
Выход androidx.compose.foundation:foundation-*:1.6.0-alpha05. Версия 1.6.0-alpha05 содержит следующие коммиты:
Изменения в API
- Добавьте перегрузки для
BasicSecureTextField, которые принимают неизменяемое значение и обратный вызов для изменения этого значения, как и текущий APIBasicTextField. (Ia4882) - Добавьте
Modifier.preferKeepClear(), чтобы отметить, что окно можно составить с другими, и избежать плавающих окон на устройствах с API 33 и выше. (Ib51d5, b/297260115) - Скорость прокрутки в компонентах View, таких как
ScrollViewиRecyclerView, ограничена значениемViewConfiguration.ScaledMaximumFlingVelocity. В Compose теперь есть собственная версияmaximumFlingVelocity, которая применяется кDraggable. (Ibf974) - Удалены устаревшие перегрузки
PagerиPagerState. (Iea07e) - Добавлен
BasicTooltipBoxвcompose.foundation. ОбновленыPlainTooltipBoxиRichTooltipBox, чтобы использоватьTooltipBoxс новыми композициямиPlainTooltipиRichTooltip. (I79e1d)
Версия 1.6.0-alpha04
23 августа 2023 г.
Выход androidx.compose.foundation:foundation-*:1.6.0-alpha04. Версия 1.6.0-alpha04 содержит следующие коммиты:
Изменения в API
- Добавлен интерфейс
ReusableCompositionдля управления жизненным циклом и повторным использованием вложенных композиций. (I812d1, b/252846775) Modifier.focusGroupпереведен в стабильные API. (I7ffa3)- Добавьте перегрузки для
BasicTextField2, которые принимают неизменяемое значение и обратный вызов для изменения этого значения, как и текущий APIBasicTextField. (I3f2b8) GridItemSpan::currentLineSpanтеперь стабильный API. (Icc29c)- Холст, принимающий
contentDescription, теперь является стабильным API. (Ib3d29) - В параметр
ScrollStateдобавлен параметрviewportSize, позволяющий узнатьviewPortразмер компонента, использующегоScrollState, после выполнения измерений. (I8b85a, b/283102682) - Исправлена ошибка, из-за которой предварительная выборка в Pager не соответствовала поведению в Views. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)теперь стабильна.Deprecated Modifier.consumedWindowInsetsAPI больше не поддерживается. Используйте вместо негоModifier.consumeWindowInsets. (Id72bb)
Версия 1.6.0-alpha03
9 августа 2023 г.
Выход androidx.compose.foundation:foundation-*:1.6.0-alpha03. Версия 1.6.0-alpha03 содержит следующие коммиты:
Изменения в API
- Добавлена перегрузка
LazyLayout, которая принимает лямбда-выражениеLazyLayoutItemProvider, а не простой объект, как раньше. Предыдущая перегрузка устарела. (I42a5a) - Добавлена поддержка настройки
privateImeOptions(Idb772)
Исправление ошибок
- Исправлена ошибка, из-за которой в фиксированных текстовых полях показывалась клавиатура и их можно было редактировать, когда для параметра
readOnlyбыло задано значение true. Также исправлена ошибка, из-за которой клавиатура не показывалась, когда значениеreadOnlyменялось с true на false при фокусе. (I34a19, b/246909589)
Версия 1.6.0-alpha02
26 июля 2023 г.
Выход androidx.compose.foundation:foundation-*:1.6.0-alpha02. Версия 1.6.0-alpha02 содержит следующие коммиты:
Изменения в API
- Добавлен параметр
PagerLayoutInfoс информацией, собранной после прохождения этапа измерения вPager. Также был добавлен параметрPageInfo, который содержит информацию об одной странице, отслеживаемой вPager. (Iad003, b/283098900) - Дополнительные аннотации для указания разрешенных входных данных для композиций (I51109)
- Добавлена команда
SemanticsNodeInteraction.requestFocus, которая позволяет более удобным способом запрашивать фокус в тестах. (Ie8722) - Полностью переработанный API
PlatformTextInput*. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardControllerиLocalSoftwareKeyboardControllerбольше не экспериментальные.LocalSoftwareKeyboardControllerтеперь также являетсяCompositionLocal. (I4c364)- Теперь в параметре
canPanзначенияModifier.transformableуказывают дельту панорамирования, чтобы определить, в каком направлении выполняется панорамирование и разрешить или запретить его. (I692aa, b/266829800) - Обновляет модификатор
consumeWindowInsets, чтобы расширить суперклассAbstractComposeView(Iacd74, b/269479941)
Версия 1.6.0-alpha01
21 июня 2023 г.
Выход androidx.compose.foundation:foundation-*:1.6.0-alpha01. Версия 1.6.0-alpha01 содержит следующие коммиты:
Новые функции
- В Foundation добавлен новый API
AnchoredDraggable. Его можно использовать для создания компонентов, которые можно перетаскивать между дискретными состояниями, например модальных нижних листов. Этот API заменяетSwipeableAPI Material. (I4a2ed)
Изменения в API
- Поддержка
InputConnection#requestCursorUpdates(I0c69b) - Добавлен параметр
scrollAnimationSpec, позволяющий задавать специальные характеристики анимации.BringIntoViewCalculator: обновлено до версииBringIntoViewScroller. (Idb741) - Добавлен тип
ResourceResolutionExceptionдля обертывания исключений, возникающих при попытке загрузить объекты изображений, с описанием пути к объекту, который не удалось загрузить. (I19f44, b/230166331, b/278424788) - Добавлены семантические свойства и действия для поддержки перевода текста. (I4a6bc)
- Добавлен API
BringIntoViewCalculator, который можно использовать, чтобы настроить реакцию компонентов, напримерScrollable, на запросыbringIntoView. Изменена перегрузка прокрутки, чтобы при необходимости принимать экземплярBringIntoViewCalculator. (Iaf5af)
Исправление ошибок
- Добавлена проверка lint, которая предупреждает, если вы создаете
MutableInteractionSourceв композиции, не запоминая его, аналогично проверкам lint для создания изменяемого состояния илиAnimatable. (I5daae) - Добавлена поддержка выделения с помощью мыши. При выборе текста касанием выделение будет расширяться по словам и сокращаться по символам. (Ic0c6c, b/180639271)
- Добавлен интерфейс
FocusTargetModifierNode, который можно использовать для создания специального объектаFocusTarget. (I9790e)
Версия 1.5
Версия 1.5.4
18 октября 2023 г.
Выход androidx.compose.foundation:foundation-*:1.5.4. Версия 1.5.4 содержит следующие коммиты:
Версия 1.5.3
4 октября 2023 г.
Выход androidx.compose.foundation:foundation-*:1.5.3. В этой версии нет изменений.
Версия 1.5.2
27 сентября 2023 г.
Выход androidx.compose.foundation:foundation-*:1.5.2. Версия 1.5.2 содержит следующие коммиты:
Исправление ошибок
- Исправлена ошибка в тексте, которая приводила к сбоям в определенных обстоятельствах, когда семантика становилась недействительной.
Версия 1.5.1
6 сентября 2023 г.
Выход androidx.compose.foundation:foundation-*:1.5.1. Версия 1.5.1 содержит следующие коммиты:
Исправление ошибок
- Исправлена ошибка, из-за которой в фиксированных текстовых полях показывалась клавиатура и их можно было редактировать, когда для параметра
readOnlyбыло задано значение true. Также исправлена ошибка, из-за которой клавиатура не показывалась, когда значениеreadOnlyменялось с true на false при фокусе. (I34a19, b/246909589)
Версия 1.5.0
9 августа 2023 г.
Выход androidx.compose.foundation:foundation-*:1.5.0. Версия 1.5.0 содержит следующие коммиты:
Важные изменения с версии 1.4.0
- Многие базовые модификаторы, в том числе
Modifier.clickable,Modifier.draggable,Modifier.scrollable, модификатор макета и другие, были перенесены вModifier.NodeAPI, что позволило снизить нагрузку на начальную композицию. - Повышена стабильность пейджеров. Исправлено множество ошибок.
- Параметры
pageCountтеперь находятся вPagerState, а не в самом пейджере.
Версия 1.5.0-rc01
26 июля 2023 г.
Выход androidx.compose.foundation:foundation-*:1.5.0-rc01. Версия 1.5.0-rc01 содержит следующие коммиты:
Исправление ошибок
Доступна необязательная проверка, которая рекомендует перенести
mutableStateOf()вызовов в соответствующие специализированные типы для примитивов. Идентификатор правила:AutoboxingStateCreation. Ранее эта проверка была включена по умолчанию для всех проектов. Чтобы это предупреждение показывалось в редакторе Android Studio и в результатах проверки кода, измените его уровень серьезности с информационного на предупреждение (или выше), объявивwarning "AutoboxingStateCreation"в конфигурацииbuild.gradleилиbuild.gradle.ktsмодуля, как показано ниже (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Версия 1.5.0-beta03
28 июня 2023 г.
Выход androidx.compose.foundation:foundation-*:1.5.0-beta03. Версия 1.5.0-beta03 содержит следующие коммиты:
Версия 1.5.0-beta02
7 июня 2023 г.
Выход androidx.compose.foundation:foundation-*:1.5.0-beta02. Версия 1.5.0-beta02 содержит следующие коммиты:
Версия 1.5.0-beta01
24 мая 2023 г.
Выход androidx.compose.foundation:foundation-*:1.5.0-beta01. Версия 1.5.0-beta01 содержит следующие коммиты:
Изменения в API
- Используйте
PlatformDataProvider, чтобы получать данные о пульсе и количестве шагов за день. ИнтерфейсSensorGatewayудален из общедоступного API. (I55b84)
Исправление ошибок
- Уменьшение количества выделений памяти при измерении ленивых списков, сеток и т. д. (Iaf9e2)
- Уменьшение объема выделенной памяти при применении снимков (I65c09)
- Удалены распределения из пружинных анимаций (Ie9431)
- Отменено назначение для
TextLayout(I0fd11) - Удалены несколько назначений при отслеживании скорости указателя (I26bae).
Версия 1.5.0-alpha04
10 мая 2023 г.
Выпущены androidx.compose.foundation:foundation:1.5.0-alpha04 и androidx.compose.foundation:foundation-layout:1.5.0-alpha04. Версия 1.5.0-alpha04 содержит следующие коммиты:
Изменения в API
- Добавлен оптимизированный параметр
TextStyle.merge(...)с полным списком параметров. (Iad234, b/246961787) - Представляем
SnapLayoutInfoProvider, который можно использовать сLazyGridState. (I92134, b/269237141, b/260914964) - Для области действия элемента "ленивая сетка с чередованием" добавлен экспериментальный атрибут
Modifier.animateItemPlacement(). Его можно применить к элементам, чтобы создать анимацию изменения положения или перестановки. (I4b62d, b/257034719) - Перенесите
GridCells.FixedSizeв стабильную версию.FixedSizeопределяетLazyGrid, в котором каждая ячейка имеет точный размер по поперечной оси, а оставшееся пространство распределяется по поперечной оси. (I8542f) - Добавлена область действия приемника
PagerScopeдля Pager и служебная функция для вычисления смещения заданной страницы. (If2577) - Представляйте
snapPositionalThresholdпри создании поведения для броска снимка. Этот параметр позволяет задать пороговое значение для короткого прикрепления в компоненте Pager. (If8f7f) - Значение в ячейке
SnapLayoutInfoProvider.calculateSnappingOffsetBoundsзаменено на "calculateSnappingOffset". В этом новом методе мы просто запрашиваем следующий смещение, к которому нужно привязаться. Расчет границ должен выполняться на уровне реализации, поскольку он может различаться в зависимости от того, как должно происходить прилипание. (I923a4) LazyStaggeredGridAPI переведены в стабильную версию. (I633a5)- Удалить данные об устройстве "
pageCount" из аккаунтаHorizontal/VerticalPager? Его нужно указать при создании статуса. ОбновленыPagerStateиrememberPagerState, чтобы принятьpageCount. (Ieb52d, b/266965072) - Удалить данные об устройстве "
pageCount" из аккаунтаHorizontal/VerticalPager? Его нужно указать при создании статуса. ОбновленыPagerStateиrememberPagerState, чтобы принятьpageCount. (Ifa3cb, b/266965072) - Представляем
shortSnapVelocityThresholdвSnapFlingBehavior. (I7379e, b/275579012) - Добавляет
FlowRowScopeиFlowColumnScope. (I54fe2)
Исправление ошибок
- Вызовы для получения семантики текста, когда ограничения содержат
minWidthиminHeight, больше не приводят к сбоям. (Ibd072) - Исправлена регрессия, из-за которой клавиатура не показывалась для текстовых полей в диалоговых окнах, не созданных с помощью функции
Dialog. (I82551, b/262140644)
Версия 1.5.0-alpha03
19 апреля 2023 г.
Выпущены androidx.compose.foundation:foundation:1.5.0-alpha03 и androidx.compose.foundation:foundation-layout:1.5.0-alpha03. Версия 1.5.0-alpha03 содержит следующие коммиты:
В этом выпуске для Compose включен новый стек отрисовки текста. Новый стек оптимизирован для повышения производительности, поэтому вы не заметите никаких изменений.
Если вы видите изменения в отрисованном тексте, для отладки можно задать значение NewTextRendering1_5 = false, чтобы подтвердить разницу в поведении. Если вы включите эту настройку, будет выполнена повторная композиция. Если вы заметите различия в поведении, сообщите об ошибке.
Флаг отладки будет удален до выпуска 1.5 beta01.(Iada23, b/246960758)
Изменения в API
- Вставить файл "
FlowColumn/FlowRow" в тело письма. (Idab37)
Версия 1.5.0-alpha02
5 апреля 2023 г.
Выпущены androidx.compose.foundation:foundation:1.5.0-alpha02 и androidx.compose.foundation:foundation-layout:1.5.0-alpha02. Версия 1.5.0-alpha02 содержит следующие коммиты:
Изменения в API
- Добавлена поддержка ячеек фиксированного размера в
LazyGridи их расположения с помощью функции cross axis arrangement. (I83ed9, b/235121277, b/267942510) - Добавлена поддержка дорожек фиксированного размера в файлах
LazyStaggeredGridи их расположения с помощью перекрестной оси. (I7d519) UrlAnnotationвAnnotatedStringтеперь можно открывать с помощью сервисов специальных возможностей, напримерTalkBack. (If4d82, b/253292081)- Добавлено семантическое действие
InsertTextAtCursorдля текстовых полей. (I11ed5) - Теперь текстовые действия (например,
performTextInput) будут запрашивать фокус напрямую, используя семантическое действие, а не нажимая на поле. (I6ed05) - Добавлена поддержка интервалов и расположения по поперечной оси с помощью свойства
verticalArrangementвFlowRowиhorizontalArrangementвFlowColumn. Мы также удаляемverticalAlignmentиhorizontalAlignmentверхнего уровня вFlowRow/FlowColumn. Вместо него разработчики могут использоватьModifier.align. Это позволит избежать путаницы между правилами именования вverticalAlignmentиverticalArrangement. (I87b60, b/268365538)
Версия 1.5.0-alpha01
22 марта 2023 г.
Выпущены androidx.compose.foundation:foundation:1.5.0-alpha01 и androidx.compose.foundation:foundation-layout:1.5.0-alpha01. Версия 1.5.0-alpha01 содержит следующие коммиты:
Изменения в API
- Текст и
BasicTextпереработаны для использования новой системы модификаторов. Во многих случаях это позволяет значительно повысить эффективность. Никаких изменений не должно быть. (If1d17, b/246961435) - Добавлено семантическое действие
PerformImeActionдля вызова действия IME в узлах текстового редактора. (Ic606f, b/269633506)
Исправление ошибок
- Обновлены внутренние компоненты
Modifier.hoverable. Модификаторhoverableбудет показан в инспекторе, только если он включен. (I82103)
Версия 1.4
Версия 1.4.3
3 мая 2023 г.
androidx.compose.foundation:foundation:1.4.3 и androidx.compose.foundation:foundation-layout:1.4.3 выпущены без изменений (только с обновлением версии).
Версия 1.4.2
19 апреля 2023 г.
Выпущены androidx.compose.foundation:foundation:1.4.2 и androidx.compose.foundation:foundation-layout:1.4.2. Версия 1.4.2 содержит следующие коммиты:
Версия 1.4.1
5 апреля 2023 г.
Выпущены androidx.compose.foundation:foundation:1.4.1 и androidx.compose.foundation:foundation-layout:1.4.1. Версия 1.4.1 содержит следующие коммиты:
Версия 1.4.0
22 марта 2023 г.
Выпущены androidx.compose.foundation:foundation:1.4.0 и androidx.compose.foundation:foundation-layout:1.4.0. Версия 1.4.0 содержит следующие коммиты:
Важные изменения с версии 1.3.0
- Добавлена интеграция эмодзи в
TextиTextField, а также в абзац более низкого уровня. Она включена по умолчанию, если настроен параметр emojicompat. EmojiCompatможно настроить для определенного текста с помощьюPlatformParagraphStyle.- В
LazyStaggeredGrid(I28252) добавлена поддержка полного диапазона строк. - Добавление экспериментального поля
onHoverвClickableText(I6938f) - Добавлены новые экспериментальные перегрузки для функции
runComposeUiTestи функцийcreate*ComposeRule, которые принимают параметрыCoroutineContext. Контекст будет использоваться для создания теста и любых вызововLaunchedEffectиrememberCoroutineScope()в тесте. (I10614, b/265177763) FlowRowиFlowColumnтеперь доступны как@ExperimentalFoundationApi, которые позволяют более гибко размещать компоненты в строках и столбцах. Если на главной оси недостаточно места, компоненты переносятся на новую строку. (I3a7b2)Modifier.basicMarquee()– экспериментальный тег, который позволяет показывать контент с эффектом бегущей строки. (I2df44, b/139321650)
Версия 1.4.0-rc01
8 марта 2023 г.
Выпущены androidx.compose.foundation:foundation:1.4.0-rc01 и androidx.compose.foundation:foundation-layout:1.4.0-rc01. Версия 1.4.0-rc01 содержит следующие коммиты.
Изменения в API
- Добавлен новый низкоуровневый API
PlatformTextInputAdapterдля создания пользовательских реализаций ввода текста, которые напрямую взаимодействуют с API платформы. (I58df4) - Добавлена поддержка обратной раскладки для
LazyStaggeredGrid. (I3ef4a)
Исправление ошибок
- Действие
SetTextсемантикиBasicTextFieldтеперь будет обновлять текстовый буфер, используя тот же путь кода, что и обновления IME и функции тестирования (например,performTextReplacement). - Функции тестирования текста
performTextClearance,performTextReplacementиperformTextSelectionтеперь используютSemanticsActions. (I0807d, b/269633168, b/269624358)
Версия 1.4.0-beta02
22 февраля 2023 г.
Выпущены androidx.compose.foundation:foundation:1.4.0-beta02 и androidx.compose.foundation:foundation-layout:1.4.0-beta02. Версия 1.4.0-beta02 содержит следующие коммиты:
Изменения в API
- Добавлен новый обратный вызов
Modifier.Node.onReset(), позволяющий сбросить некоторые локальные состояния, чтобы правильно обрабатывать случаи, когдаLayoutиспользуется повторно (например, как элементLazyColumn). Исправлена ошибкаFocusTargetModifierNode, из-за которой не сбрасывалось состояние фокуса. (I65495, b/265201972) - В методы
DrawScope.drawText,Paragraph.paintиMultiParagraph.paintдобавлен параметрBlendMode, чтобы поддерживать разные алгоритмы смешивания при рисовании текста на Canvas. (I57508) - Удален API
modifierElementOf(). Вместо этого используйтеModifierNodeElement. (Ie6d21)
Исправление ошибок
- При перемещении маркеров выбора больше нельзя выбрать часть символа. (Idedd1)
- Исправлена ошибка, приводившая к сбою при нажатии Ctrl + Backspace в пустом поле
TextField(I0427f, b/244185537)
Версия 1.4.0-beta01
8 февраля 2023 г.
Выпущены androidx.compose.foundation:foundation:1.4.0-beta01 и androidx.compose.foundation:foundation-layout:1.4.0-beta01. Версия 1.4.0-beta01 содержит следующие коммиты:
Новые функции
- В версии 1.3 добавлена интеграция EmojiCompat с элементами
TextиTextField, а также с элементом Paragraph более низкого уровня. Она включена по умолчанию, если настроен параметр emojicompat. EmojiCompatможно настроить для определенного текста с помощьюPlatformParagraphStyle.
Изменения в API
- Добавлена общая реализация API
PinnableContainer, используемого во всехLazyLayouts, чтобы сохранять элементы, которые выходят из композиции, но должны оставаться активными. (If45a4) PinnableContainer.PinnedHandle.unpin()переименован вrelease()(I4667a)
Внешний вклад
- В
LazyListLayoutInfo,LazyGridLayoutInfoиLazyStaggeredGridItemInfoдобавлено свойствоmainAxisItemSpacing(I52fad)
Версия 1.4.0-alpha05
25 января 2023 г.
Выпущены androidx.compose.foundation:foundation:1.4.0-alpha05 и androidx.compose.foundation:foundation-layout:1.4.0-alpha05. Версия 1.4.0-alpha05 содержит следующие коммиты.
Новые функции
- В
LazyStaggeredGridдобавлена поддержка полного диапазона строк (I28252). - Добавление экспериментального параметра
onHoverвClickableText(I6938f) - Добавлены новые экспериментальные перегрузки для функции
runComposeUiTestи функцийcreate*ComposeRule, которые принимают параметрыCoroutineContext. Контекст будет использоваться для создания теста и любых вызововLaunchedEffectиrememberCoroutineScope()в тесте. (I10614, b/265177763)
Изменения в API
- Объединяет API для периодов до и после
OverscrollEffectв комбинированные функции декоратораapplyToScrollиapplyToFling. В документации приведены обновленные примеры того, как реализовать эффект прокрутки с помощью нового API. (I8a9c4, b/255554340) - Дополнительные типы и допустимость значения NULL для встроенных и устаревших скрытых функций (I24f91)
- API
LineBreakиHyphensвTextStyleперешли на стабильную версию. (Ic1e1d)
Исправление ошибок
- Курсор в текстовых полях теперь будет мигать, даже если анимация отключена. (I95e70, b/265177763)
Modifier.basicMarqueeтеперь анимируется, даже если анимация отключена в системных настройках. (I23389, b/262298306, b/265177763)
Внешний вклад
- Методы
notifyFocusedRectвTextInputSessionиTextInputServiceснова не устарели. (I23a04, b/262648050)
Версия 1.4.0-alpha04
11 января 2023 г.
Выпущены androidx.compose.foundation:foundation:1.4.0-alpha04 и androidx.compose.foundation:foundation-layout:1.4.0-alpha04. Версия 1.4.0-alpha04 содержит следующие коммиты:
Новые функции
FlowRowиFlowColumnтеперь доступны как@ExperimentalFoundationApi, которые позволяют более гибко размещать компоненты в строках и столбцах. Если на главной оси недостаточно места, компоненты переносятся на новую строку. (I3a7b2)Modifier.basicMarquee()– экспериментальный тег, который позволяет показывать контент с эффектом бегущей строки. (I2df44, b/139321650)
Изменения в API
FocusRequesterModifierустарел и заменен наFocusRequesterNode(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)- Конструктор
AndroidFontсvariationSettingsтеперь является стабильным API и может использоваться для создания новых типов дескрипторов шрифтов. (I5adcc, b/261565807) - Добавлен API
PinnableContainer, который распространяется через ленивые списки с помощью локальной композиции и позволяет закреплять текущий элемент. Это означает, что такой объект не будет удален, когда он прокручивается за пределы экрана. Например,Modifier.focusable()закрепляет текущий выделенный элемент. (Ib8881, b/259274257, b/195049010) - Изменен способ реагирования прокручиваемых элементов на
bringIntoViewRequestersи элементов, на которых можно установить фокус, чтобы лучше моделировать сложность этих операций и обрабатывать больше пограничных случаев. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - Дополнительные сведения о допустимости значения NULL для типа возвращаемого значения устаревших скрытых функций (Ibf7b0)
- Добавлен экспериментальный тег
TextMotionв тегTextStyle, чтобы определить, должен ли текст бытьStatic(default)или анимированным. ИспользуйтеTextMotion.Animated, если текст будет масштабироваться, переводиться или поворачиваться с помощью анимации. (I24dd7) - Добавлен атрибут
TextFieldFocusModifier, чтобы исправить поведение навигации по фокусу на платформе Android (I00303). - Аргумент
maxSize: IntSizeв функцииdrawTextзаменен наsize: Size, чтобы соответствовать другим функциямDrawScope. По умолчанию для параметраsizeзадано значениеSize.Unspecified, которое не должно менять поведение по умолчанию. (Icd27d)
Исправление ошибок
- Изменения в физике привязки в
SnapFlingBehaviourдля более естественного ощущения.
Известная проблема
- При обновлении с
androidx.compose.foundation:1.4.0-alpha03доandroidx.compose.foundation:1.4.0-alpha04может возникнуть ошибкаjava.lang.NoSuchFieldError. Здесь можно посмотреть, где изначально была обнаружена проблема. Исправление отправлено и будет доступно в следующем обновлении Compose. Чтобы обойти эту проблему, обновите библиотекиandroidx.compose.materialиandroidx.compose.material3до последней версии (1.1.0-alpha04) или перейдите на более раннюю версию библиотекиandroidx.compose.foundation(1.4.0-alpha03).
Версия 1.4.0-alpha03
7 декабря 2022 г.
Выпущены androidx.compose.foundation:foundation:1.4.0-alpha03 и androidx.compose.foundation:foundation-layout:1.4.0-alpha03. Версия 1.4.0-alpha03 содержит следующие коммиты:
Изменения в API
- В тестах интерфейса, использующих правило Compose, продолжения, возобновленные во время обратных вызовов
withFrameNanos, не будут отправлены, пока не будут выполнены все обратные вызовы фрейма. Это соответствует поведению при обычном создании письма. Однако тесты, которые полагаются на старое поведение, могут завершиться неудачно. Это должно повлиять только на код, который напрямую вызываетwithFrameNanosилиwithFrameMillis, и на логику вне обратного вызова, переданного этим функциям, которую, возможно, потребуется перенести внутрь обратных вызовов. Примеры изменений в тесте анимации можно найти в этом списке изменений. - В конструктор
TestMonotonicFrameClockи фабричную функцию добавили необязательный параметрonPerformTraversals: (Long) -> Unit, чтобы можно было выполнять код после обратных вызововwithFrameNanos, но до возобновления работы сопрограмм вызывающих функций. (Idb413, b/254115946, b/222093277, b/255802670) - Добавлены действия для специальных возможностей на странице:
PageUp,PageDown,PageLeft,PageRight. Обратите внимание, что они доступны только в API 29. (Ida4ab) - Представляем
HorizontalPagerиVerticalPager– способ показа композиций в стиле Pager. Добавлен классPagerStateдля управления пейджерами и получения информации об их текущем состоянии. Добавлен параметрPageSize, позволяющий управлять размером страницы в компоненте Pager. Его можно использовать для создания карусели, похожей на Pager. Добавлена функцияPagerSnapDistance, позволяющая управлять привязкой при пролистывании страниц. (I01120) - Добавлена перегрузка в
SnapFlingBehavior.performFling, чтобы помочь понять, где остановится бросок. (I569f6) - Контакт (
OverscrollEffect#isEnabled) удален. Вместо того чтобы запоминать и устанавливать этот флаг, просто не отправляйте события в эффект достижения конца прокрутки, если вы не хотите, чтобы он показывался (например, еслиScrollableState#canScrollForward/backwardвозвращает значение false). (I1a4b0, b/255554340, b/255557085) - Добавлены
ScrollableState#canScrollForwardиScrollableState#canScrollBackward, чтобы можно было узнать, есть ли уScrollableStateвозможность прокрутки в каком-либо направлении (находится ли он на минимальном или максимальном значении диапазона). По умолчанию для этого параметра задано значение true, чтобы обеспечить обратную совместимость с существующими реализациямиScrollableState. Потребители могут использовать это значение, чтобы показать пользователю, что ещё есть место для прокрутки. Кроме того, это значение можно использовать, чтобы не отправлять дельту вScrollableStates, у которых нет места для прокрутки в заданном направлении, и таким образом уменьшить ненужную работу. (Idf1a0, b/255557085) - Добавлен API модификатора для запроса информации о прокрутке предков. (I2ba9d, b/203141462)
- Используется в теге
Clickable, чтобы правильно задерживать нажатия, когда жесты могут стать событиями прокрутки. - Исправлена ошибка, из-за которой
Clickablesнеправильно задерживал пульсации при использовании внутриScrollable ViewGroup. - Внесены изменения в работу выдвижных панелей и таблиц, чтобы правильно обрабатывать нажатия, когда жесты могут быть преобразованы в события прокрутки.
- Измените название
snapStepSize, чтобы оно соответствовало другим методам вSnapLayoutInfoProvider. (Ife67c) - Добавлено
EmojiCompatвCompose(Ibf6f9, b/139326806) - Переименованы переменные
consumedWindowInsets()вconsumeWindowInsets()иwithConsumedWindowInsets()вonConsumedWindowInsetsChanged(). Модификаторы стали общедоступными. (Ie44e1)
Исправление ошибок
- Исправлена ошибка, возникающая при использовании
Modifier.animateItemPlacement()и ленивых сеток. Это происходило при определенных условиях, когда количество новых объектов было меньше предыдущего. (I0bcac, b/253195989)
Версия 1.4.0-alpha02
9 ноября 2022 г.
Выпущены androidx.compose.foundation:foundation:1.4.0-alpha02 и androidx.compose.foundation:foundation-layout:1.4.0-alpha02. Версия 1.4.0-alpha02 содержит следующие коммиты:
Изменения в API
- Атрибуты "
awaitFirstDown" и "waitForUpOrCancellation" теперь принимают значение "PointerEventPass", что делает их более гибкими. (I7579a, b/212091796) - Отменить изменения API
beyondBoundCountиз Lazy* API (I12197) - В Lazy API добавлен параметр для создания и размещения объектов за пределами области просмотра (I69e89, b/172029355).
- В
BasicTextиBasicTextFieldдобавлен параметрminLines. Она позволяет задать минимальную высоту этих объектов в строках (I24294, b/122476634).
Версия 1.4.0-alpha01
24 октября 2022 г.
Выпущены androidx.compose.foundation:foundation:1.4.0-alpha01 и androidx.compose.foundation:foundation-layout:1.4.0-alpha01. Версия 1.4.0-alpha01 содержит следующие коммиты:
Изменения в API
- Добавлен новый метод
awaitEachGesture()для детекторов жестов. Он работает так же, какforEachGesture(), но цикл по жестам выполняется полностью в рамкахAwaitPointerEventScope, поэтому события не могут быть потеряны между итерациями. forEachGesture()больше не используется, так как при его работе между жестами могут теряться события. Вместо него используетсяawaitEachGesture(). (Iffc3f, b/251260206)- Добавлены свойства
WindowInsets.imeAnimationSource иWindowInsets.imeAnimationTarget, чтобы определять ход анимации и знать, где будет IME после ее завершения. (I356f1, b/217770337)
Версия 1.3
Версия 1.3.1
9 ноября 2022 г.
Выпущены androidx.compose.foundation:foundation:1.3.1 и androidx.compose.foundation:foundation-layout:1.3.1. Версия 1.3.1 содержит следующие коммиты:
Исправление ошибок
- Исправлена проблема производительности в
BeyondBoundsLayout(aosp/2255266) ContentInViewModifierне будет считывать координаты макета, если не прикреплен (aosp/2241316)
Версия 1.3.0
24 октября 2022 г.
Выпущены androidx.compose.foundation:foundation:1.3.0 и androidx.compose.foundation:foundation-layout:1.3.0. Версия 1.3.0 содержит следующие коммиты:
Важные изменения с версии 1.2.0
- Были представлены экспериментальные версии
LazyVerticalStaggeredGridиLazyHorizontalStaggeredGrid. SnapFlingBehavior,rememberSnapFlingBehaviorи другие соответствующие API были добавлены в качестве экспериментальных.Modifier.clickable,Modifier.toggleableиModifier.selectableтеперь показывают круги на воде, если нажать на них с помощью клавиатуры или D-pad на пульте дистанционного управления.
Версия 1.3.0-rc01
5 октября 2022 г.
Выпущены androidx.compose.foundation:foundation:1.3.0-rc01 и androidx.compose.foundation:foundation-layout:1.3.0-rc01. Версия 1.3.0-rc01 содержит следующие коммиты:
Изменения в API
- Добавлено свойство
lowVelocityAnimationSpec, которое используется на этапе приближения, когда скорости броска недостаточно для затухания. (Iaeb27) - Добавлен новый экспериментальный API Hyphens для автоматической расстановки переносов в тексте (Iaa869).
Версия 1.3.0-beta03
21 сентября 2022 г.
Выпущены androidx.compose.foundation:foundation:1.3.0-beta03 и androidx.compose.foundation:foundation-layout:1.3.0-beta03. Версия 1.3.0-beta03 содержит следующие коммиты:
Изменения в API
- Добавлены параметры для настройки переноса строк в тексте. (I86907)
BringIntoViewResponderтеперь могут получать самые актуальные границы запроса во время его обработки. (If86a5, b/241591211)- Добавлена поддержка расстояний между элементами в экспериментальном свойстве
Staggered Grid(I10b82) - Добавление отступов в экспериментальную функцию
Staggered Grid(I342ea) - Аргумент
size:IntSizeзаменен наconstraints: Constraintsв методеTextMeasurer.measureдля поддержки ограничений минимальной ширины. (I37530, b/242707525) - Добавлено
Modifier.withConsumedWindowInsets(), чтобы получитьWindowInsetsдля использования внеwindowInsetsPadding. - Добавлен параметр
MutableWindowInsets, позволяющий легко изменятьWindowInsetsбез повторной композиции. (I7fd28, b/237019262, b/243119659)
Версия 1.3.0-beta02
7 сентября 2022 г.
Выпущены androidx.compose.foundation:foundation:1.3.0-beta02 и androidx.compose.foundation:foundation-layout:1.3.0-beta02. Версия 1.3.0-beta02 содержит следующие коммиты:
Изменения в API
- Первая версия экспериментальной модели
StaggeredGrid(Ia48be) - Переименованы функции
FocusDirection.InиFocusDirection.OutвFocusDirection.EnterиFocusDirection.Exit(Ia4262, b/183746982). - Добавлена перегрузка
rememberSnapFlingBehavior, которая позволяет быстро включить прикрепление вLazyLists. (Ifb48a) - Заменили фабрику
snapFlingBehaviorна конкретный классSnapFlingBehavior. Методы с областью действияSnapLayoutInfoProviderдля класса Density, чтобы упростить преобразование единиц dp в px и наоборот для пользователей API. (I54a11) - Измените
LazyLayoutMeasureScope.measure, чтобы возвращать список размещаемых объектов, подчеркнув желаемую неизменность возвращаемого значения. (I48b7c) - Представлен класс
SnapLayoutInfoProvider, который принимает объектLazyListStateдля создания экземпляраSnapLayoutInfoProvider, который можно использовать для включения привязкиFlingBehaviorдляLazyLists. (I2dd10)
Исправление ошибок
- Изменена функция
AwaitPointerEventScope#awaitLongPressOrCancellation, чтобы она соответствовала другим функциям await (I646e6)
Версия 1.3.0-beta01
24 августа 2022 г.
Выпущены androidx.compose.foundation:foundation:1.3.0-beta01 и androidx.compose.foundation:foundation-layout:1.3.0-beta01. Версия 1.3.0-beta01 содержит следующие коммиты:
Изменения в API
- Удален
pointerPositionизOverscrollEffect– эффекты, которым нужна позиция указателя, теперь могут использоватьModifier.pointerInput { }вeffectModifier, чтобы получить текущую позицию указателя. (I9f606, b/241239306) - Добавлен элемент
AwaitPointerEventScope#awaitLongPressOrCancellationдля более сложного распознавания жестов (I04374, b/181577176). - Добавлена функция
lazyListSnapLayoutInfoProvider, позволяющая прикреплять элементы в Lazy Lists. (I3ecdf) - Добавлена функция
SnapFlingBehavior, позволяющая при прокрутке списка быстро переходить к его началу или концу. Укажите экземплярSnapLayoutInfoProviderс информацией о макете прикрепления. (Ie754c)
Версия 1.3.0-alpha03
10 августа 2022 г.
Выпущены androidx.compose.foundation:foundation:1.3.0-alpha03 и androidx.compose.foundation:foundation-layout:1.3.0-alpha03. Версия 1.3.0-alpha03 содержит следующие коммиты:
Изменения в API
- Шрифты ресурсов теперь поддерживают настройку параметров вариаций шрифтов (API 26 и выше). (I900dd, b/143703328)
- Поддержка вариативных шрифтов в
DeviceFontFamilyNameFont(Ic1279, b/143703328) - Удалены экспериментальные аннотации из
PlatformTextStyleиLineHeightStyle. (I64bef) - Теперь текстовые поля будут выдавать более подробные исключения, когда
OffsetMapping, предоставленныйVisualTransformation, возвращает недействительные индексы. (Ie73f9, b/229378536) - Добавлены экспериментальные API для обмена логикой поставщика элементов между макетами Lazy. (Ic891c)
ScrollableDefaults.reverseDirection()больше не экспериментальная функция. (Iba646)- Прекращена поддержка
SemanticsModifier.id, а идентификатор семантики перемещен вLayoutInfo.semanticsId. (Iac808, b/203559524) checkScrollableContainerConstraints()больше не является экспериментальной функцией. (I2c290)Modifier.clipScrollableContainer()больше не экспериментальная функция. (Ia2b44)- Прекращена поддержка функции
TextInputService.show|hideSoftwareKeyboard. Вместо него используйтеSoftwareKeyboardControllerв коде приложения иTextInputSessionв коде управления IME. (I14e4c, b/183448615)
Версия 1.3.0-alpha02
27 июля 2022 г.
Выпущены androidx.compose.foundation:foundation:1.3.0-alpha02 и androidx.compose.foundation:foundation-layout:1.3.0-alpha02. Версия 1.3.0-alpha02 содержит следующие коммиты:
Изменения в API
- Добавлена функция расширения
drawTextдляDrawScope, позволяющая рисовать текст с разными стилями на компонуемых элементах и модификаторах, которые работают сDrawScope, напримерCanvasиdrawBehind. (I16a62, b/190787898)
Исправление ошибок
- Теперь экранная клавиатура будет скрываться, когда текстовое поле, на котором установлен фокус, отключено. (I6e3e4, b/237308379)
- При добавлении событий
InputEventChangeв Velocity Tracker теперь будут учитываться не позиции, а дельты. Это позволит правильно рассчитывать скорость во всех случаях, даже если целевой элемент перемещается (Icea9d, b/216582726, b/223440806, b/227709803). - Теперь при уменьшении размера прокручиваемого элемента, даже если это происходит с помощью анимации, он будет правильно прокручиваться, чтобы дочерний элемент, находящийся в фокусе, оставался в поле зрения. (I80867, b/230756508, b/220119990)
- Исправлена ошибка, из-за которой происходил сбой, когда поле
TextFieldочищалось и заполнялось заново, пока был активен выбор. (I1235b, b/208655565, b/214253689)
Версия 1.3.0-alpha01
29 июня 2022 г.
Выпущены androidx.compose.foundation:foundation:1.3.0-alpha01 и androidx.compose.foundation:foundation-layout:1.3.0-alpha01. Версия 1.3.0-alpha01 содержит следующие коммиты:
Изменения в API
- Добавлен тип аннотации
UrlAnnotationи связанные с ним методы для поддержки ссылокTalkBackвAnnotatedString. (I1c754, b/231495122)
Исправление ошибок
BasicTextFieldcursorBrushтеперь может быть анимирован без перезапуска таймера указателя. (I812e6, b/236383522)
Версия 1.2
Версия 1.2.1
10 августа 2022 г.
Выпущены androidx.compose.foundation:foundation:1.2.1 и androidx.compose.foundation:foundation-layout:1.2.1. Версия 1.2.1 содержит следующие коммиты:
Версия 1.2.0
27 июля 2022 г.
Выпущены androidx.compose.foundation:foundation:1.2.0 и androidx.compose.foundation:foundation-layout:1.2.0. Версия 1.2.0 содержит следующие коммиты:
Важные изменения с версии 1.1.0
LazyVerticalGridиLazyHorizontalGridтеперь стабильны.- Теперь вы можете указывать тип контента для элементов в списках и сетках с ленивой загрузкой. Это позволит компонентам более эффективно использовать элементы.
- В ленивых списках и сетках теперь есть параметр
userScrollEnabled, который позволяет отключить прокрутку с помощью жестов пользователя. - Добавлен новый экспериментальный API
LazyLayout. Это API, который мы используем для создания ленивых списков и сеток. OverscrollEffectAPI представлен в экспериментальном режиме. Вы можете задать собственные эффекты достижения конца прокрутки, а также добавить стандартный эффект платформы в контейнеры с возможностью прокрутки.- Представлены API для взаимодействия вложенной прокрутки, которые позволяют взаимодействовать между представлениями и создавать акторов прокрутки.
- Прокрутка с помощью мыши и сенсорной панели добавлена во все контейнеры с прокруткой.
Версия 1.2.0-rc03
29 июня 2022 г.
Выпущены androidx.compose.foundation:foundation:1.2.0-rc03 и androidx.compose.foundation:foundation-layout:1.2.0-rc03. Версия 1.2.0-rc03 содержит следующие коммиты:
- Изменений по сравнению с версией 1.2.0-rc02 нет.
Версия 1.2.0-rc02
22 июня 2022 г.
Выпущены androidx.compose.foundation:foundation:1.2.0-rc02 и androidx.compose.foundation:foundation-layout:1.2.0-rc02. Версия 1.2.0-rc02 содержит следующие коммиты:
Версия 1.2.0-rc01
15 июня 2022 г.
Выпущены androidx.compose.foundation:foundation:1.2.0-rc01 и androidx.compose.foundation:foundation-layout:1.2.0-rc01. Версия 1.2.0-rc01 содержит следующие коммиты:
Изменения в API
- В экспериментальном режиме доступен
OverscrollEffect, позволяющий создавать собственные эффекты прокрутки, а также перегрузкиModifier.scrollable, которые его принимают. - Экспериментальный пакет
LocalOverScrollConfigurationбыл перенесен изfoundation.gestureв основной пакет и переименован вLocalOverscrollConfiguration(If19fb, b/204650733). - Интерфейсы в библиотеках Compose теперь создаются с помощью методов интерфейса по умолчанию из JDK8 (I5bcf1).
- Добавлен экспериментальный API
checkScrollableContainerConstraints(), который позволяет проверять, не вложены ли контейнеры с возможностью прокрутки друг в друга. Его можно использовать при создании собственных макетов с отложенной загрузкой и прокруткой с помощьюLazyLayout. (Id6fab, b/233352497) - Удален устаревший элемент
LazyVerticalGridиз пакетаandroidx.compose.foundation.lazy. Новый стабильный API находится вandroidx.compose.foundation.lazy.grid(I73c76, b/225192009).
Версия 1.2.0-beta03
1 июня 2022 г.
Выпущены androidx.compose.foundation:foundation:1.2.0-beta03 и androidx.compose.foundation:foundation-layout:1.2.0-beta03. Версия 1.2.0-beta03 содержит следующие коммиты:
Изменения в API
- Добавлены новые экспериментальные поля
IntervalListиMutableIntervalList. Он позволяет представлять список значений в виде нескольких интервалов. Это полезно, когда вы хотите определить собственный язык DSL, похожий на тот, который используется вLazyColumn, где элементы списка можно определить с помощью нескольких вызовов item/items. (I2d05e, b/228580728)
Исправление ошибок
- В документации для
WindowInsets.imeуточнено, что вставкиimeрегистрируются начиная с API 23, но анимированные – только в API 30 и более поздних версий. (Ia7fc0, b/230756508) - При нажатии клавиши удаления вперед, когда курсор находится в конце текстового поля, больше не будет происходить сбой.
- Аргументы конструктора
DeleteSurroundingTextCommandиDeleteSurroundingTextInCodePointsCommandтеперь должны быть неотрицательными. (Ica8e6, b/199919707)
Версия 1.2.0-beta02
18 мая 2022 г.
Выпущены androidx.compose.foundation:foundation:1.2.0-beta02 и androidx.compose.foundation:foundation-layout:1.2.0-beta02. Версия 1.2.0-beta02 содержит следующие коммиты:
- Разрешение скачиваемого шрифта, которое не меняет размер макета текста или
TextField, ранее не перерисовывалось, что приводило к устаревшему отображению шрифта. Исправлена ошибка, из-за которой макет текста не всегда вызывал перерисовку (b/229727404). (I1d49e, b/229727404)
Версия 1.2.0-beta01
11 мая 2022 г.
Выпущены androidx.compose.foundation:foundation:1.2.0-beta01 и androidx.compose.foundation:foundation-layout:1.2.0-beta01. Версия 1.2.0-beta01 содержит следующие коммиты:
Новые функции
- Это первая бета-версия 1.2.
Изменения в API
- Добавлена экспериментальная функция
BeyondBoundsInterval, которую можно использовать в пользовательских реализацияхLazyListпри размещении элементов за пределами видимой области (Ifabfb, b/184670295). LineHeightBehaviorпереименован вLineHeightStyle.LineVerticalAlignmentпереименован вLineHeightStyle.Alignment.- Блокнот "
LineHeightTrim" переименован. Новое название: "LineHeightStyle.Trim". - Удалены значения конструктора по умолчанию из
LineHeightStyle(I582bf, b/181155707). - Добавлены значения по умолчанию для необязательных элементов интерфейса
LazyLayoutItemProvider. (Iba8a0) - В
LazyLayoutItemProviderAPI вместо фабрики, возвращающей composable-лямбда по индексу, теперь используется более простая composable-функция Item, принимающая индекс. (Id2196) - LazyLayoutItemsProvider переименован в LazyLayoutItemProvider (I0638c)
LazyLayoutItemsProvider.itemsCountпереименован вitemCount(Id409c).- В инструменты
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)Добавлен экспериментальный модификатор
imeNestedScroll(), позволяющий разработчикам управлять IME с помощью прокрутки. (I60759)
Исправление ошибок
- Исправлена ошибка, из-за которой текстовые поля не скрывали клавиатуру при удалении из композиции, когда на них был установлен фокус. (I7a410, b/230536793, b/225541817)
- Поддержка многоточия, когда высота ограничена и не позволяет отобразить все строки текста (Ie528c, b/168720622)
BringIntoViewRequester.bringIntoViewтеперь всегда будет приостанавливаться, пока запрос не будет выполнен или не будет прерван более новым запросом, который не перекрывает его. Перекрывающиеся запросы будут поставлены в очередь. (I43e7f, b/216790855)- Теперь при одновременных вызовах
BringIntoViewRequester.bringIntoViewдля прямоугольников, которые полностью перекрывают друг друга, будет обрабатываться только запрос для большего прямоугольника. (I34be7, b/216790855, b/184760918) - Включено по умолчанию
includeFontPadding. Вы можете отключитьincludeFontPaddingс помощью атрибутаTextStyle.platformTextStyle. В ближайшем будущем мы изменим поведение по умолчанию, но пока это позволит нам лучше интегрировать улучшения высоты строки (aosp/2058653) и решить проблемы с обрезкойTextField. (I01423, b/171394808) Modifier.bringIntoViewRequesterбольше не используетonGloballyPositioned. (I630f5)
Внешний вклад
MouseInjectionScope.scroll(delta = someDelta)теперь инвертируется на Android при вертикальной прокрутке (если someDelta положительное, прокрутка будет вниз) (Ifb697, b/224992993)
Версия 1.2.0-alpha08
20 апреля 2022 г.
Выпущены androidx.compose.foundation:foundation:1.2.0-alpha08 и androidx.compose.foundation:foundation-layout:1.2.0-alpha08. Версия 1.2.0-alpha08 содержит следующие коммиты:
Изменения в API
- При использовании
FontFamily.SansSerifна устройствах Android будут показываться все доступные варианты толщины системных шрифтов. В API 21–28 будут использоваться названия шрифтов по умолчанию, например sans-serif-medium. Это изменение поведения, поскольку ранее в API 21–28 поддерживались только веса 400 и 700. (I380fe, b/156048036, b/226441992) - Теперь параметры Paragraph и MultiParagraph принимают параметр Constraints. Передача значения
Constraints.maxHeightв данный момент не имеет эффекта, но в будущем позволит выполнять некоторые вычисления, например обрезать текст на основе высоты. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()теперь принимает специальный класс, похожий на MutableSet, который не позволяет добавлять в него новые элементы. (Icd314)- Частичное использование (переход вниз или к определенной позиции) больше не поддерживается в
PointerInputChange. Чтобы полностью применить изменение, используйтеconsume(). С помощьюisConsumedможно определить, использовал ли кто-то ранее это изменение. PointerInputChange::copy()теперь всегда создает поверхностную копию. Это значит, что копииPointerInputChangeбудут использованы, как только будет использована одна из копий. Если вы хотите создать несвязанный объектPointerInputChange, используйте конструктор. (Ie6be4, b/225669674)- Добавлен новый экспериментальный
LazyLayoutAPI. Это позволяет создавать собственные компоненты, напримерLazyColumnизLazyVerticalGrid. Обратите внимание, что API находится на ранней стадии разработки и может быть изменен в будущих выпусках. (Iba2bc, b/166591700) - Теперь
AndroidFontпринимаетtypefaceLoaderв качестве параметра конструктора. (I2c971) WindowInsetsтеперь показывает видимость (находятся ли они на экране, независимо от того, пересекаются ли с окном) и размер, который они могут иметь, если доступны на устройстве, но в данный момент неактивны. (I65182, b/217770337)
Версия 1.2.0-alpha07
6 апреля 2022 г.
Выпущены androidx.compose.foundation:foundation:1.2.0-alpha07 и androidx.compose.foundation:foundation-layout:1.2.0-alpha07. Версия 1.2.0-alpha07 содержит следующие коммиты:
Изменения в API
- Добавлен API
PinnableParent, который позволяет дочерним элементам ленивой разметки предотвращать удаление текущих скомпонованных элементов (Ibbdd0, b/184670295). - В объектах
LazyListLayoutInfoиLazyGridLayoutInfoтеперь есть поляbeforeContentPaddingиafterContentPadding(I3b628, b/200920410) - Добавлен параметр
KeyboardType.Decimalв качестве альтернативы параметруKeyboard.Numberдля включения десятичного разделителя в IME. (Iec4c8, b/209835363) - Добавьте новый дескриптор шрифта Font(DeviceFontFamilyName), чтобы при использовании цепочек резервных шрифтов можно было искать установленные в системе шрифты. (I30468, b/219754572)
PointerEventType.ScrollиPointerEvent.scrollDeltaтеперь стабильные API (I574c5, b/225669674)- Добавлена временная конфигурация совместимости для
includeFontPaddingвTextStyle/ParagraphStyle. includeFontPadding, которую можно изменить с помощьюTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). Это временный параметр конфигурации, который будет удален после переноса. (If47be, b/171394808) - Обновление
FontFamily.Resolverдля интеграции системной настройки специальных возможностей "Полужирный шрифт" (I6c1e7) - Свойство расширения
consumeWindowInsetsэлементаComposeViewпозволяет разработчикам отключить использование Android WindowInsets. Это позволяет разным элементамComposeViewsв иерархии применятьWindowInsetsнезависимо друг от друга. (I0ef08, b/220943142)
Версия 1.2.0-alpha06
23 марта 2022 г.
Выпущены androidx.compose.foundation:foundation:1.2.0-alpha06 и androidx.compose.foundation:foundation-layout:1.2.0-alpha06. Версия 1.2.0-alpha06 содержит следующие коммиты:
Изменения в API
- Добавлено семантическое действие
RequestFocus, чтобы запрос был сосредоточен на цели, на которую можно перевести фокус. (I17b71) FocusOrderтеперь объединено сFocusProperties, аfocusProperties()обладает всеми возможностямиfocusOrder(). ПоддержкаFocusOrderиfocusOrder()прекращена. ФункциюfocusOrder(), которая принимает параметрfocusRequester, следует заменить модификаторомfocusRequester()в сочетании с функциейfocusProperties(). Это позволяет модификаторам лучше разделять задачи. (I601b7)WindowInsets.asPaddingValues(Density)был добавлен, чтобы разработчики могли выполнять преобразование, не находясь в режиме создания. (I94c35)- Обновлен синтаксический анализ векторных изображений для поддержки автоматического зеркального отображения контента элемента
VectorPainter, если текущее направление макета – справа налево. (I79cd9, b/185760237)
Исправление ошибок
- Модификаторы прокрутки (
Modifier.verticalScroll(),Modifier.horizontalScroll()иModifier.scrollable()) теперь будут прокручивать контент так, чтобы сфокусированный компонент оставался видимым, если область прокрутки была изменена и сфокусированный компонент был виден ранее. - Теперь при выборе текстового поля и появлении клавиатуры оно будет оставаться над ней, если находится в прокручиваемом контейнере без ленивой загрузки и для режима мягкого ввода задано значение
ADJUST_RESIZE. (I4a485, b/190539358, b/192043120, b/216842427)
Версия 1.2.0-alpha05
9 марта 2022 г.
Выпущены androidx.compose.foundation:foundation:1.2.0-alpha05 и androidx.compose.foundation:foundation-layout:1.2.0-alpha05. Версия 1.2.0-alpha05 содержит следующие коммиты:
Изменения в API
LazyVerticalGridиLazyHorizontalGridтеперь стабильны. (I307c0)- Параметр
LazyGridItemInfo.Unknownбыл заменен отдельными параметрамиLazyGridItemInfo.UnknownRowиLazyGridItemInfo.UnknownColumn(I56d51). LazyVerticalGrid/LazyHorizontalGridи все связанные API были перенесены в подпакет.grid. Измените настройки импорта сandroidx.compose.foundation.lazyнаandroidx.compose.foundation.lazy.grid. (I2d446, b/219942574)- Текст:
includeFontPaddingтеперь отключен по умолчанию. Проблемы с обрезкой, возникающие из-заincludeFontPadding=false, устранены, и теперь высокие скрипты не должны обрезаться. (I31c84, b/171394808) - Теперь в измеренном интерфейсе есть свойство parentData (I3313f)
- Добавлен экспериментальный параметр
Modifier.onFocusedBoundsChanged, позволяющий отслеживать границы дочерних элементов, на которые можно переходить с помощью клавиши Tab. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - Добавлен LazyHorizontalGrid. (I61ae7, b/191238807)
- Добавлен новый API
LazyVerticalGridдля определения размеров по поперечной оси (I17723). - Добавлен модификатор FocusGroup (I64bc0, b/213508274, b/184670295)
Исправление ошибок
WindowInsets.toString()теперь будет показывать правильные значения. (I1585d)
Внешний вклад
- Обновлено до Kotlinx coroutines 1.6.0 (I3366d)
Версия 1.2.0-alpha04
23 февраля 2022 г.
Выпущены androidx.compose.foundation:foundation:1.2.0-alpha04 и androidx.compose.foundation:foundation-layout:1.2.0-alpha04. Версия 1.2.0-alpha04 содержит следующие коммиты:
Изменения в API
BringIntoViewRespondersбольше не нужно вручную передавать запросы родительским ответчикам. Вместо этого они должны сразу возвращать прямоугольник, который родительский ответчик должен показать. (I8e66a)- Поддержка асинхронной загрузки шрифтов в Text (I77057, b/214587005)
LazyVerticalGridтеперь поддерживаетline breakingперед элементами с интервалом, не помещающимся в текущей строке. (I05c40, b/207462103)- Переименовано
excludeFromSystemGesturesвsystemGesturesExclusion(I19526) LazyVerticalGridтеперь поддерживает reverseLayout. (I6d7d7, b/215572963, b/211753558)- Добавлен метод
WindowInsets.only(), позволяющий разработчикам включать только размеры из WindowInsets. (I14c94, b/217768486) Добавлены функции
ComposableTarget,ComposableTargetMarkerиComposableOpenTarget, которые позволяют во время компиляции сообщать о том, что composable-функция вызывается с применением к объекту, для которого она не предназначена.В большинстве случаев аннотации можно получить с помощью плагина компилятора Compose, поэтому использовать их напрямую нужно редко . К случаям, когда вывод невозможен, относятся создание и использование специального прикладного модуля, абстрактные функции composable (например, методы интерфейса), поля или глобальные переменные, которые являются composable-лямбдами (локальные переменные и параметры выводятся), или использование
ComposeNodeили связанных функций composable.Для пользовательских функций, вызывающих
ComposeNodeилиReusableComposeNode, необходимо добавить аннотациюCompoableTargetдля функции и всех типов параметров компонуемой лямбда-функции. Однако мы рекомендуем создать аннотацию, которая будет отмечена символомComposableTargetMarker, а затем использовать эту аннотацию вместо символаComposableTarget. Составная composable-функция, отмеченная символомComposableTargetMarker, эквивалентна аннотацииComposbleTargetс полным именем класса атрибута в качестве параметра applier. Пример использования свойстваComposableTargetMarkerприведен в описании типаanroidx.compose.ui.UiComposable. (I38f11)
Исправление ошибок
- Теперь в
LazyGridState.scrollToItem()иLazyGridState.animateScrollToItem()можно передавать отрицательные смещения прокрутки. (I025c6, b/211753558) - Поддержка асинхронной загрузки шрифтов для TextField. (Icc4bf, b/214587005)
Версия 1.2.0-alpha03
9 февраля 2022 г.
Выпущены androidx.compose.foundation:foundation:1.2.0-alpha03 и androidx.compose.foundation:foundation-layout:1.2.0-alpha03. Версия 1.2.0-alpha03 содержит следующие коммиты:
Изменения в API
- Методы
notifyFocusedRectвTextInputSessionиTextInputServiceтеперь устарели и не будут вызываться. Используйте вместо негоBringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874) - Для объектов ленивых сеток с Modifier.animateItemPlacement() были включены анимации. (Ib6621, b/211753218)
BringIntoViewRequesterтеперь передает запросы в размещенное представление Android. (Ia7a51)FontFamilyResolverтеперь доступен вLocalFontFamilyResolver.current.- Добавлены
createFontFamilyResolver(context)иcreateFontFamilyResolver(context, coroutineScope)для создания новых преобразователей FontFamily вне использования Compose. - Теперь в Paragraph и MultiParagraph можно использовать
FontFamily.Resolver TextLayoutResult.layoutInput.fontFamilyResolverтеперь содержит преобразователь, используемый для этого макета.TextLayoutResult.layoutInput.resourceLoaderбольше не используется и поэтому устарел. (Id5a45, b/174162090)
- Добавлены
- Добавлен
AndroidFont– новый низкоуровневый API для предоставления новых типов дескрипторов ресурсов шрифтов в Android. Например, загрузка шрифтов из серверной части приложения, поиск предустановленных шрифтов на устройстве или загрузка шрифта из ресурса, не предоставленного текущими фабриками шрифтов.- Расширен API
Font.ResourceLoaded, чтобы поддерживать необязательную и асинхронную загрузку шрифтов. Разработчикам приложений не рекомендуется использовать этот API напрямую. Чтобы добавить новые типы шрифтов, ознакомьтесь с информацией о классе AndroidFont. - Функция расширения
Font.AndroidResourceLoaderпозволяет создаватьFont.ResourceLoaderвне композиции. - Добавлен параметр
loadingStrategyдля шрифтов на основе ресурсов, чтобы разрешить асинхронную загрузку, когда шрифт ресурса ссылается на XML-файл скачиваемых шрифтов. (Ie5aea, b/174162090)
- Расширен API
- Конструктор
Typeface(FontFamily)устарел. Раньше этот тег использовался для предварительной загрузки шрифтов, которая могла занимать до 10 секунд. При использовании скачиваемых шрифтов этот вызов может блокироваться на 10 секунд. Вместо этого используйтеFontFamilyResolver.preload.fontResource(FontFamily): Typefaceбольше не поддерживается. Раньше этот тег использовался для предварительной загрузки шрифтов, которая могла занимать до 10 секунд. Вместо этого используйтеFontFamilyResolver.preload(If8e7c, b/174162090)
- Теперь вы можете указывать тип контента для объектов функций
LazyVerticalGrid– item/items.LazyGridScopeтеперь принимает такой параметр. Эта информация помогает логике повторного использования контента работать эффективнее и использовать контент только между объектами одного типа. (I7b355, b/215372836) - У свойств
LazyListLayoutInfoиLazyGridLayoutInfoпоявились новые свойства:viewportSize,orientation,reverseLayout(Ifc8ed, b/200920410). - Теперь вы можете указать тип контента для элементов LazyColumn/LazyRow. Функции item/items в LazyListScope теперь принимают такой параметр. Эта информация помогает логике повторного использования контента работать эффективнее и использовать контент только между объектами одного типа. (I26506)
- Конструктор
SubcomposeLayoutState, принимающийmaxSlotsToRetainForReuse, больше не поддерживается. Вместо него используется новый конструктор, принимающийSubcomposeSlotReusePolicy– новый интерфейс, позволяющий более точно контролировать, какие слоты следует сохранить для дальнейшего использования. (I52c4d) - Добавлены модификаторы для WindowInsets, как для отступов, так и для размеров. Это позволяет некоторым элементам контента выходить за пределы области вставки, но при этом основной контент остается в ней. Например, с помощью windowInsetsPadding можно добавить отступы вокруг контента, чтобы избежать областей, которые могут быть полностью или частично закрыты. (Id0395, b/213942085)
Исправление ошибок
- Теперь при выборе текстового поля и показе клавиатуры оно будет оставаться над клавиатурой, если для режима мягкого ввода задано значение
ADJUST_PAN. (I8eaeb, b/190539358, b/192043120) - В версии для компьютеров используется локальная композиция для
FontFamily.Resolver- Поддержка функции "Рабочий стол
FontLoader" прекращена - Новая фабрика
createFontFamilyResolverна компьютере (I6bbbb, b/174162090)
- Поддержка функции "Рабочий стол
- При переключении фокуса между текстовыми полями больше не мерцает тип ввода с экранной клавиатуры. (I1bf50, b/187746439)
- В текстовых полях больше не нужно нажимать кнопку "Назад" дважды, когда отображается маркер курсора. (Ideb4b, b/205726883)
- Поведение лупы при выделении текста было улучшено, чтобы соответствовать поведению лупы платформы. (Idd918, b/206833278)
Версия 1.2.0-alpha02
26 января 2022 г.
Выпущены androidx.compose.foundation:foundation:1.2.0-alpha02 и androidx.compose.foundation:foundation-layout:1.2.0-alpha02. Версия 1.2.0-alpha02 содержит следующие коммиты:
Изменения в API
- Добавлен метод
NonRestartableComposableдля перегрузки существующих методов без сложной логики. Это уменьшает количество проверок мемоизации, сгенерированных компилятором (equals), для всех параметров, которые повторяются во внутренней вызываемой функции. (I90490) - Добавлены модификаторы
excludeFromSystemGestureдля быстрого доступа кsetSystemGestureExclusionRectsAndroid (I46f07)
Исправление ошибок
- Поведение лупы при выделении текста было улучшено, чтобы соответствовать поведению лупы платформы. (Idd918, b/206833278)
LazyColumn,LazyRow,Modifier.verticalScrollи другие контейнеры, в которых используетсяModifier.scrollable, теперь поддерживают прокрутку колесиком мыши. (I2b5e1, b/198214718)
Версия 1.2.0-alpha01
12 января 2022 г.
Выпущены androidx.compose.foundation:foundation:1.2.0-alpha01 и androidx.compose.foundation:foundation-layout:1.2.0-alpha01. Версия 1.2.0-alpha01 содержит следующие коммиты:
Изменения в API
- В
LazyColumn,LazyRowиLazyVerticalGridдобавлен новый параметрuserScrollEnabled, позволяющий пользователям временно или навсегда отключить прокрутку, инициированную пользователем с помощью сенсорных жестов или специальных возможностей. Программная прокрутка с помощью методов, доступных в состоянии, по-прежнему будет разрешена. (I7eae9, b/201150093) - Добавьте обратный вызов
onSizeChangedв модификатор лупы. (I6879f) - Виджет лупы теперь показывается при перетаскивании маркеров выделения в
SelectionContainer. (I30b38, b/139320979)
Исправление ошибок
- Исправлена ошибка, из-за которой
TextFieldне скрывался при прокрутке за пределы экрана. (I14552, b/208883748)
Обновления зависимостей
- Теперь зависит от Kotlin
1.6.10.
Версия 1.1
Версия 1.1.1
23 февраля 2022 г.
Выпущены androidx.compose.foundation:foundation:1.1.1 и androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.1.0 и androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.1.0-rc03 и androidx.compose.foundation:foundation-layout:1.1.0-rc03. Версия 1.1.0-rc03 содержит следующие коммиты:
Исправление ошибок
- Обновлена поддержка Compose Material 1.1.0-rc03
Версия 1.1.0-rc01
15 декабря 2021 г.
Выпущены androidx.compose.foundation:foundation:1.1.0-rc01 и androidx.compose.foundation:foundation-layout:1.1.0-rc01. Версия 1.1.0-rc01 содержит следующие коммиты:
Исправление ошибок
- Теперь в
LazyListState.scrollToItem()иLazyListState.animateScrollToItem()можно передавать отрицательные смещения прокрутки. (Iceb90, b/184252837) - Исправлена ошибка, из-за которой отсутствовали действия прокрутки для специальных возможностей (I7cbfb).
Версия 1.1.0-beta04
1 декабря 2021 г.
Выпущены androidx.compose.foundation:foundation:1.1.0-beta04 и androidx.compose.foundation:foundation-layout:1.1.0-beta04. Версия 1.1.0-beta04 содержит следующие коммиты:
Новые функции
- Обновлено для совместимости с Kotlin
1.6.0
Изменения в API
- Удалены значения NULL в
androidx.core.view(I7078a, b/204917439) - Добавлены экспериментальные API, которые позволяют использовать PointerInputchange целиком или проверять, был ли он использован. (I2e59d)
- Показывать виджет лупы при перетаскивании курсора или маркеров выделения в текстовых полях. (I5391e, b/203781358)
Исправление ошибок
- Исправлена ошибка, из-за которой маркеры текста не перемещались при изменении видимости IME. (I25f2e)
Версия 1.1.0-beta03
17 ноября 2021 г.
Выпущены androidx.compose.foundation:foundation:1.1.0-beta03 и androidx.compose.foundation:foundation-layout:1.1.0-beta03. Версия 1.1.0-beta03 содержит следующие коммиты:
Изменения в API
- В LazyVerticalGrid добавлена поддержка горизонтальных диапазонов. (I7e2fa, b/176758183)
Добавлена экспериментальная возможность анимировать позиции элементов в списках Lazy. В LazyItemScope появился новый модификатор
Modifier.animateItemPlacement(). Пример использования:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }- Если вы укажете ключ с помощью
LazyListScope.itemилиLazyListScope.items, этот модификатор включит анимацию изменения порядка элементов. Помимо изменения порядка элементов, анимация будет применяться и к другим изменениям положения, вызванным такими событиями, как изменение расположения или выравнивания. (I59e7b, b/150812265)
- Если вы укажете ключ с помощью
Версия 1.1.0-beta02
3 ноября 2021 г.
Выпущены androidx.compose.foundation:foundation:1.1.0-beta02 и androidx.compose.foundation:foundation-layout:1.1.0-beta02. Версия 1.1.0-beta02 содержит следующие коммиты.
Исправление ошибок
- Теперь задержка будет применяться только к пульсациям и другим индикаторам, которые находятся в контейнере
Modifier.scrollable(), а не ко всем событиям, связанным с нажатием. (Ibefe0, b/203141462) - Добавлен экспериментальный API BringIntoView, который позволяет отправлять родителям запросы на прокрутку экрана, чтобы показать определенный элемент (Ib918d, b/195353459).
Внешний вклад
- Добавлено
Modifier.pointerHoverIcon(I95f01)
Версия 1.1.0-beta01
27 октября 2021 г.
Выпущены androidx.compose.foundation:foundation:1.1.0-beta01 и androidx.compose.foundation:foundation-layout:1.1.0-beta01. Версия 1.1.0-beta01 содержит следующие коммиты:
Исправление ошибок
- Добавлен экспериментальный API BringIntoView, который позволяет отправлять родителям запросы на прокрутку экрана, чтобы показать определенный элемент (Ib918d, b/195353459).
Версия 1.1.0-alpha06
13 октября 2021 г.
Выпущены androidx.compose.foundation:foundation:1.1.0-alpha06 и androidx.compose.foundation:foundation-layout:1.1.0-alpha06. Версия 1.1.0-alpha06 содержит следующие коммиты:
Изменения в API
- Добавлена перегрузка макета без дочерних элементов с повышенной эффективностью (Ib0d9a).
SemanticsNodeInteraction.performSemanticsActionтеперь возвращаетSemanticsNodeInteraction, для которого была вызвана функция. (I9e5db)- Добавлен элемент
performScrollToNode(matcher: SemanticsMatcher), который прокручивает контейнер с возможностью прокрутки до контента, соответствующего заданному сопоставителю. (Ic1cb8)
Версия 1.1.0-alpha05
29 сентября 2021 г.
Выпущены androidx.compose.foundation:foundation:1.1.0-alpha05 и androidx.compose.foundation:foundation-layout:1.1.0-alpha05. Версия 1.1.0-alpha05 содержит следующие коммиты:
Изменения в API
- Добавлены экспериментальные указатели истории в PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
Исправление ошибок
- Исправлена поддержка специальных возможностей для прокручиваемых элементов (как с ленивой, так и с обычной загрузкой) при прокрутке (I6cdb0).
Версия 1.1.0-alpha04
15 сентября 2021 г.
Выпущены androidx.compose.foundation:foundation:1.1.0-alpha04 и androidx.compose.foundation:foundation-layout:1.1.0-alpha04. Версия 1.1.0-alpha04 содержит следующие коммиты:
Изменения в API
- Удалены устаревшие функции
performGestureиGestureScope, которые были заменены функциямиperformTouchInputиTouchInjectionScope. (Ia5f3f, b/190493367) - В
touchBoundsInRootдобавленоSemanticsNode, в котором указан минимальный размер области прикосновения. Это поможет разработчикам убедиться, что области прикосновения соответствуют минимальным требованиям к доступности. (I2e14b, b/197751214)
Исправление ошибок
- На устройствах с Android 12 добавлена поддержка эффекта достижения конца прокрутки при растягивании. (Iccf3c, b/171682480)
Версия 1.1.0-alpha03
1 сентября 2021 г.
Выпущены androidx.compose.foundation:foundation:1.1.0-alpha03 и androidx.compose.foundation:foundation-layout:1.1.0-alpha03. Версия 1.1.0-alpha03 содержит следующие коммиты.
Новые функции
- Обновлена зависимость Compose
1.1.0-alpha03от Kotlin1.5.30. (I74545)
Изменения в API
- Добавлен эффект свечения при прокрутке. Добавлен новый экспериментальный API OverScrollConfiguration, позволяющий настраивать визуальный эффект прокрутки за пределы экрана. Чтобы отключить эффект достижения конца прокрутки, укажите значение null. (I0c304, b/171682480)
- В AwaitPointerEventScope теперь есть функции withTimeout() и withTimeoutOrNull() (I507f0, b/179239764, b/182397793).
- Добавлен тестовый метод для получения обрезанных границ. (I6b28e)
- Добавлен минимальный размер области прикосновения в ViewConfiguration для использования в семантике и вводе с помощью указателя, чтобы обеспечить доступность. (Ie861c)
Версия 1.1.0-alpha02
18 августа 2021 г.
Выпущены androidx.compose.foundation:foundation:1.1.0-alpha02 и androidx.compose.foundation:foundation-layout:1.1.0-alpha02. Версия 1.1.0-alpha02 содержит следующие коммиты:
Изменения в API
- Добавлены версии DpSize для
Modifier.sizeиrequiredSize(I3fc7e, b/194219828)
Версия 1.1.0-alpha01
4 августа 2021 г.
Выпущены androidx.compose.foundation:foundation:1.1.0-alpha01 и androidx.compose.foundation:foundation-layout:1.1.0-alpha01. Версия 1.1.0-alpha01 содержит следующие коммиты:
Изменения в API
- Обновленный метод
DrawScope#drawImage, который использует исходные и целевые прямоугольники, чтобы использовать необязательный параметр FilterQuality. Это полезно для пиксельной графики, которая должна быть пикселизированной при масштабировании. Обновлены BitmapPainter и Image composable: теперь они также используют необязательный параметр FilterQuality (Ie4fb0, b/180311607). - Теперь при нажатии кнопки "Назад" в TextField выделение снимается. Это соответствует поведению EditText в Android. (I3ca16, b/174173645)
- Добавьте маркер курсора. (I07a82, b/173016579)
Исправление ошибок
- Прокрутка с помощью семантических действий для ленивых списков и обычных компонентов прокрутки теперь анимирована (Id9066, b/190742024).
Внешний вклад
- Теперь параметр
LazyVerticalGridпринимает параметры горизонтального и вертикального расположения. (If9c92)
Версия 1.0
Версия 1.0.5
3 ноября 2021 г.
Выпущены androidx.compose.foundation:foundation:1.0.5 и androidx.compose.foundation:foundation-layout:1.0.5. Версия 1.0.5 содержит следующие коммиты:
Исправление ошибок
- Исправлена ошибка отслеживания сбоев, связанных с экземплярами derivedStateOf. (aosp/1792247)
Версия 1.0.4
13 октября 2021 г.
Выпущены androidx.compose.foundation:foundation:1.0.4 и androidx.compose.foundation:foundation-layout:1.0.4. Версия 1.0.4 содержит следующие коммиты:
Обновления зависимостей
- Обновлена зависимость от Kotlin
1.5.31
Версия 1.0.3
29 сентября 2021 г.
Выпущены androidx.compose.foundation:foundation:1.0.3 и androidx.compose.foundation:foundation-layout:1.0.3. Версия 1.0.3 содержит следующие коммиты:
Обновления зависимостей
- Обновлена зависимость от Kotlin
1.5.30
Версия 1.0.2
1 сентября 2021 г.
Выпущены androidx.compose.foundation:foundation:1.0.2 и androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.1 и androidx.compose.foundation:foundation-layout:1.0.1. Версия 1.0.1 содержит следующие коммиты:
Обновления зависимостей
- Обновлена зависимость от Kotlin
1.5.21.
Версия 1.0.0
28 июля 2021 г.
Выпущены androidx.compose.foundation:foundation:1.0.0 и androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.0-rc02 и androidx.compose.foundation:foundation-layout:1.0.0-rc02. Версия 1.0.0-rc02 содержит следующие коммиты:
- Обновлена отрисовка границ для стандартных фигур, чтобы устранить проблемы с путями, заданными с фиксированными размерами. (aosp/1748871, b/191817116)
Версия 1.0.0-rc01
1 июля 2021 г.
Выпущены androidx.compose.foundation:foundation:1.0.0-rc01 и androidx.compose.foundation:foundation-layout:1.0.0-rc01. Версия 1.0.0-rc01 содержит следующие коммиты:
Изменения в API
- Теперь в Canvas поддерживается параметр contentDescription для обеспечения доступности. (Ib547c)
Исправление ошибок
- Отключенная кнопка, карточка, флажки и
Modifier.clickable(enabled=false)будут блокировать клики, не позволяя им достигать родительского элемента. (Ic2c3b, b/183908811)
Версия 1.0.0-beta09
16 июня 2021 г.
Выпущены androidx.compose.foundation:foundation:1.0.0-beta09 и androidx.compose.foundation:foundation-layout:1.0.0-beta09. Версия 1.0.0-beta09 содержит следующие коммиты:
Изменения в API
- Контакт (
ManualFrameClock) удален. Если вам нужно управлять анимацией, используйтеcomposeTestRule.mainClock. (I3c3e8, b/189951065) - изменить перечисления Role и LiveRegionMode на встроенные классы с частным конструктором (Id1890);
- KeyboardCapitalization преобразуется во встроенный класс. (Id5a1c)
- Класс TextOverflow изменен на встроенный. (I433af)
Исправление ошибок
- Теперь, когда вы указываете уникальные ключи для элементов LazyColumn/Row, позиция прокрутки сохраняется на основе ключа. Это означает, что если вы добавите или удалите элементы перед текущим видимым элементом, элемент с заданным ключом останется первым видимым. (Id263f, b/184257857)
- Ключевые константы пока имеют аннотацию @ExperimentalComposeUiApi. Код, использующий константу, может объявлять частные константы до стабилизации. (Ia5d48)
- В AndroidComposeTestRule добавлен IdlingStrategy, который можно использовать в фреймворках тестирования, чтобы установить альтернативный механизм ожидания или достижения состояния покоя. Используйте
AndroidComposeTestRule.setIdlingStrategyFactory()до начала тестирования, чтобы установить собственную стратегию. (I608fa)
Добавлены правила для профилей
В этом выпуске в следующие модули 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.foundation:foundation:1.0.0-beta08 и androidx.compose.foundation:foundation-layout:1.0.0-beta08. Версия 1.0.0-beta08 содержит следующие коммиты:
Изменения в API
- Перечисление NestedScrollSource заменено встроенным классом. (Ie321b, b/187055290)
- Перечисления были преобразованы в встроенные классы, чтобы избежать проблем с исчерпывающими операторами when при добавлении новых значений перечислений. (I2b5eb)
- Добавлено время ожидания нажатия для элементов, которые можно нажать или переключить, чтобы предотвратить появление эффекта волны при прокрутке или перетаскивании (Ia2704, b/168524931).
- Свойства ContentDescription и Text больше не являются отдельными значениями, а представляют собой списки. Это позволяет объединять их как есть, а не конкатенировать. Также были добавлены улучшенные API для тестирования, которые позволяют использовать эти изменения (Ica6bf, b/184825850).
Modifier.focusModifier()больше не поддерживается и заменена наModifier.focusTarget()(I6c860).- Перечисление KeyboardType заменено встроенным классом. (I73045, b/187055290)
- Перечисление
FocusStateзаменено интерфейсомFocusState(Iccc1a, b/187055290) - Перечисление ImeAction заменено встроенным классом. (I18be5, b/187055290)
- Функции
AnnotatedString.withAnnotationтеперь относятся к ExperimentalTextApi, а не к ExperimentalComposeApi. (I0cd0a)- Конструктор TextUnit с TextUnitType теперь относится к ExperimentalTextApi, а не к ExperimentalComposeApi.
- Теперь PaddingValues –
@Stable, а не@Immutable(I88c50).
Исправление ошибок
- Исправлены сбои при долгом нажатии на пустую область в непустом тексте. (I33ab5, b/187437299)
- Показ панели инструментов после выбора всего текста (I495d9, b/185919613)
- Исправлена ошибка, из-за которой прокручиваемые контейнеры обрезали дочерние элементы по поперечной оси. Эта проблема легко воспроизводилась, если у вас был элемент LazyRow с элементами Card. Теперь тень не будет обрезаться. (Icb635, b/186318448)
- Исправлена ошибка, из-за которой при долгом нажатии с использованием Modifier.combinedClickable иногда зависали эффекты пульсации и другие индикаторы (I2298c, b/186223077).
- Теперь
detectDragGesures,detectVerticalGesturesиdetectHorizontalGesturesбудут автоматически учитывать изменение позиции, поэтому вам не нужно вызывать change.consumePositionChange в обратных вызовах onDrag (I42fc4, b/185096350, b/187320697). Modifier.onGloballyPositioned()теперь сообщает координаты этого модификатора в цепочке модификаторов, а не координаты макета после применения всех модификаторов. Это означает, что порядок модификаторов влияет на то, какие координаты будут передаваться. (Ieb67d, b/177926591)
Версия 1.0.0-beta07
18 мая 2021 г.
Выпущены androidx.compose.foundation:foundation:1.0.0-beta07 и androidx.compose.foundation:foundation-layout:1.0.0-beta07. Версия 1.0.0-beta07 содержит следующие коммиты.
Изменения в API
- Для LazyColumn/Row реализована логика предварительной выборки следующего видимого элемента (I8a4bc, b/184940225).
- Добавлен маркер выбора клипа (Iff80d, b/183408447)
Исправление ошибок
- LazyColumn/Row теперь сохраняет до двух ранее видимых элементов активными (не удаляет), даже если они уже прокручены. Это позволяет компоненту повторно использовать активные вложенные композиции при создании нового элемента, что повышает эффективность прокрутки. (Ie5555)
- Удалите paintBackground. (I38660)
- Нарисуйте фон выделения, используя DrawScope. (I73c61, b/186674472)
- Исправлена регрессия beta06, влияющая на строки и столбцы, в которых для размещения дочерних элементов с весом используется свойство spacedBy. (Ifaf8c, b/187326588)
Версия 1.0.0-beta06
5 мая 2021 г.
Выпущены androidx.compose.foundation:foundation:1.0.0-beta06 и androidx.compose.foundation:foundation-layout:1.0.0-beta06. Версия 1.0.0-beta06 содержит следующие коммиты.
Изменения в API
- Устранение конфликта с жестом навигации (I1145e)
- Добавлены API специальных возможностей CollectionInfo и CollectionItemInfo, которые позволяют отмечать коллекции и их элементы для сервисов специальных возможностей (Id54ef, b/180479017).
- Добавлены функции
SemanticsActions.ScrollToIndexдля прокрутки списка с индексированными элементами до элемента с определенным индексом иSemanticsProperties.IndexForKeyдля получения индекса элемента в списке с элементами, имеющими ключи. Оба действия реализуются с помощью LazyList.- Добавлены функции
SemanticsNodeInteraction.performScrollToIndex, которая прокручивает список до указанного индекса, иSemanticsNodeInteraction.performScrollToKey, которая прокручивает список до элемента с указанным ключом. (I4fe63, b/178483889, b/161584524)
- Добавлены функции
- Поддержка сохранения AnnotatedString в TextFieldValue.Saver. В AnnotatedString.Builder добавлены вспомогательные функции addTtsAnnotation и withAnnotation (I8cbdc, b/178446304).
- В параметр
PaddingValues(horizontal, vertical)добавлены значения параметра0.dpпо умолчанию (I05571, b/181336792)
Исправление ошибок
- Дочерние элементы строк и столбцов с атрибутом
weight(fill = false)больше не заставляют родительский элемент заполнять все доступное пространство по основной оси. (Ied94d, b/186012444, b/184355105)
Версия 1.0.0-beta05
21 апреля 2021 г.
Выпущены androidx.compose.foundation:foundation:1.0.0-beta05 и androidx.compose.foundation:foundation-layout:1.0.0-beta05. Версия 1.0.0-beta05 содержит следующие коммиты:
Изменения в API
- Интерфейс FlingBehavior теперь отмечен как @Stable. Все реализации должны соответствовать договору
@Stable. (I93354, b/184830577)
Исправление ошибок
- Исправлены действия прокрутки для специальных возможностей:
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.foundation:foundation:1.0.0-beta04 и androidx.compose.foundation:foundation-layout:1.0.0-beta04. Версия 1.0.0-beta04 содержит следующие коммиты.
Изменения в API
- Переименованы методы hideSoftwareKeyboard и showSoftwareKeyboard в классе SoftwareKeyboardController: теперь они называются
hide()иshow()соответственно.- Предоставлен полный интерфейс CompositionLocal для LocalSoftwareKeyboardController, позволяющий задавать его (особенно полезно при тестировании) (I579a6).
- Представлен
TextOverflow.Visible. (Ic8f89) - Удалены общедоступные экземпляры
RowScope,ColumnScope,BoxScope,BoxWithConstraintsScope. (I4e83e, b/181869067)
Исправление ошибок
- Исправлена проблема, из-за которой объекты
LazyColumn/LazyRow, расположенные по краям, неправильно позиционировались после быстрой передачи (Ie4d13, b/183877420). До этого изменения локальные функции, состоящие из нескольких частей, можно было пропустить на основе их параметров. После этого изменения ни одна локальная функция, поддерживающая композицию, не будет пропускаться. Это изменение было внесено, поскольку локальные функции часто и ожидаемо получают параметры от родительского элемента, а их пропуск является распространенным источником ошибок.
Рассмотрим пример:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }До этого изменения composable-функция
ShowCountвсегда пропускалась, даже после обновления параметраcount. Однако с тех пор мы пересмотрели свое решение. (I5648a)
Версия 1.0.0-beta03
24 марта 2021 г.
Выпущены androidx.compose.foundation:foundation:1.0.0-beta03 и androidx.compose.foundation:foundation-layout:1.0.0-beta03. Версия 1.0.0-beta03 содержит следующие коммиты:
Изменения в API
DefaultMonotonicFrameClockбольше не поддерживается. При вызовеwithFrameNanosилиRecomposer.runRecomposeAndApplyChangesбезMonotonicFrameClockбудет возвращаться ошибкаIllegalStateException. (I4eb0d)
Исправление ошибок
- Функция
FlingBehavior.performFling()теперь вызывается, даже если скорость равна нулю (I0b6e5, b/181237123)
Версия 1.0.0-beta02
10 марта 2021 г.
Выпущены androidx.compose.foundation:foundation:1.0.0-beta02 и androidx.compose.foundation:foundation-layout:1.0.0-beta02. Версия 1.0.0-beta02 содержит следующие коммиты:
Изменения в API
- Добавлено несколько небольших оптимизаций в логику измерения LazyColumn (Ic6889).
- Добавлен новый локальный API композиции
LocalSoftwareKeyboardController, который заменит предыдущий интерфейс SoftwareKeyboardController в TextField. (I5951e, b/168778053) - Добавлен новый локальный API композиции
LocalSoftwareKeyboardController, который заменит предыдущий интерфейс SoftwareKeyboardController в TextField. (I84472, b/168778053)
Исправление ошибок
- Внедрение ограничений на общедоступное использование экспериментальных API (I6aa29, b/174531520)
Версия 1.0.0-beta01
24 февраля 2021 г.
Выпущены androidx.compose.foundation:foundation:1.0.0-beta01 и androidx.compose.foundation:foundation-layout:1.0.0-beta01. Версия 1.0.0-beta01 содержит следующие коммиты:
Это первый выпуск Compose 1.0.0 Beta.
Изменения в API
- В
detectDragGesturesдобавлен обратный вызов onStart (I67269, b/179995594). - Модификаторы для определения размера на основе внутренних параметров больше не являются экспериментальными. (I15744)
- Удалены утверждения dp (I798d2)
- Удален обратный вызов SoftwareKeyboardController из всех текстовых полей. Вскоре будет добавлен новый API. (Iae869, b/168778053)
- 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)
- Удалены устаревшие методы LayoutCoordinates. Вместо свойства для positionInParent и boundsInParent теперь используется функция (I580ed, b/169874631, b/175142755).
- Создан новый TextInputSession для сеансов ввода из текстовых компонентов низкого уровня, таких как CoreTextField. (I8817f, b/177662148)
- Теперь в Placeable есть measuredSize, представляющий размер, до которого дочерний макет был фактически измерен. Этот размер может не соответствовать ограничениям на измерение. (Ib2729, b/172560206, b/172338608)
- Добавлен модификатор selectionGroup, позволяющий отмечать коллекцию вкладок или переключателей для специальных возможностей (Ie5c29).
Добавлен метод LazyListState.animateScrollToItem
Этот метод позволяет плавно прокрутить список до определенного элемента. (I4bfd7)
Функция ScrollableState.smoothScrollBy() переименована в animateScrollBy(). Функция LazyListState.snapToItemIndex() переименована в scrollToItem(). Функция ScrollState.smoothScrollTo() переименована в animateScrollTo(). (I35ded)
Modifier.zoomable заменен на Modifier.transformable. Добавлены функции smoothPanBy и smoothRotationBy. (Ifc32b, b/175294473)
defaultFactoryдляcompositionLocalOfиstaticCompositionLocalOfтеперь обязателен, а не необязателен.Это изменение устраняет потенциальную ошибку типа для типов, допускающих значение NULL, для которых не был предоставлен заводской метод по умолчанию. Раньше в этом случае для типа, допускающего значение NULL, возвращалась бы нулевая ссылка.
Для типов, допускающих значение NULL, в качестве фабрики по умолчанию рекомендуется использовать
{ null }.Мы не рекомендуем использовать локальные переменные с типами, допускающими значение NULL, если не удается задать разумное значение по умолчанию. Если подходящего значения по умолчанию нет, лямбда-функция
defaultFactoryдолжна выдать исключение. Однако при этом потребители локали будут неявно зависеть от ее предоставления, что не будет контролироваться системой типов. (Ifbd2a)Изменил
Indication#createIndication()наIndication#rememberUpdatedIndication(InteractionState)и удалил параметрInteractionStateиз IndicationInstance#drawIndication(). IndicationInstance должен отвечать только за отрисовку визуальных эффектов, а не за запуск анимации или запись состояния в ответ на изменения InteractionState. Анимация и запись состояния должны выполняться в течениеrememberUpdatedIndication(). ПараметрindicationвModifier.indicationтакже стал обязательным. (Ic1764, b/152525426)Действия с текстом теперь автоматически проверяют фокус (I13777, b/179648629)
Удалено
runBlockingWithManualClock(I15cdc, b/179664814)Позиция прокрутки в Modifier.verticalScroll()/horizontalScroll() теперь представлена целыми числами (I81298)
Пакеты методов smoothScrollBy и scrollBy изменены на
androidx.compose.foundation.gestures.*(I3f7c1, b/175294473).Класс FlingConfig переименован в FlingBehavior и теперь позволяет настраивать анимацию приостановки, а не использовать заданные значения Decay. (I02b86, b/175294473)
Изменены названия модификаторов размера. Параметры Modifier.width/height/size были переименованы в requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize были переименованы в width/height/size. (I5b414)
Параметр defaultMinSizeConstraints переименован в defaultMinSize. (I4eaae)
Модификатор Modifier.tapGestureFilter удален. Вместо него используйте
Modifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)Частичное использование удалено из системы ввода указателя. Рекомендуемый способ координации частичного использования – Modifier.nestedScroll. (Ie9c9b)
Ориентация перенесена в основной пакет. Класс VelocirtTracker перенесен из ui.gesture в ui.input.pointer. (Iff4a8, b/175294473)
Удалены AnimationClockObservable и его подклассы. Класс AnimatedFloat удален. (Icde52, b/177457083)
drawerState.open() и drawerState.close() теперь являются приостанавливающими функциями. Используйте rememberCoroutineScope(), чтобы получить область композиции для вызова (I16f60, b/175294473).
Компонент 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)
Изменения в Modifier.scrollable Теперь вместо класса ScrollableController используется интерфейс Scrollable (I4f5a5, b/174485541, b/175294473).
Теперь в качестве параметра modifier.draggable можно использовать DraggableState вместо простой лямбда-функции. Чтобы получить прежнее поведение, создайте состояние с помощью
rememberDraggableState { delta -> }(Ica70f, b/175294473).Добавлены модификаторы requiredWidth(IntrinsicSize) и requiredHeight(IntrinsicSize) для указания обязательных размеров на основе внутренних размеров. (I0a6b4)
Удален устаревший параметр
emptyContent(). Используйте вместо него{}. (Idb33f, b/179432510)Удалены некоторые ранее устаревшие API (Ice5da, b/178633932).
Исправление ошибок
- Добавлен новый локальный API LocalSoftwareKeyboardController для композиции, который заменяет предыдущий интерфейс SoftwareKeyboardController в TextField. (I658b6, b/168778053)
Версия 1.0.0-alpha12
10 февраля 2021 г.
Выпущены androidx.compose.foundation:foundation:1.0.0-alpha12 и androidx.compose.foundation:foundation-layout:1.0.0-alpha12. Версия 1.0.0-alpha12 содержит следующие коммиты:
Изменения в API
- Теперь для Modifier.pointerInput требуются ключи remember, чтобы указывать, когда сопрограмма обнаружения ввода указателя должна перезапускаться для новых зависимостей. (I849cd)
- Изменение в тестировании: функция hasText() будет проверять как введенный текст, так и текст ярлыка, подсказки или заполнителя в текстовом поле (Iab803)
- Добавлено значение PaddingValues.Absolute, которое можно использовать в API, принимающих PaddingValues. (Ia5f30)
- onImeActionPerformed устарел. Используйте KeyboardActions (If0bbd, b/179071523).
- Чтобы привести названия в соответствие с ImageBitmap и ImageVector, ImagePainter был переименован в BitmapPainter, чтобы параллельно использовать VectorPainter. (Iba381, b/174565889)
- Улучшены API для тестирования подстрок: теперь подстрока передается в качестве аргумента (Icbe78).
- Добавлен элемент контекста сопрограммы
InfiniteAnimationPolicy, который будет применяться в бесконечных анимациях. По умолчанию правила не устанавливаются, за исключением случаев, когда тестирование проводится с помощьюComposeTestRule. (I50ec4, b/151940543) - Функции Animatable.snapTo и Animatable.stop теперь являются функциями приостановки (If4288)
- Метод ComponentActivity.setContent перенесен в androidx.activity.compose.setContent в модуле androidx.activity:activity-compose. (Icf416)
- Из нескольких классов, где они редко использовались, удалены методы деструктуризации и copy(). (I26702, b/178659281)
Добавлена поддержка специальных ключей для LazyColumn и LazyRow. Это позволяет нам более эффективно обрабатывать запросы на изменение порядка товаров. Таким образом, состояние, сохраненное в блоках remember {}, будет перемещаться вместе с элементом, когда вы меняете порядок элементов или удаляете элемент из середины.
LazyColumn { items(users, key = { user -> user.id }) { ... } }Изменили Indication#createInstance, чтобы он был @Composable, и изменили LocalIndication, чтобы он содержал Indication, а не () -> Indication. (I5eeea, b/157150564)
Constraints.enforceзаменено наConstraints.constrain. (I8b8ea)Поддержка loadFontResource прекращена. Вместо них используйте fontResource. imageResource, loadImageResource, vectorResource и loadVectorResource устарели. Вместо него используйте painterResource. (I6b809)
В целях повышения производительности семантика ScrollAxisRange теперь принимает лямбда-функции, возвращающие значения типа Float, вместо прямых значений типа Float. (If4a35, b/178657186)
Добавлена семантика EditableText, чтобы отмечать редактируемый текст в текстовом поле для специальных возможностей, а также соответствующие методы тестирования для проверки семантики (I8e07a).
Модификатор clickable теперь не поддерживает двойные и долгие нажатия. Для этого используйте Modifier.combinedClickable. (Iafad1)
Метод toIntPx() был переименован в roundToPx(). (I9b7e4, b/173502290)
Класс IntBounds был переименован в IntRect, а API был улучшен. (I1f6ff)
Поддержка Modifier.dragGestureFilter прекращена. Вместо него используйте
Modifier.pointerInput { detectDragGestures (...)}. Также можно использовать Modifier.draggable для перетаскивания по одной оси (I0ba93, b/175294473).Переименованы объекты Ambients в соответствии с переименованием Ambient -> CompositionLocal. Раньше объекты Ambients назывались AmbientFoo, а теперь объекты CompositionLocals называются LocalFoo. (I2d55d)
Выделение перемещено в основание. (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).
Время воспроизведения в анимации теперь указывается в наносекундах (If776a)
Аннотация @ComposableContract устарела. Вместо нее теперь используются три более конкретные аннотации.
@ComposableContract(restartable = false)стал@NonRestartableComposable.@ComposableContract(readonly = true)стал@ReadOnlyComposable.@ComposableContract(preventCapture = true)стал@DisallowComposableCalls.@ComposableContract(tracked = true)удален. (I60a9d)Утилиты
emptyContent()и(@Composable () -> Unit).orEmpty()устарели, поскольку больше не влияют на эффективность и не имеют ценности (I0484d).Теперь можно закрывать окна с перекомпоновкой. Закрытые рекомпоновщики продолжат рекомпозицию, пока не завершатся дочерние сопрограммы. Функция Recomposer.shutDown переименована в cancel, чтобы отличать ее от функции close. (Ib6d76)
API, связанные с LazyVerticalGrid, помечены как экспериментальные (Ia53e3, b/178519862)
Функция rememberSavedInstanceState() переименована в rememberSaveable() и перенесена в пакет androidx.compose.runtime.saveable. (I1366e, b/177338004)
Класс RestorableStateHolder был переименован в SaveableStateHolder и перемещен в пакет androidx.compose.runtime.saveable. Внутренний метод RestorableStateProvider был переименован в SaveableStateProvider. Удален общий тип, поэтому в качестве ключа можно передавать Any. Экспериментальная аннотация больше не нужна. (I0902e, b/174598702)
Saver, listSaver(), mapSaver(), autoSaver были перенесены из androidx.compose.runtime.savedinstancestate в androidx.compose.runtime.saveable (I77fe6)
Артефакт 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)
Параметры RounderCornerShape, CutCornerShape и CornerBasedShape были переименованы с left/right на start/end, чтобы поддерживать автоматическое зеркальное отображение формы в направлении справа налево. Классы AbsoluteRounderCornerShape и AbsoluteCutCornerShape были добавлены для случаев, когда автоматическое зеркальное отражение нежелательно. (I61040, b/152756983)
canDrag удален из Modifier.scrollable. (Id66e7, b/175294473)
API, на который ориентирован плагин компилятора Compose, был переработан. Теперь вместо конкретного класса используется интерфейс. Кроме того, в интерфейсе больше не используется параметр типа.
Это внутреннее изменение, которое не должно повлиять на совместимость исходного кода, но является критическим изменением для двоичного кода. (I3b922, b/169406779)
Функция Modifier.scaleGestureFilter удалена. Используйте Modifier.zoomable. Или используйте
Modifier.pointerInput { detectMultitouchGestures { ... }}(Id5da1, b/175294473).Поддержка AnimatedValue/Float прекращена. Используйте вместо него Animatable. (I71345, b/177457083)
- Удалены CoreText и CoreTextField из общедоступного API
- Удалена устаревшая перегрузка SelectionContainer (I99c19).
Удаление устаревших функций прокрутки без приостановки Мы продолжаем вносить изменения, начатые в предыдущей версии. Теперь функции прокрутки без приостановки удалены полностью. Используйте функции suspend с теми же названиями. Область сопрограммы можно получить с помощью функции rememberCoroutineScope(). (I3d39c, b/178169563)
androidx.compose.foundation.layout.ConstraintLayout устарел и был заменен на androidx.constraintlayout.compose.ConstraintLayout. Вам нужно будет добавить зависимость от
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01. (I87adc)tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter и pressIndicaitonGestureFilter больше не поддерживаются. Вместо этого используйте Modifier.clickable или Modifier.pointerInput с функцией detectTapGestures. (I6baf9, b/175294473)
Контакт (
Recomposer.current()) удален. [Abstract]ComposeView теперь по умолчанию создается лениво, а Recomposers с областью действия окна управляются ViewTreeLifecycleOwner для окна. Рекомпозиция и такты анимации на основе withFrameNanos приостанавливаются, когда останавливается жизненный цикл хоста. (I38e11)Recomposer.runningRecomposers теперь предлагает глобальный StateFlow только для чтения RecomposerInfo для наблюдения за текущим состоянием композиции в процессе. Рекомендуем использовать этот API вместо Recomposer.current(), который теперь считается устаревшим. (If8ebe)
Версия 1.0.0-alpha11
28 января 2021 г.
Выпущены androidx.compose.foundation:foundation:1.0.0-alpha11 и androidx.compose.foundation:foundation-layout:1.0.0-alpha11. Версия 1.0.0-alpha11 содержит следующие коммиты:
Изменения в API
Прекращение поддержки scrollBy без приостановки, удаление scrollTo без приостановки
Теперь мы рекомендуем использовать функции suspend для управления прокруткой и ожидания ее завершения. В рамках этого перехода мы прекращаем поддержку и/или удаляем версии этих функций, не связанные с приостановкой. (Ie9ced)
Устаревание функции smoothScrollBy, не относящейся к suspend-функциям Теперь мы рекомендуем использовать suspend-функции для управления прокруткой и ожидания ее завершения. В рамках этого перехода мы прекращаем поддержку версий этих функций, которые не приостанавливают выполнение. (I12880)
В изображения и значки добавлен параметр описания контента. Используется для предоставления описания сервисам специальных возможностей (I2ac4c).
В BasicTextField добавлен новый параметр decorationBox. Он позволяет добавлять в текстовое поле значки, плейсхолдеры, ярлыки и другие элементы, а также увеличивать область нажатия. (I16996)
Параметр canDrag удален из Modifier.draggable (Ic4bec, b/175294473)
Удален метод AnimatedFloat.fling, принимающий FlingConfig. Используйте suspend Animatable.animateDecay. (I4659b, b/177457083)
Из следующих классов удален элемент
data class:- InlineTextContent
- LocaleList
- (I605c7)
Теперь элементы, которые можно нажимать, переключать и выбирать, можно создавать вне композиции (I0a130, b/172938345, b/175294473).
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)Удален устаревший элемент AbsoluteArrangement. (Iffa96, b/177641870)
В Box добавлен параметр propagateMinConstraints, позволяющий указать, нужно ли передавать входящие минимальные ограничения содержимому Box. Значение по умолчанию – false. (I0125b, b/152613457)
Исправление ошибок
- onCommit, onDispose и onActive устарели. Вместо них теперь используются API SideEffect и DisposableEffect (If760e).
- Компонент WithConstraints был переработан и переименован в BoxWithConstraints. Теперь он находится в foundation.layout. (I9420b, b/173387208)
Изменения в фабричных функциях для 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).
Теперь плотность является областью действия получателя для интерфейсов Arrangement. (I18aad)
TextFieldValue принимает AnnotatedString. Однако это изменение касается только API, и редактирование текста с несколькими стилями пока не реализовано.
- Удален параметр
initialиз конструктора EditingBuffer. (I326d5)
- Удален параметр
invalidate и compositionReference() теперь считаются устаревшими. Вместо них следует использовать currentRecomposeScope и rememberCompositionReference. (I583a8)
Класс AnnotatedString теперь наследуется от kotlin.CharSequence. Поэтому length и subSequence теперь являются функциями экземпляра, а функции расширения удалены. (Iaf429)
Поля "Продолжительность" и "Время работы" будут заменены на поле "Длинные миллисекунды". Это позволит убрать зависимость ввода указателя от этих классов. (Ia33b2, b/175142755, b/177420019)
RememberObserver заменяет CompositionLifecycleObserver, который теперь считается устаревшим.
RememberObserver– это замена дляCompositionLifecycleObserverс измененной семантикой и переименованными методами. Переход на новый API можно выполнить автоматически для объектов, которые запоминаются только один раз. Это рекомендуемый подход. Однако если ссылка была упомянута в композиции несколько раз, функцияonRememberedвызывается для каждой ссылки, а функцияonEnter– только один раз.onEnterвызывался несколько раз, если объект использовался в подкомпозициях, таких какWithConstraintsиScaffold, поэтому однократный вызовonEnterне гарантировал надежность, и он был удален дляRememberObserver.RememberObserverдобавляетonAbandoned, который вызывается, если экземплярRememberObserverвозвращается из обратного вызова, переданного вremember, но не был сохранен в состоянии композиции и, следовательно, никогда не будет вызванonRemembered. Это может произойти, если исключение завершает композицию до ее завершения или композиция отбрасывается, поскольку состояние, для которого она создавалась, больше не является текущим или больше не требуется. Если экземплярRememberObserver, следующий за рекомендацией по использованию одной ссылки, отслеживает внешний ресурс, тоonForgottenиonAbandonedуказывают, что ресурс больше не нужен. Если объект отслеживает начало работы или выделение ресурсов вonRemembered,onAbandonedможно игнорировать, поскольку он не будет вызываться, если вызываетсяonRemembered. (I02c36)Переименовано поле TransformedText.transformedText в TransformedText.text
- TransformedText больше не является классом данных (Ie672a)
Следующие классы больше не являются классами данных:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
Удалены экспериментальные методы monotonicFrameAnimationClockOf (Ib753f, b/170708374).
Устаревшие методы глобальных координат заменены новыми методами координат на основе окон. (Iee284)
Используйте ImeAction.None вместо ImeAction.NoAction.
- Используйте ImeAction.Default вместо ImeAction.Unspecified (Ie1bcc)
Метод FocusRequester.createRefs теперь помечен как экспериментальный, поскольку может быть изменен. (I2d898, b/177000821)
Поле SemanticsPropertyReceiver.hidden было переименовано в invisibleToUser и отмечено аннотацией @ExperimentalComposeUiApi. AccessibilityRangeInfo переименовано в ProgressBarRangeInfo. stateDescriptionRange переименовано в progressBarRangeInfo. AccessibilityScrollState переименовано в ScrollAxisRange. horizontalAccessibilityScrollState переименовано в horizontalScrollAxisRange. verticalAccessibilityScrollState переименовано в verticalScrollAxisRange. (Id3148)
Изменен интерфейс VisualTransformation на функциональный (I3bba4).
Использование TestCoroutineDispatcher при тестировании (I532b6)
Удален класс PointerInputData. Класс PointerInputChange был изменен, чтобы включать все поля класса PointerInputData. Классы PointerInputEvent и PointerInputEventData стали внутренними, поскольку они не используются ни в одном общедоступном API. (Ifff97, b/175142755)
Функция TextInputService.onStateUpdated переименована в updateState (Id4853)
Удалите displaySize, так как его следует избегать. Обычно лучше использовать размер onRoot() или хотя бы размер окна. (I62db4)
Версия 1.0.0-alpha10
13 января 2021 г.
Выпущены androidx.compose.foundation:foundation:1.0.0-alpha10 и androidx.compose.foundation:foundation-layout:1.0.0-alpha10. Версия 1.0.0-alpha10 содержит следующие коммиты:
Изменения в API
- Классы ImeOptions и KeyboardOptions больше не являются классами данных (I3c898, b/168684531).
- Изменения в VisualTransformation API
- Переименован параметр OffsetMap в OffsetMapping
- Переименовано поле OffsetMapping.identityOffsetMap в OffsetMapping.Identity
- PasswordTransformation больше не является классом данных
- Перемещен OffsetMapping в отдельный файл
- (I0bdf3)
- Изменения в EditOperations API
- Переименован класс EditOperation в EditCommand.
- Добавлен суффикс Command для конкретных реализаций EditOperation
- EditCommand больше не являются классами данных
- Функция EditOperation.process переименована в applyTo
- Переименован InputEventListener в InputEventCallback
- (I0a366)
- Измененная скорость, состоящая из компонентов и математических операций. (Ib0447)
- Переименовано @ExperimentalTesting в @ExperimentalTestApi, чтобы соответствовать аналогичным аннотациям экспериментальных API (Ia4502, b/171464963).
- Добавлен экспериментальный метод stickyHeader для LazyColumn/LazyRow (I0a81d).
- Переименован метод Color.useOrElse() в Color.takeOrElse() (Ifdcf5)
- Устаревший класс TestUiDispatcher. Используйте Dispatchers.Main (Ic171f, b/175385255).
- Добавьте переключатель в файл Strings.kt (I4a5b7, b/172366489).
- Перемещен nativeClass в модуль ui и сделан внутренним. В реализациях метода equals вместо nativeClass теперь используется "is MyClass". (I4f734)
- FlowRow и FlowColumn устарели. Используйте специальную разметку. (I09027)
- Методы Modifier.focus() и Modifier.focusRequester() больше не поддерживаются. Вместо них используйте Modifier.focusModifier() и Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
- Добавлен метод SelectionRegistrar.notifySelectableChange, который позволяет уведомлять SelectionManager об изменениях в Selectable. (I6ff30, b/173215242)
- Изменено с
fun Dp.isFinite()наval Dp.isFinite(I50e00). - Свойство Constraints#satisfiedBy переименовано в isSatisfiedBy. (I9cf5c)
- Добавлены функции isSpecified, isUnspecified и useOrElse для встроенных классов с константой Unspecified. (I93f7b, b/174310811)
Исправление ошибок
- Новый API на основе сопрограмм
Animatable, который обеспечивает взаимную исключительность анимаций. Новый класс DecayAnimationSpec для поддержки многомерной анимации затухания (I820f2, b/168014930) - Добавлена поддержка отключенных и доступных только для чтения текстовых полей (I35279, b/171040474, b/166478534).
- Функция
animate()заменена наanimateAsState(), которая возвращаетState<T>вместоT. Это позволяет повысить эффективность, поскольку область аннулирования можно сузить до места, где считывается значение State. (Ib179e) - Добавлен API для роли Semantics и параметр Role для SemanticsModifier, который можно использовать в элементах, доступных для нажатия, выбора и переключения. Изменено значение Modifier.progressSemantics, чтобы его можно было использовать в Slider. (I216cd)
- Теперь доступ к событию keyEvent можно получить через keyEvent.nativeKeyEvent (I87c57, b/173086397).
Версия 1.0.0-alpha09
16 декабря 2020 г.
Выпущены androidx.compose.foundation:foundation:1.0.0-alpha09 и androidx.compose.foundation:foundation-layout:1.0.0-alpha09. Версия 1.0.0-alpha09 содержит следующие коммиты:
Изменения в API
Добавление интерфейса с прокруткой
Это позволяет рассматривать ScrollState и LazyListState как общий тип, что позволяет реализовать пользовательскую прокрутку для обоих типов.
Также функция smoothScrollBy переносится в расширение Scrollable, чтобы использовать ее возможности. (I2153b)
Добавлен LazyVerticalGrid. (I17267, b/162213211)
Удалены LazyColumnFor, LazyRowFor, LazyColumnForIndexed и LazyRowForIndexed. Используйте LazyColumn и LazyRow вместо Column и Row (I5b48c)
Для API, приостанавливающих ввод с помощью указателя, переименованы HandlePointerInputScope в AwaitPointerEventScope и handlePointerInput() в awaitPointerEventScope(). (Idf0a1, b/175142755)
Добавлен LazyListState.layoutInfo, который предоставляет список размеров и смещений видимых в данный момент элементов (If8678, b/170472532).
Удалена аннотация ExperimentalPointerInput (Ia7a24).
Добавлена поддержка InteractionState для полей TextField. (I61d91)
Добавьте параметр reverseLayout для LazyColumn/Row. В этом случае
trueэлементы будут располагаться снизу вверх, аLazyListState.firstVisibleItemIndex == 0будет означать, что первый элемент находится внизу. (I552ae, b/166589935)Для LazyColumn добавлен параметр verticalArrangement. Для LazyRow добавлен параметр horizontalArrangement. Параметр "Расположение" позволяет добавить интервал между элементами и указать, как они должны располагаться, если их недостаточно, чтобы заполнить минимальный размер. (Icf79a, b/170394300)
Теперь detectMultitouchGestures использует один обратный вызов с комбинированными параметрами centroid, pan, zoom и rotate. (Ie6e1c)
Перемещен ContentDrawScope в модуль ui-graphics, чтобы он находился рядом с DrawScope. (Iee043, b/173832789)
Исправление ошибок
- Лямбда-выражения в модификаторах смещения теперь возвращают 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)
Modifier.focusObserver больше не поддерживается. Используйте Modifier.onFocusChanged или Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
Autofill API теперь является экспериментальным и требует согласия на использование (I0a1ec)
Добавление объявлений деструктуризации для создания экземпляров FocusRequester (I35d84, b/174817008)
accessibilityLabel переименован в contentDescription. accessibilityValue переименован в stateDescription. (I250f2)
Добавлены новые функции в SelectionRegistrar, а также переименована функция onPositionChange в notifyPositionChange. (Ifbaf7)
AndroidOwner made internal (Ibcad0, b/170296980)
Новая функция infiniteRepeatable для создания объекта InfiniteRepeatableSpec (I668e5)
Интерфейс
Applierбыл изменен, чтобы упростить создание дерева снизу вверх, а не сверху вниз.Метод
insert()переименован вinsertTopDown().Добавлен новый метод
insertBottomUp().Приложение вставляет узлы в редактируемое дерево, используя
insertTopDown()илиinsertBottomUp()в зависимости от того, что работает лучше.Некоторые деревья, например
LayoutNodeиView, гораздо эффективнее строить снизу вверх, чем сверху вниз. До этого изменения для реализации подхода "снизу вверх" требовался стек вставок, который нужно было скопировать в каждый прикладной модуль, которому для повышения производительности требовалась конструкция "снизу вверх". ТеперьApplierпереопределяетinsertBottomUp(), чтобы создать дерево снизу вверх, аinsertTopDown()– чтобы создать дерево сверху вниз. (Icbdc2)Добавлен API painterResource для непрозрачной загрузки объектов Painter из растровых форматов (например, PNG) или VectorDrawable. Пользователям больше не нужно заранее определять тип объекта. Они могут вызвать этот метод, чтобы получить объект Painter для использования в композициях Image или модификаторах painter. (I2c703, b/173818471)
Добавлена фабричная функция buildAnnotatedString для создания AnnotatedString. Прекращена поддержка функции annotatedString builder. (Idfe0b)
Версия 1.0.0-alpha08
2 декабря 2020 г.
Выпущены androidx.compose.foundation:foundation:1.0.0-alpha08 и androidx.compose.foundation:foundation-layout:1.0.0-alpha08. Версия 1.0.0-alpha08 содержит следующие коммиты:
Изменения в API
- Из функции
CoreTextFieldбыл удален параметрmaxLines. Если вы хотите ограничить высоту текстового поля количеством строк, используйтеBasicTextField. (Iec002) - Изменили методы
await*TouchSlop(), чтобы они не обнаруживали нажатие указателя, и переименовали их в*OrCancellation. Также больше не требуется параметрorientationLock. (Ie96e1) - Добавлена проверка lint для названий и позиций параметров лямбда-функций, чтобы обеспечить соответствие рекомендациям Compose.
Также некоторые API, в которых в качестве названия для лямбда-функции использовался символ
children, были перенесены наcontentв соответствии с проверкой и рекомендациями. (Iec48e) foundation:foundation-textAPI перенесены вfoundation:foundation. Структура пакета не изменилась (Id3eb2).- Новый детектор жестов с несколькими касаниями, в том числе вспомогательные функции для обнаружения поворота, масштабирования и панорамирования. (Ic459d)
- Новый детектор жестов перетаскивания, приостанавливающий API ввода указателя, включая блокировку ориентации. (Icef25)
- Переименован VectorAsset в ImageVector. Перемещен и переименован VectorAsset в Builder, чтобы стать внутренним классом ImageVector в соответствии с рекомендациями совета по API. Добавлен псевдоним типа VectorAssetBuilder для ссылки на ImageVector.Builder для совместимости. (Icfdc8)
- Переименованы ImageAsset и связанные с ним методы в ImageBitmap. (Ia2d99)
- Перемещены свойства семантики в интерфейс (I6f05c)
Добавлены API прокрутки на основе сопрограмм:
Добавлены LazyListState.snapToItem и LazyListState.smoothScrollBy, а также API более низкого уровня для управления прокруткой. Эти API предоставляют интерфейс приостановки для управления прокруткой, который ожидает завершения прокрутки, прежде чем вернуться. (Ie5642)
В компоненты BasicTextField, TextField и OutlinedTextField добавлен параметр singeLine. Если задать для этого параметра значение true, текстовое поле будет представлять собой одну строку с горизонтальной прокруткой. (I57004, b/168187755)
Детектор жестов для нажатия, двойного нажатия, долгого нажатия и индикации нажатия был добавлен с помощью нового приостанавливающего указателя. Также были добавлены несколько утилит, которые упрощают написание собственных детекторов жестов. (I00807)
В библиотеку Foundation добавлен модификатор Modifier.focusable. Используйте этот метод, чтобы добавить к компоненту возможность фокусировки с правильной семантикой и доступностью. (I41eb9, b/152525426, b/162865824)
Удалены ранее признанные устаревшими API: Border (вместо него используйте BorderStroke). Функция Modifier.drawBorder удалена. Вместо нее используйте Modifier.border. Свойство Modifier.gravity было удалено. Вместо него используйте Modifier.align. Сервис Stack был удален. Вместо него используйте Box (I32c2b, b/172470874).
AbsoluteArrangement переименован в Arrangement.Absolute. (If26f2)
Исправление ошибок
- API DrawModifier перенесены из пакета androidx.compose.ui в пакет androidx.compose.ui.draw. Создан файл DrawModifierDeprecated.kt, в котором содержатся псевдонимы типов и вспомогательные методы, которые помогут перейти с устаревших API на текущие. (Id6044, b/173834241)
- Переименовано Modifier.drawLayer в Modifier.graphicsLayer. Также обновлены связанные классы до GraphicsLayer в соответствии с отзывами совета по API. (I0bd29, b/173834241)
<T>был удален из объявления SubcomposeLayout. Теперь его можно использовать без указания типа. (Ib60c8)- Поля uptime и position в PointerInputData теперь не могут быть пустыми. (Id468a)
- Теперь MaterialTheme задает правильные цвета для маркеров и фона выделения. В приложениях, не использующих Material Design, можно вручную задать цвета выделения с помощью AmbientTextSelectionColors. (I1e6f4, b/139320372, b/139320907)
- Параметр выравнивания Box был переименован в contentAlignment. (I2c957)
- Модификаторы offsetPx были переименованы в offset. Теперь они принимают параметры лямбда-функции вместо состояния. (Ic3021, b/173594846)
- Добавлен метод WindowManager.isWindowFocused, позволяющий проверить, находится ли окно хоста в фокусе, и WindowFocusObserver, который предоставляет обратный вызов onWindowFocusChanged. (I53b2a, b/170932874)
- Добавлен параметр resetInput в TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- Обновленный API TextFieldValue
- Поле TextFieldValue.composition теперь доступно только для чтения.
- Удалено исключение, возникающее при выборе недопустимого диапазона (I4a675, b/172239032).
- Устаревшие функции Ambient с суффиксом
Ambientбыли заменены новыми свойствами с префиксом Ambient, соответствующими другим функциям Ambient и рекомендациям по использованию API Compose. (I33440) - Добавлен контейнер для шрифта Android. Вы можете загрузить шрифт Android с помощью функции
typeface, напримерtypeface(Typeface.DEFAULT). Также переименовалtypefaceFromFontFamily()вtypeface()(I52ab7) - Добавлена проверка lint, чтобы убедиться, что фабрики модификаторов используют
androidx.compose.ui.composed {}, а не@Composable. (I3c4bc) - Добавлена проверка lint, чтобы убедиться, что функции фабрики модификаторов определены как расширения для модификатора, чтобы их можно было объединять в цепочки. (I07981)
- Аргумент mergeAllDescendants был переименован в mergeDescendants. (Ib6250)
- Управление временем в тестах (TestAnimationClock и его использование) теперь является экспериментальной функцией (I6ef86, b/171378521).
- Удаление старого модуля ui-test и его заглушек (I3a7cb)
- В соответствии с другими единицами измерения TextUnit.Inherit переименован в TextUnit.Unspecified. (Ifce19)
- Интерфейс выравнивания был обновлен и стал более функциональным. (I46a07, b/172311734)
- Модуль
foundation:foundation-textбыл объединен с модулемfoundation:foundation(Idac0f). - Удалены функции place(Offset) и placeRelative(Offset). Используйте перегрузки с целочисленными смещениями (I4c5e7)
idпереименован вlayoutIdдляLayoutIdParentData.Measurable.idпереименован вMeasurable.layoutId. (Iadbcb, b/172449643)
Версия 1.0.0-alpha07
11 ноября 2020 г.
androidx.compose.foundation:foundation:1.0.0-alpha07, androidx.compose.foundation:foundation-layout:1.0.0-alpha07 и androidx.compose.foundation:foundation-text:1.0.0-alpha07. Версия 1.0.0-alpha07 содержит следующие коммиты:
Изменения в API
- Как и в случае с
Modifier.fillMaxSize[Width|Height], теперь мы поддерживаем дроби вModifier.fillParentMaxSize[Width|Height]в рамкахLazyColumn/Row(I797e2, b/166586426). - Удален из общедоступного API.
KeyboardOptions.toImeOptions(Ic2e45) - Функции AmbientTextStyle, ProvideTextStyle и AmbientContentColor больше не поддерживаются. Вместо этого используйте новые версии, доступные в библиотеке материалов. Для приложений, не использующих Material Design, вам следует создать собственную систему дизайна с темами, которые можно использовать в ваших компонентах. (I74acc, b/172067770)
- foundation.Text устарел и заменен на material.Text. Если вам нужен простой текстовый API, который не использует значения из темы, ознакомьтесь с информацией о функции androidx.compose.foundation.BasicText. (If64cb)
- Добавлен параметр maxLines для текстовых полей (Ib2a5b).
- Обновление текстовых полей для поддержки KeyboardOptions (Ida7f3)
- Добавлены KeyboardOptions для использования в TextFields (I9ca32).
- Добавлен BasicText – API для работы с текстом, не имеющий отношения к дизайну и аналогичный BasicTextField. (I28268)
- Удалена аннотация ExperimentalLazyDsl. Теперь LazyColumn/LazyRow можно использовать без добавления @OptIn (Idab7a, b/166584730).
- Поддержка BaseTextField прекращена. Используйте BasicTextField. (I896eb)
- Вместо CoreTextField и BaseTextField (Id4cea) добавлен BasicTextField.
- Удаление устаревших элементов LazyColumnItems/LazyRowItems (I1d8a8)
- Удалены устаревшие функции для определения размеров на основе внутренних измерений. (I18537, b/171811496)
- Поле relativePaddingFrom переименовано в paddingFrom. Добавлен модификатор paddingFromBaseline, который позволяет задавать расстояние от границ макета до базовых линий текста. (I0440a, b/170633813)
- В модификатор aspectRatio добавлен параметр matchHeightConstraintsFirst, который позволяет указать, что модификатор должен сначала попытаться задать размер в соответствии с ограничениями по высоте, а затем – по ширине. (Ie7c43, b/155290593)
- Удален устаревший параметр DpConstraints. (I87884, b/171702471)
Исправление ошибок
- Добавлен встроенный класс ScaleFactor, который позволяет представлять коэффициенты масштабирования для горизонтальной и вертикальной осей независимо друг от друга, чтобы поддерживать случаи неравномерного масштабирования.
- В ContentScale добавлен метод computeScaleFactor
- Добавлен параметр ContentScale.FillBounds, позволяющий выполнять неравномерное масштабирование, чтобы растянуть границы источника и полностью заполнить целевую область.
- Добавлены методы оператора для вычисления параметров ScaleFactor с параметрами Size.
- (Ic96a6, b/172291582)
- Метод captureToBitmap переименован в captureToImage. (I86385)
- Помечает CoreText как @InternalTextApi. Используйте BasicText. (I6aaeb)
- Переименование KeyboardOptions в ImeOptions (I82f36)
- Перемещены KeyboardType и ImeAction в KeyboardOptions (I910ce)
- Поле CoreTextField отмечено как @InternalTextApi. Используйте BasicTextField (Ie2469)
- Аннотация ExperimentalSubcomposeLayoutApi удалена. Теперь SubcomposeLayout можно использовать без добавления @OptIn (I708ad)
- Добавлен модуль ui-test-junit4 (Ib91f8).
- Обновленный Icon API теперь принимает Color.Unspecified в качестве возможного цвета оттенка. В этом случае предоставленный объект или элемент будет отрисован без ColorFilter. Ранее попытки игнорировать оттенок с помощью Color.Unspecified приводили к тому, что оттенок становился прозрачным и ничего не отображалось. (I049e2, b/171624632)
- Класс MeasureResult был перемещен из MeasureScope. (Ibf96d, b/171184002)
- Некоторые символы, связанные с макетом, были перенесены из androidx.compose.ui в androidx.compose.layout.ui. (I0fa98, b/170475424)
- androidx.ui.test перенесен в androidx.compose.ui.test (I9ffdb)
- Константы FirstBaseline и LastBaseline перенесены в пакет androidx.compose.ui.layout (Ied2e7)
- Добавлен контейнер выбора без функции обратного вызова (Ibfadb)
- Добавлены тесты для позиций SelectionHandles в SelectionContainer. (Ie93db)
- Добавлен параметр автокоррекции клавиатуры IME (I57b8d)
Версия 1.0.0-alpha06
28 октября 2020 г.
androidx.compose.foundation:foundation:1.0.0-alpha06, androidx.compose.foundation:foundation-layout:1.0.0-alpha06 и androidx.compose.foundation:foundation-text:1.0.0-alpha06. Версия 1.0.0-alpha06 содержит следующие коммиты.
Изменения в API
- androidx.compose.foundation.Icon перенесен в androidx.compose.material.Icon. Если вы не хотите использовать библиотеку Material, то можете применить компонент Image или Modifier.paint() с Painter. (I9f622)
- Добавлен параметр interactionState в Modifier.scrollable, ScrollableColumn и LazyColumnFor (I81566, b/169509805).
- В RowScope добавлен параметр alignByBaseline, а параметр alignWithSiblings переименован в alignBy (I06503, b/170628732).
- Box стал встроенной функцией. (Ibce0c, b/155056091)
- В CoreTextField добавлен параметр maxLines (Ibee58, b/143687793)
- В CoreTextField добавлена функция переноса по словам. (I21a4b)
Исправление ошибок
- Прекратить поддержку VectorPainter в пользу rememberVectorPainter, чтобы лучше показать, что API composable-функций внутренне использует функцию remember для сохранения данных между композициями. (Ifda43)
- Включите переходы в ComposeTestRule; удалите параметр, позволяющий включить мигающий курсор из ComposeTestRule. (If0de3)
- В CoreTextField добавлена возможность использовать однострочную клавиатуру (I72e6d).
- Мы переименовали Radius API в CornerRadius, чтобы лучше отразить его использование в Compose. В документацию добавлена информация о том, что отрицательные значения радиуса скругления углов приводятся к нулю. (I130c7, b/168762961)
- Добавлена возможность указывать информацию об инспекторе в составном модификаторе (Idee08, b/163494569).
- Добавлен параметр IME KeyboardCapitalization (I8ac38)
- Исправьте положение маркера справа налево. (I6e1e0)
- Критическое изменение: удалено возвращаемое значение из PointerInputFilter.onPointerEvent(...), поскольку единственное значение, которое можно изменить в событиях указателя, – это данные о потреблении. Вместо того чтобы возвращать данные из PointerInputFilter.onPointerEvent(...), теперь можно просто изменять данные о потреблении PointerEvents, переданных в функцию. (I6acd0)
- В меню выбора добавлен вариант "Выбрать все" (Ief02b).
Версия 1.0.0-alpha05
14 октября 2020 г.
androidx.compose.foundation:foundation:1.0.0-alpha05, androidx.compose.foundation:foundation-layout:1.0.0-alpha05 и androidx.compose.foundation:foundation-text:1.0.0-alpha05. Версия 1.0.0-alpha05 содержит следующие коммиты:
Изменения в API
- CoreTextField теперь поддерживает функции курсора (Id23aa)
Устаревшие API contentColor() и currentTextStyle() заменены на AmbientContentColor и AmbientTextStyle соответственно. Чтобы получить текущее значение, используйте
.currentдля свойства ambient так же, как и для любого другого свойства ambient. Это изменение было сделано для единообразия и чтобы избежать дублирования функций. Кроме того, некоторые свойства окружения были переименованы, чтобы лучше отражать их назначение:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Исправление ошибок
- В рамках стандартизации значений sentinel для встроенных классов переименуйте Color.Unset в Color.Unspecified, чтобы обеспечить единообразие с другими встроенными классами (I97611, b/169797763).
- Добавлены действия специальных возможностей "Копировать", "Вставить" и "Вырезать" (I6db4f).
- Добавлен параметр TextOverflow.None. Если для параметра overflow задано значение None, компонент Text больше не будет обрабатывать переполнение и будет сообщать LayoutNode свой фактический размер. (I175c9, b/158830170)
- Параметры Size.Unspecified теперь имеют значение Float.NaN, а не Float.POSITIVE_INFINITY. Реализации Painter обновлены, чтобы проверять не только бесконечные размеры, но и Size.Unspecified. (I95a7e)
- Добавлен модуль Paging Compose и интеграция с пейджингом (Ib85da).
- Изменение LazyListScope для получения значений, допускающих значение NULL (I1765b)
- OnPositionedModifier переименован в OnGloballyPositionedModifier, а onPositioned() – в onGloballyPositioned(). (I587e8, b/169083903)
- Добавлены примеры для LazyColumn/Row (Idc16d)
- Исправлена ошибка, из-за которой методы items и itemsIndexed не позволяли использовать пустой список (I06647)
- Добавлен DSL для указания информации об инспекторе (Ic9a22)
- Переместите LongPress в Text. (Iff2bc)
- Отключить выделение текста и демонстрацию. (Ie7e97)
- Поддержка преобразования AnnotatedString в SpannableString для специальных возможностей. (Ief907)
- Контакт (
PointerInputFilter.onPointerInput(...)) удален. Вместо него следует использовать свойствоPointerInputFilter.onPointerEvent(...). (I6f04a)
Версия 1.0.0-alpha04
1 октября 2020 г.
androidx.compose.foundation:foundation:1.0.0-alpha04, androidx.compose.foundation:foundation-layout:1.0.0-alpha04 и androidx.compose.foundation:foundation-text:1.0.0-alpha04. Версия 1.0.0-alpha04 содержит следующие коммиты:
Изменения в API
- Приложение Stack переименовано в Box. Ранее существовавший класс foundation.Box будет объявлен устаревшим, а вместо него будет использоваться новый класс Box в compose.foundation.layout. Новый контейнер Box располагает дочерние элементы друг над другом, а не в столбец, как предыдущий. (I94893, b/167680279)
- Параметры оформления блоков больше не поддерживаются. Если вы хотите добавить к блоку декоративные элементы или отступы, используйте модификаторы (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279).
- Добавьте новый класс LazyListState. Это позволяет отслеживать и контролировать положение прокрутки компонентов LazyRow и LazyColumn. Экземпляры можно создавать с помощью функции rememberLazyListState() и передавать в параметр состояния компонента. В этой версии можно посмотреть первый видимый элемент и смещения. (Ic7cb7, b/159307669)
- Теперь позиция ленивого списка и смещение прокрутки сохраняются и восстанавливаются при воссоздании истории действий (Ie045f, b/166589058).
- Добавлено действие для семантики долгого нажатия (I6281b, b/156468846)
- Добавлена утилита MutatorMutex для сохранения одного мутатора общего состояния с течением времени и отмены конфликтующих мутаторов по приоритету (I3f975).
- Аннотируйте rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled и textInputServiceFactory с помощью @VisibleForTesting, сделайте их внутренними API и скройте их kdoc (I554eb, b/168308412).
- Удален параметр inlineContent из текстового поля. Он не будет использоваться, поскольку inlineContent должен работать с AnnotatedString. (Ief403)
- Удалены устаревшие API для специальных подборок. (Ic576d, b/168297922, b/168297923)
- Параметр
unboundedбыл добавлен в модификаторы wrapContentSize, что позволяет измерять элемент макета с бесконечными максимальными ограничениями. (I77951, b/158559319) - Мы запретили статический импорт содержимого областей макета (например, alignWithSiblings в RowScope). Вместо него следует использовать явную область действия:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)
Исправление ошибок
- Обновлены многие графические 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)
- Оптимизация производительности при прокрутке LazyColumnFor/LazyRowFor за счет отказа от ненужных повторных композиций при каждой прокрутке (I64f65, b/168293643, b/167972292, b/165028371).
- Исправлен сбой в LazyColumnFor/LazyRowFor после прокрутки и изменения элементов. Реализована автоматическая прокрутка вверх при удалении ранее видимого элемента, чтобы в конце не оставалось пустых мест (I220ab, b/161480164, b/167855468).
- Вложенные контейнеры с прокруткой в одном направлении, например ScrollableContainer и LazyColumnFor, больше не допускаются. Он никогда не поддерживался и нарушал прокрутку и все преимущества ленивой загрузки объектов LazyColumnFor (I6e101).
- Обновлены многие графические 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)
- добавьте AccessibilityScrollState в семантические свойства; (Ifeda9)
- Чтобы избежать создания объекта, сделайте TextRange встроенным. (Id034b)
- Удалено правило ParagraphConstraints. Ширина теперь передается непосредственно в абзац. (Ica712)
Версия 1.0.0-alpha03
16 сентября 2020 г.
androidx.compose.foundation:foundation:1.0.0-alpha03, androidx.compose.foundation:foundation-layout:1.0.0-alpha03 и androidx.compose.foundation:foundation-text:1.0.0-alpha03. Версия 1.0.0-alpha03 содержит следующие коммиты.
Изменения в API
- Параметр InnerPadding переименован в PaddingValues. (I195f1, b/167389171)
- Во всех API макетов слово "gravity" было заменено на "align" или "alignment". (I2421a, b/164077038)
- В Stack добавлен параметр выравнивания, позволяющий задать выравнивание по умолчанию для всех дочерних элементов Stack. (Ie80ca, b/164085265)
Исправление ошибок
- DpConstraints и API, использующие его, устарели. (I90cdb, b/167389835)
- Параметры
minWidthиmaxWidthфункцииwidthInбыли переименованы вminиmax. То же касается и кодовpreferredWidthIn,heightIn,preferredHeightIn. (I0e5e1, b/167389544) - Добавлены методы onNode и другие глобальные методы в ComposeTestRule, поскольку текущие глобальные методы будут объявлены устаревшими. (Ieae36)
- Исправлены расчеты размера и положения в GestureScope, которые, в частности, приводили к созданию недопустимых жестов пролистывания (Iaf358, b/166589947).
- Объекты "
createAndroidComposeRule" и "AndroidInputDispatcher" перемещены изandroidx.ui.test.androidвandroidx.ui.test(Idef08, b/164060572)
Версия 1.0.0-alpha02
2 сентября 2020 г.
androidx.compose.foundation:foundation:1.0.0-alpha02, androidx.compose.foundation:foundation-layout:1.0.0-alpha02 и androidx.compose.foundation:foundation-text:1.0.0-alpha02. Версия 1.0.0-alpha02 содержит следующие коммиты:
Исправление ошибок
- TestUiDispatcher помечен как экспериментальный (Iae99d, b/161247083)
Добавлен параметр
ManualFrameClock.hasAwaiters, чтобы проверить, ожидает ли что-нибудь кадр от этих часов; параметрrunWithManualClockв качестве заменыrunBlockingпри выполнении тестов, которым требуется ManualFrameClock; параметрTestUiDispatcher.Main, который обеспечивает простой доступ к основному диспетчеру интерфейса в ваших тестах.Пример:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
Версия 1.0.0-alpha01
26 августа 2020 г.
androidx.compose.foundation:foundation:1.0.0-alpha01, androidx.compose.foundation:foundation-layout:1.0.0-alpha01 и androidx.compose.foundation:foundation-text:1.0.0-alpha01. Версия 1.0.0-alpha01 содержит следующие коммиты:
Версия 0.1.0-dev
Версия 0.1.0-dev17
19 августа 2020 г.
androidx.compose.foundation:foundation:0.1.0-dev17, androidx.compose.foundation:foundation-layout:0.1.0-dev17 и androidx.compose.foundation:foundation-text:0.1.0-dev17. Версия 0.1.0-dev17 содержит следующие коммиты:
Изменения в API
- Для строк и столбцов добавлено свойство spacedBy Arrangement, позволяющее размещать дочерние элементы макета с фиксированным интервалом. Также был добавлен выровненный макет, позволяющий размещать дочерние элементы макета рядом друг с другом и выравнивать их в строке или столбце в соответствии с выравниванием. Предыдущие методы Arrangement.Vertical#arrange и Arrangement.Horizontal#arrange устарели, и в будущем написание собственных макетов не будет поддерживаться. (I6733d, b/161985975)
- Смещение стало встроенным классом (Iaec70).
- Удалены обратные вызовы onFocusChanged из TextField. Вместо него используйте Modifier.focusObserver. (I51089, b/161297615)
- Поддержка Modifier.drawBorder прекращена. Используйте Modifier.border. Класс данных Border заменен на BorderStroke (I4257d, b/158160576)
- Удалены компоненты VerticalScroller и HorizontalScroller. Вместо этого используйте ScrollableColumn/Row. Функция Modifier.drawBackground удалена. Используйте Modifier.background (I73b0d, b/163019183)
- Удалены модификаторы fillMax*, помеченные как устаревшие, из LazyItemScope, поскольку они затрудняли правильное добавление таких модификаторов для элементов, которые не являются прямыми дочерними элементами LazyColumnFor (Ifa78d).
- Добавлена реализация LazyColumn/LazyRow в виде DSL (I93cc6).
- Класс Constraints теперь встроенный (I88736)
- Добавлена возможность задавать размер макета как долю доступного пространства с помощью модификаторов fillMaxWidth, fillMaxHeight и fillMaxSize. (I945bb, b/161562591)
Исправление ошибок
- Добавлен параметр модификатора в SelectionContainer (I4aada, b/161487952)
- В SemanticsPropertyKey добавлена лямбда-функция mergePolicy. Это можно использовать для определения специального правила для семантики объединения всех дочерних элементов. По умолчанию используется значение родительского объекта, если оно задано, в противном случае – значение дочернего объекта. (Iaf6c4, b/161979921)
PlacementScope.placeAbsolute()переименован вPlacementScope.place(), а предыдущийPlacementScope.place()переименован вPlacementScope.placeRelative(). В результате методPlacementScope.place()больше не будет автоматически зеркально отражать позицию в контекстах с письмом справа налево. Если вам нужно именно это, используйте правилоPlacementScope.placeRelative(). (I873ac, b/162916675)- Удален устаревший компонент FilledTextField. Чтобы получить реализацию заполненного текстового поля в соответствии с принципами Material Design, используйте TextField. (I5e889)
- В LinearProgressIndicator добавлен параметр backgroundColor, а из CircularProgressIndicator удалены внутренние отступы. Добавлен новый параметр ProgressIndicatorConstants.DefaultProgressAnimationSpec, который можно использовать в качестве AnimationSpec по умолчанию при анимации прогресса между значениями (If38b5, b/161809914, b/161804677).
- Компонуемый элемент
state { ... }теперь считается устаревшим. Вместо него рекомендуется использовать явные вызовыremember { mutableStateOf(...) }. Это уменьшает общую поверхность API и количество концепций для управления состоянием, а также соответствует шаблонуby mutableStateOf()для делегирования свойств класса. (Ia5727) - Переименована функция RRect в RoundRect, чтобы она лучше соответствовала шаблонам именования Compose. Созданы аналогичные конструкторы функций для RRect и устаревшие конструкторы функций RRect (I5d325).
- Удалены функции onChildPositioned и OnChildPositionedModifier. Вместо этого разработчикам следует использовать onPositioned и OnPositionedModifier в дочернем макете. (I4522e, b/162109766)
- IntSize теперь встроенный класс (I2bf42)
- Нажмите и удерживайте пустую область, чтобы изменить ее. (Ib1e5b)
- Скрыть плавающую панель инструментов после нажатия на текст. (If4525)
- Скрыть плавающую панель инструментов при обновлении выделения. (I8444c)
- Снимите флажок "Когда размытие". (I781a2)
Версия 0.1.0-dev16
5 августа 2020 г.
androidx.compose.foundation:foundation:0.1.0-dev16, androidx.compose.foundation:foundation-layout:0.1.0-dev16 и androidx.compose.foundation:foundation-text:0.1.0-dev16. Версия 0.1.0-dev16 содержит следующие коммиты:
Изменения в API
- Для параметра itemContent ленивых списков добавлен LazyItemScope. Он предоставляет модификаторы, которые позволяют заполнить максимальный размер родительского элемента. Это решает проблему, когда элемент должен заполнять область просмотра, а обычный Modifier.fillMaxSize() не работает, поскольку размер элемента определяется с помощью бесконечных ограничений. (Ibd3b2, b/162248854)
- Переместить диалоговое окно в интерфейс (I47fa6)
- Добавлены LazyColumnForIndexed и LazyRowForIndexed – версии LazyColumnFor и LazyRowFor, которые предоставляют как индекс, так и элемент в itemCallback. Это может пригодиться, если вам нужно знать не только текущий элемент, но и его индекс. (I65ff3)
- Свойство Modifier.deternimateProgress переименовано в Modifier.progressSemantics (I9c0b4)
- LazyColumnItems переименован в LazyColumnFor. LazyRowItems переименован в LazyRowFor (I84f84)
- Добавьте пометки или аннотации. (I66b20)
- Пакет foundation.shape.corner был преобразован в foundation.share (I46491, b/161887429).
- Добавлен параметр crossaxis gravity для LazyRowItems/LazyColumnItems. LazyRowItems/LazyColumnItems теперь поддерживают перенос контента. (Ib39fc)
- Класс ZoomableState переименован в ZoomableController. Для функции smoothScale добавлена поддержка пользовательских кривых. Добавлены функции
enabledиonZoomStarted(If8b8f) - Компонент Material FilledTextField был переименован в TextField, а компонент TextField был переименован в BaseTextField, чтобы упростить поиск и использование API (Ia6242, b/155482676).
- Удален ранее признанный устаревшим AdapterList. Используйте LazyColumnItems (I12b9b)
- Функция Modifier.drawBackground переименована в Modifier.background (I13677).
- Удален старый DSL для ConstraintLayout. ConstraintSet2 переименован в ConstraintSet. (If58d1, b/162450908)
- Добавлены функции Modifier.absoluteOffset() и Modifier.absoluteOffsetPx(). В отличие от модификаторов смещения, модификаторы абсолютного смещения не будут автоматически зеркально отражаться в контексте справа налево (I3aa21).
- Функции
RowиColumnтеперь встроены, что значительно снижает издержки на их использование. (I75c10)
Исправление ошибок
- Исправления в 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 и удалены неиспользуемые методы
Добавлен MonotonicFrameAnimationClock, который позволяет использовать MonotonicFrameClock в качестве AnimationClockObservable, чтобы устранить разрыв между новыми часами на основе сопрограмм и API, которые по-прежнему используют старые часы на основе обратного вызова.
Эквивалентом ManualAnimationClock в MonotonicFrameClock теперь является ManualFrameClock. (I111c7, b/161247083)
Контакт (
SemanticsNodeInteraction.performPartialGesture) удален. Используйте вместо негоSemanticsNodeInteraction.performGesture. (Id9b62)Переименовано
SemanticsNodeInteraction.getBoundsInRoot()вSemanticsNodeInteraction.getUnclippedBoundsInRoot()(Icafdf, b/161336532)Обновлены API для поддержки языков с письмом справа налево. Добавлен параметр LayoutDirectionAmbient, который можно использовать для чтения и изменения направления макета. Удалены модификаторы Modifier.rtl и Modifier.ltr. (I080b3)
Метод Modifier.plus устарел. Используйте вместо него Modifier.then. Слово "затем" лучше указывает на порядок действий, а также запрещает использовать символ
Modifier.padding().background() + anotherModifier, который нарушает последовательность и затрудняет чтение (Iedd58, b/161529964).Добавлены
isFocused()иisNotFocused()SemanticsMatcher. (I0b760)Добавлен параметр RemeasurementModifier. Она позволяет пользователям синхронно пересчитывать макет. Как правило, он не нужен, поскольку перерасчет и перекомпоновка выполняются автоматически, но мы используем его в LazyColumnItems во время прокрутки. (I5f331, b/160791058)
isSystemInDarkTheme теперь всегда учитывает системную настройку темной темы и игнорирует статус энергосбережения до версии Q, следуя последним рекомендациям. (I0c10c)
Поддержка метода OnChildPositioned прекращена. Вместо этого используйте OnPositioned для дочернего элемента. (I87f95, b/162109766)
Переименовано правило AndroidComposeTestRule в createAndroidComposeRule. (I70aaf)
Добавление действия специальных возможностей для получения TextLayoutResult (I9d6e6)
Версия 0.1.0-dev15
22 июля 2020 г.
androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15 и androidx.compose.foundation:foundation-text:0.1.0-dev15. Версия 0.1.0-dev15 содержит следующие коммиты:
Чтобы использовать версию 0.1.0-dev15 Compose, вам нужно:
Обновление зависимостей
- Чтобы использовать версию
0.1.0-dev15библиотеки Compose, вам нужно обновить зависимости в соответствии с новыми фрагментами кода, приведенными выше в разделе Объявление зависимостей.
Изменения в API
- Как и в случае с новым параметром в ScrollableColumn/ScrollableRow, LazyColumnItems/LazyRowItems теперь также имеют параметр contentPadding, который позволяет добавить отступ для контента после его обрезки. Это невозможно сделать, используя только параметр модификатора. Также можно добавить интервал только перед первым или после последнего элемента. (Ibc24e)
- Обратный вызов onFocusChange в текстовых полях переименован в onFocusChanged (Ida4a1)
- Компоненты VerticalScroller и HoriziontalScroller больше не поддерживаются. Используйте ScrollableColumn и ScrollableRow, чтобы создать встроенный интерфейс с поведением и параметрами Column/Row, или Modifier.verticalScroll и Modifier.horizontalScroll для собственного элемента. Аналогично, ScrollerPosition был объявлен устаревшим в пользу ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
- Переработаны API Modifier.draggable и Modifier.scrollable. Параметр DragDirection был удален, вместо него используется параметр Orientation. Требования к штату для прокручиваемого контента упрощены. Класс ScrollableState переименован в ScrollableController (Iab63c, b/149460415)
- Свойства семантики с одним значением теперь используют стиль вызова.
Например, запись 'semantics { hidden = true }' теперь выглядит так:
semantics { hidden() }. (Ic1afd, b/145951226, b/145955412) - Размеры углов, используемые RoundedCornerShape и CutCornerShape, теперь могут превышать 50% (Id2340, b/160400213).
- Изменен параметр ContentScale по умолчанию для composable-функции Image с Inside на Fit. Это было сделано для того, чтобы при увеличении размера макета по сравнению с исходным размером объекта Painter его масштаб увеличивался с сохранением соотношения сторон. Такое поведение лучше соответствует ожиданиям при предоставлении фиксированных размеров для изображения, не влияя на поведение по умолчанию, если для вычисления размера композиции используется только внутренний размер. (I40ae3, b/159838006)
- В API верхнего уровня вместо AnimationBuilder используется AnimationSpec, чтобы уточнить концепцию статической спецификации анимации. -Улучшен DSL перехода: удалено требование к лямбда-выражению для создания AnimationSpec, например tween или spring. Вместо этого они принимают параметры конструктора напрямую. – Улучшена общая простота использования AnimationSpec. Теперь можно использовать конструкторы вместо построителей. – Длительность и задержка для KeyFrames и Tween изменены на Int. Это позволяет избежать ненужных преобразований типов и перегрузки методов (для поддержки Long и Int). (Ica0b4)
- Параметр "Возможность нажать" удален. Используйте Modifier.clickable (I84bdf).
- Добавлены LazyRowItems – аналог LazyColumnItems с горизонтальной прокруткой (Ibbcf7).
- Добавлены API анимации без сохранения состояния. Эти API (I63bf7)
- androidx.ui.foundation.TextFieldValue и androidx.ui.input.EditorValue больше не поддерживаются. Компонуемые функции TextField, FilledTextField и CoreTextField, в которых используется этот тип, также устарели. Используйте androidx.ui.input.TextFieldValue (I4066d, b/155211005).
- Заменено использование IntPx на Int. Заменено IntPxPosition на IntOffset. Параметр IntPxSize заменен на IntSize. (Ib7b44)
- androidx.ui.foundation.shape.RectangleShape удален; используйте androidx.ui.graphics.RectangleShape (I94939, b/154507984)
- Чтобы уменьшить количество классов, используемых для представления информации о размерах, стандартизируйте использование класса Size вместо PxSize. Это позволяет использовать преимущества встроенного класса, чтобы упаковать два значения с плавающей запятой, представляющие ширину и высоту, в одно значение типа long. (Ic0191)
- Чтобы уменьшить количество классов, используемых для представления информации о позиционировании, стандартизируйте использование класса Offset вместо PxPosition. Это позволяет использовать преимущества встроенного класса, чтобы упаковать два значения float, представляющие смещения x и y, в одно значение long. (I3ad98)
- Добавлен модификатор Modifier.zoomable для функции масштабирования щипком (Id5d63).
- Поддержка переключаемого компонента прекращена. Используйте Modifier.toggleable (I35220, b/157642842)
- Поддержка MutuallyExclusiveSetItem прекращена. Используйте Modifier.selectable. (I02b47, b/157642842)
- Тег TestTag больше не поддерживается. Вместо него используйте Modifier.testTag. (If5110, b/157173105)
- Добавлен параметр fontWeight в Text, который ранее был пропущен (I56937).
- В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose, чтобы для параметров пикселей использовались только Dp и примитивные типы (I19d02).
- Теперь VerticalScroller предоставляет Column по умолчанию. Теперь компонент HorizontalScroller по умолчанию предоставляет строку. (Ieca5d, b/157020670)
- В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose на использование класса Dp и примитивных типов для параметров пикселей (Iede0b).
- В пакет Foundation добавлен параметр Modifier.indication. Используйте его, чтобы показывать нажатие, перетаскивание и другие действия на ваших интерактивных элементах (I8425f, b/155287131).
- Вертикальные и горизонтальные прокрутки теперь поддерживают обратную прокрутку, если для ScrollerPosition задано значение isReversed (I953bd).
- Добавлена поддержка добавления компонентов в макет текста. (I1373c)
- Объединили реализации CanvasScope, поэтому теперь есть только DrawScope и ContentDrawScope. Переименовали CanvasScope в DrawScope. Обновлен DrawScope, чтобы реализовать интерфейс Density и предоставить LayoutDirection. Удален подкласс DrawScope в ContentDrawScope. Обновлены Painter и PainterModifier, чтобы больше не поддерживать свойство RTL, поскольку DrawScope уже предоставляет его без необходимости указывать вручную (I1798e).
- Удален устаревший API DrawBackground в пользу API расширения drawBackground на Modifier. Реализации цвета, кисти и drawBackground были переработаны, чтобы сократить количество путей кода, а также удалить требование к созданию модификатора как части композиции. (I0343a)
- Обновлены API более высокого уровня, которые предоставляют Canvas, чтобы вместо этого предоставлять CanvasScope. Это позволяет потребителям не создавать собственные объекты Paint. Пользователи, которым по-прежнему нужен доступ к Canvas, могут использовать метод drawCanvas, который предоставляет функцию обратного вызова для отправки команд рисования с помощью базового Canvas. (I80afd)
- HorizontalScroller и VerticalScroller не восстанавливают положение прокрутки с помощью сохраненного состояния экземпляра. (Ia0fae, b/155075048)
- Удален FocusManagerAmbient. Чтобы получить фокус, используйте FocusModifier.requestFocus. (Ic4826)
- Временно удалена возможность создавать таблицы. Мы планируем вернуть ее в обновленном API. (Id88a7)
Создан API CanvasScope, который оборачивает объект Canvas, чтобы предоставить поверхность API для рисования без сохранения состояния и с декларативным подходом. Преобразования содержатся в собственной области получателя, а информация о размере также ограничена соответствующими границами вставки. Для настройки операций рисования потребителю не нужно поддерживать собственный объект состояния Paint.
Добавлен CanvasScopeSample, а также обновлено демонстрационное приложение, чтобы включить демонстрацию декларативной графики (Ifd86d).
Объект ColoredRect удален. Поле "Пользователь" с модификатором drawBackground (I983c7, b/152753731)
Добавление возможности настройки цвета курсора в TextField (I6e33f)
Теперь можно скрыть или показать виртуальную клавиатуру с помощью SoftwareKeyboardController, который передается через обратный вызов onTextInputStarted (I8dc44, b/151860051).
Теперь TextFieldValue, используемый с TextField, может сохраняться при воссоздании активности, если он используется следующим образом:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }(I5c3ce, b/155075724).Добавляет часто используемые параметры в Text(). Если вы создаете локальный стиль текста, чтобы передать небольшое количество этих параметров, например
Text(style = TextStyle(textAlign = TextAlign.Center)), теперь вы можете просто указать параметры напрямую:Text(textAlign = TextAlign.Center)(I82768)Параметр focusIdentifier в CoreTextField/TextField заменен на FocusNode для интеграции с подсистемой фокуса. (I7ea48)
Обновление текстового поля: по горизонтали оно будет занимать все доступное пространство (Ib08df, b/154638552).
Добавлены InteractionState и Interaction, что упрощает создание компонентов, реагирующих на изменения состояния интерфейса, например нажатие и перетаскивание (Icfe25, b/152525426).
RectangleShape перемещен из androidx.ui.foundation.shape.* в androidx.ui.graphics.* (Ia74d5, b/154507984)
Заменили все случаи использования допускающего значение NULL типа Color в API на недопускающий значение NULL и вместо null используем Color.Unset (Iabaa7).
Обновление API TextField: функции обратного вызова onFocus и onBlur объединены в одну функцию onFocusChange(Boolean) с параметром (I66cd3).
Переименован ScaleFit в ContentScale. Перемещен ContentScale из ui-graphics в ui-core, чтобы модуль находился в том же модуле, что и API Alignment. Переименованы параметры FillMaxDimension и FillMinDimension на Crop и Fit соответственно. Переименован параметр Fit на Inside, чтобы лучше соответствовать эквивалентам ImageView.ScaleType. Добавлена документация, в которой указано, что сочетание Crop и Alignment.Center дает тот же результат, что и ImageView.ScaleType.CENTER_CROP, а Fit, используемый с Alignment.Center, дает тот же результат, что и ImageView.ScaleType.FIT_CENTER. Параметр Inside, используемый с Alignment.Center, дает тот же результат, что и ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521).
Удален параметр ProvideContentColor. Вместо него теперь используется ContentColorAmbient с
Providers(Iee942).Добавляет параметр цвета в текст, позволяя переопределять цвет стиля текста без необходимости вручную объединять его со стилем, предоставленным в теме. (I41a66)
Улучшения DrawModifier API:
- Область действия получателя для функции draw() изменена на ContentDrawScope
- Удалены все параметры в функции draw()
- У DrawScope такой же интерфейс, как и у CanvasScope.
- У ContentDrawScope есть метод drawContent() (Ibaced, b/152919067)
Поддержка ColoredRect прекращена. Вместо него используйте
Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)Система тем оформления форм обновлена в соответствии со спецификацией Material Design. Теперь вы можете указать небольшие, средние и крупные фигуры, которые будут использоваться большинством компонентов (Ifb4d1).
Замена оператора "Модификатор плюс" на функции расширения производителя (I225e4)
Свойство draggable перенесено в модификатор (Id9b16, b/151959544)
Перемещено
Textв пакет androidx.ui.foundation из androidx.ui.core. (I87ce5)Добавлен параметр
enabledв Checkbox, Switch и Toggleable (I41c16)Функция "Сдвиг" теперь называется "Модификатор". Пока Clickable не преобразован, рекомендуется использовать
Clickable(onClick = { ... }, modifier = ripple())(Ie5200, b/151331852, b/150060763).Добавлен VectorPainter API, который заменит существующий subcomposition API для векторной графики. Результатом вложенной композиции является объект VectorPainter, а не DrawModifier. Устаревшие функции DrawVector заменены на VectorPainter.
Переименован API
Image(Painter)вPaintBox(Painter). Создан компонуемый элемент Vector, который ведет себя как компонуемый элемент Image, но использует VectorAsset вместо ImageAsset (I9af9a, b/149030271).Создан компонуемый элемент Created Image, который обрабатывает размеры и макет, а также отрисовывает заданный объект ImageAsset на экране. Этот компонент также поддерживает отрисовку любого экземпляра Painter с учетом его собственного размера, а также заданного фиксированного или минимального размера (Ibcc8f).
У компонентов Button, FloatingActionButton и Clickable теперь есть отдельный параметр
enabled. Некоторые параметры кнопки были переименованы или изменены. (I54b5a)Переименовали Image в ImageAsset, чтобы лучше различать данные Image и компонент Image, который будет использоваться для макета и отрисовки контента.
Создан метод расширения для android.graphics.Bitmap,
Bitmap.asImageAsset(), чтобы создать экземпляр ImageAsset, который можно использовать для объединения традиционной разработки приложений Android с фреймворком Compose. (Id5bbd)Компонуемый элемент DrawImage был удален. Используйте ImagePainter, чтобы нарисовать изображение на существующем макете, или SimpleImage, чтобы добавить изображение, которое занимает место (I595e1, b/149827027).
Компонент Stack поддерживает направление текста справа налево (Ic9e00)
Добавлены компоненты Icon, IconButton и IconToggleButton, а компонент AppBarIcon удален. Вы можете напрямую заменить существующие экземпляры AppBarIcon на IconButton, и у них будет правильная область прикосновения. Примеры использования можно найти в разделе "Примеры", а список значков Material Icons, которые можно использовать с этими компонентами, – в разделе "Значки". (I96849)
Компонуемый элемент DrawShape удален. Используйте модификатор DrawBackground. (I7ceb2)
Добавлен компонент AdapterList – список с прокруткой, который только составляет и размещает видимые элементы. Известные проблемы: работает только в вертикальной ориентации и не всегда корректно обрабатывает изменения дочерних элементов. (Ib351b)
Добавлен прокручиваемый компонент, позволяющий создавать собственные прокручиваемые списки (I5fd37).
Переименован фон в DrawBackground и сделано так, чтобы он запоминался по умолчанию (Ia0bd3).
Добавление параметров отступов, границ, формы и фона в Box (I05027, b/148147281)
Добавлен компонент Canvas. Эта composable-функция занимает определенное место (заданное пользователем) и позволяет рисовать с помощью CanvasScope (I0d622).
переименовать модификатор
BorderвDrawBorder(I8ffcc)Добавлен компонент Box, позволяющий объединять макет и рисование. (I6e2a7)
Теперь прокрутка выполняется так же, как в Android. (I922af, b/147493715)
Функция DrawBorder заменена модификатором границ (Id335a).
Поле Modifier.tag переименовано в Modifier.layoutId, чтобы избежать путаницы с Modifier.testTag. (I995f0)
Параметр percent при создании направляющих ConstraintLayout переименован в fraction. (Ida2db)
Добавлена поддержка полей ConstraintLayout. (I47ffe)
Исправлена поддержка RTL в ConstraintLayout. Добавлены API, не поддерживающие языки с письмом справа налево. (I3b1c7)
Добавлен новый DSL для ConstraintLayout. Подробную информацию можно найти в примерах. (Icaa9a)
Добавлена аннотация @ExperimentalLayout. Теперь ConstraintLayout, FlowRow и FlowColumn помечены этим тегом, чтобы показать, что их API будут изменены. (I412a8)
Добавлен элемент
Modifier.padding(InnerPadding)(I94985, b/157133803).Удалены устаревшие атрибуты RowAlign и ColumnAlign в элементах Row и Column. (If60d4, b/155858731)
Удален устаревший метод LayoutTag(). Вместо него используйте Modifier.tag(). Удален устаревший метод Modifier.matchParent(). Вместо него используйте Modifier.matchParentSize(). (Если8044)
Добавлен модификатор макета offsetPx, который можно использовать для определения (динамических) смещений в пикселях. (I5af57)
Компонуемый элемент AlignmentLineOffset устарел. Вместо него используйте модификатор relativePaddingFrom(). Удален компонент CenterAlignmentLine. (I60107)
Добавлен модификатор макета defaultMinSizeConstraints, который устанавливает ограничения размера для обернутого макета, только если входящие соответствующие ограничения не указаны (0 для минимальных ограничений и бесконечность для максимальных ограничений). (I311ea, b/150460257)
Контейнер удален. Используйте Box (Ibbc2b, b/151407926)
Удалены устаревшие модификаторы LayoutWidth, LayoutHeight и LayoutSize. (Ib0bc1)
Добавлены значения параметров по умолчанию для модификатора смещения. (I37f06)
Добавлен модификатор симметричных полей. (I39840)
Удален устаревший модификатор LayoutAspectRatio. (I65a74)
Удалены устаревшие модификаторы LayoutAlign. (I10877)
Исправлена ошибка в модификаторах ширины и высоты, из-за которой обернутый макет измерялся без ограничений по противоположной оси. (I210b8, b/154797971)
В объекты Row и Column добавлены параметры verticalGravity и horizontalGravity соответственно. (I7dc5a)
Обновлены параметры wrapContentWidth и wrapContentHeight, чтобы они ожидали выравнивание по вертикали или горизонтали, а не любое выравнивание. Модификатор gravity теперь принимает выравнивание по вертикали или горизонтали. В Row, Column и Stack добавлена поддержка специальных непрерывных выравниваний. (Ib0728)
Теперь объект Alignment можно создавать с произвольными значениями. Добавлены выравнивания по одной оси. (Ia0c05)
Переименован EdgeInsets в InnerPadding. Параметр innerPadding для кнопок Material Buttons переименован в padding. (I66165)
Теперь alignToSiblings принимает Measured вместо Placeable. (I5788d)
Добавлены модификаторы для изменения размера на основе внутренних измерений и удалены компоненты, выполнявшие эту функцию. (I8295d)
Добавлена поддержка настройки размеров дочерних элементов ConstraintLayout (Idb1a5).
Удалены устаревшие функции Wrap и Center. (I29e23)
Добавлен LayoutModifier2 – новый API для определения модификаторов макета. LayoutModifier (If32ac) больше не поддерживается.
Теперь к элементам RowScope и ColumnScope можно получить доступ за пределами строк и столбцов. (I3a641)
Поддержка контейнера прекращена. Используйте Box. (I675ce, b/151407926)
Добавлен модификатор LayoutOffset для смещения позиции макета (I0b8a3)
Первоначальная поддержка макетов с письмом справа налево в Compose (Ia5519)
Параметр LayoutAlign больше не заполняет доступное пространство (I2b14f).
Удален компонент AspectRatio в пользу модификатора. Удалены устаревшие композиции FlexColumn и FlexRow, а также модификатор Spacing (Iec8a7).
Удален модификатор LayoutInflexible для строк и столбцов (I0d820).
Реализуйте маркеры перетаскивания, чтобы изменить выделение для TextField. (I27032)
Реализована функция LongPressAndDrag для выделения текста в TextField. (I17919)
Исправление ошибок
- FocusModifier устарел. Вместо него используйте Modifier.focus, Modifier.focusRequester и Modifier.focusObserver. Классы FocusState и FocusDetailedState устарели. Вместо них следует использовать класс FocusState2 (I46919, b/160822875, b/160922136).
runOnIdleComposeпереименован вrunOnIdle(I83607)- Некоторые API для тестирования были переименованы, чтобы их названия были более понятными. Все API findXYZ переименованы в onNodeXYZ. Все API doXYZ были переименованы в performXYZ. (I7f164)
- Удален ранее признанный устаревшим Modifier.ripple. Теперь в качестве индикатора по умолчанию используется эффект пульсации (если в приложении задана тема MaterialTheme {}), поэтому в большинстве случаев достаточно просто использовать clickable, чтобы получить эффект пульсации. Если вам нужно настроить цвет, размер или параметр bounded для эффекта пульсации, вы можете вручную создать RippleIndication и передать его в clickable как параметр indication. (I663b2, b/155375067)
- Удалены устаревшие API для тестирования размера. (Iba0a0)
- Сделан экспериментальным API LayoutNode (I4f2e9)
- В Compose реализована блокировка ориентации прокрутки версии 1. (I1ce7a, b/150289741)
- Всплывающие окна, диалоговые окна и меню теперь наследуют контекстную тему MaterialTheme (Ia3665, b/156527485).
- Удален параметр направления макета из блока измерения функции Layout(). Однако направление макета доступно в обратном вызове через объект области действия измерения (Ic7d9d).
- Добавлен параметр AbsoluteArrangement, позволяющий размещать дочерние элементы в строке без автоматического зеркального отображения в режиме RTL (I3a1df).
- Аннотация @Untracked больше не поддерживается. Замените на @ComposableContract(tracked=false) (Id211e)
- До этого изменения плагин компилятора Compose перехватывал вызовы конструкторов внутри composable-функции, если существовала ошибка I5205a (b/158123804).
- Добавлена composable-функция
viewModel(), которая позволяет создавать или получать уже созданные объекты ViewModel так же, как это делается в Activity или Fragment (I5fdd1). Класс Radius был преобразован в класс inline. Удалены методы создания дополнительных объявлений. Вместо них используется конструктор функций с параметром по умолчанию, чтобы радиус по оси Y совпадал с обязательным параметром радиуса по оси X.
Обновлена функция DrawScope.drawRoundRect, которая теперь принимает один параметр Radius вместо двух отдельных значений float для радиуса по осям X и Y (I46d1b).
В рамках масштабной реорганизации кода мы заменили класс Px в различных классах Compose на Dp и примитивные типы для параметров пикселей. Удален весь класс Px (I3ff33).
В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose, чтобы для параметров пикселей использовались только Dp и примитивные типы (I086f4).
В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose, чтобы для параметров пикселей использовались только Dp и примитивные типы (Id3434).
В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose на использование только Dp и примитивных типов для параметров пикселей (I97a5a).
У курсора TextField есть мигающая анимация (Id10a7)
Для частичных жестов больше не требуется передавать GestureToken (Id7ae5).
В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose на использование только Dp и примитивных типов для параметров пикселей (I57bff).
Свойство Modifier.semantics снова доступно для использования в компонентах высокого уровня. (I4cfdc)
Переименован метод AnnotatedString.Builder.addAnnotationString в addStringAnnotation. (I5059e)
Обновлен Alignment API и добавлена поддержка абсолютного выравнивания (которое не зеркально отражается в контексте RTL) (I38cd3).
Дочерние элементы Layout и LayoutModifier можно измерять с другим направлением макета. (Ibd731)
Добавлен необязательный параметр rect в ImagePainter, чтобы можно было рисовать фрагмент базового объекта ImageAsset (I0ea9e).
Исправлен сбой в AdapterList при удалении элементов (Ic64b0, b/153195921).
Мы изменили способ измерения первого макета, который вы помещаете в блок activity.setContent { }. Раньше оно занимало весь экран, а теперь ведет себя так, как если бы вы поместили макет в Stack: оно может быть меньше экрана и будет расположено в левом верхнем углу. Если вы хотите, чтобы макет занимал все доступное пространство, примените к нему Modifier.fillMaxSize(). (Ie88a7, b/153453714)
Модуль ui-text-compose переименован в ui-text. Теперь ui-text содержит композиции CoreText и CoreTextField (Ib7d47).
Модуль ui-text переименован в ui-text-core (I57dec).
Компонуемые функции ui-framework/CoreText и CoreTextField перенесены в ui-text-compose. Возможно, вы захотите добавить ui-text-compose в свой проект. (I32042)
runOnIdleComposeиrunOnUiThreadтеперь глобальные функции, а не методы ComposeTestRule. (Icbe8f)[Mutable]Операторы делегирования свойств State перенесены в расширения, чтобы поддерживать оптимизацию делегирования свойств Kotlin 1.4. Чтобы продолжить использовать
by state { ... }илиby mutableStateOf(...), вызывающие абоненты должны добавить импорты. (I5312c)Теперь по умолчанию для DrawLayerModifier и drawLayer() задано значение false для clipToBounds и clipToOutline. (I0eb8b, b/152810850)
Класс LayoutResult переименован в MeasureResult. (Id8c68)
Компонуемый элемент Center больше не поддерживается. Его следует заменить на модификатор LayoutSize.Fill + LayoutAlign.Center или на один из компонентов Box или Stack с подходящими модификаторами (Idf5e0).
Переименован макет LayoutFlexible в LayoutWeight. Параметр "Плотный" переименован в "Заливка". (If4738)
Функция DrawVector была изменена с обычной composable-функции на функцию, возвращающую модификатор drawVector(), который будет рисовать вектор в качестве фона макета. (I7b8e0)
Замените composable-функцию Clip на модификатор drawClip(). Модификатор DrawClipToBounds удобно использовать, когда нужно обрезать изображение по границам слоя с помощью прямоугольной формы. (If28eb)
Компонуемая функция DrawShadow заменена на модификатор drawShadow(). Тени теперь рисуются как часть LayerModifier. (I0317a)
Класс androidx.compose.ViewComposer перенесен в androidx.ui.node.UiComposer. Класс androidx.compose.Emittable удален. Он был избыточным по отношению к ComponentNode. androidx.compose.ViewAdapters был удален. Они больше не поддерживаются. Поддержка Compose.composeInto прекращена. Используйте
setContentилиsetViewContent. Поддержка метода Compose.disposeComposition прекращена. Вместо этого используйте методdisposeдля объектаComposition, возвращенного методомsetContent. Функция androidx.compose.Compose.subcomposeInto перенесена в androidx.ui.core.subcomposeInto. Метод ComponentNode#emitInsertAt переименован в ComponentNode#insertAt. Метод ComponentNode#emitRemoveAt переименован в ComponentNode#removeAt. Метод ComponentNode#emitMode переименован в ComponentNode#move (Idef00).Устаревшая composable-функция Wrap. Его можно заменить модификатором LayoutAlign или композицией Stack (Ib237f).
Направление макета теперь передается от родительского узла макета дочерним. Добавлен модификатор направления макета. (I3d955)
Переименуйте Painter.toModifier в Painter.asModifier, поскольку у созданного модификатора есть ссылка на исходный объект Painter, который можно использовать в нескольких экземплярах Modifier (I7195b).
Поддержка направления справа налево в модификаторе LayoutPadding (I9e8da)
Параметры "Плотность" и "Область плотности" объединены в один интерфейс. Вместо ambientDensity() теперь можно использовать DensityAmbient.current. Вместо withDensity(density) используйте with(density) (I11cb1).
Удален класс ValueHolder. Изменена структура классов AnimatedValue и AnimatedFloat, чтобы поле значения анимации было абстрактным и подклассы могли отслеживать его обновление.
- Добавлены классы моделей для AnimatedValue, AnimatedFloat и т. д.
- Добавлен новый набор простых API @Composable для анимации между значениями.
- (I79530)
Критические изменения в API для фоновых функций. Подробную информацию можно найти в документации по журналам и
Ambient<T>(I4c7ee, b/143769776).Позиции линий выравнивания типа Int, возвращаемые из Placeable#get(AlignmentLine), теперь не могут быть нулевыми. Если запрошенная линия выравнивания отсутствует, будет возвращено значение AlignmentLine.Unspecified. (I896c5, b/158134875)
Исправлена ошибка ConstraintLayout, из-за которой происходил сбой при повторной композиции. (Ibee5a, b/158164341)
Изменен API конечной лямбда-функции WithConstraints. Теперь вместо двух параметров используется область действия получателя, которая помимо ограничений и направления макета предоставляет свойства minWidth, maxWidth, minHeight и maxHeight в единицах dp (I91b9a, b/149979702).
Класс LayoutModifier2 переименован в LayoutModifier. (Id29f3)
Встроенные функции измерений в Layout и LayoutModifier2 теперь имеют получатель IntrinsicMeasureScope, который предоставляет API запроса встроенных значений с неявно распространяемым направлением макета. (Id9945)
LayoutDirectionAmbient больше не поддерживается. Чтобы прочитать направление макета, заданное в региональных настройках, используйте localeLayoutDirection в ConfigurationAmbient (I851b1).
Добавлены positionInParent и boundsInParent для LayoutCoordinates. (Icacdd, b/152735784)
Компонуемый элемент ParentData устарел. Вам нужно создать модификатор, который реализует интерфейс ParentDataModifier, или использовать модификатор LayoutTag, если вам просто нужно пометить дочерние элементы макета, чтобы распознавать их в блоке измерения. (I51368, b/150953183)
Добавьте OnPositionedModifier и OnChildPositionedModifier, чтобы заменить функции OnPositioned и OnChildPositioned. (I2ec8f)
Запрет на отрицательные значения отступов в LayoutPadding. Для отрицательных смещений позиции следует использовать LayoutOffset. (Ifb5b1)
В функцию WithConstraints добавлен параметр LayoutDirection (I6d6f7)
Флаг
ComposeFlags.COMPOSER_PARAMбыл изменен наtrue, что повлияет на стратегию генерации кода для плагина Compose. В общих чертах это приводит к тому, что функции @Composable генерируются с дополнительным синтетическим параметром, который передается последующим вызовам @Composable, чтобы среда выполнения могла правильно управлять выполнением. Это значительное изменение, однако оно должно сохранить совместимость на уровне исходного кода во всех разрешенных случаях использования Compose. (I7971c)Изменено свойство LayoutCoordinates, чтобы providedAlignmentLines было не картой, а набором. Для получения значения теперь используется оператор get(). Это позволяет модераторам изменять одно или несколько значений набора, не создавая для каждого модератора новую коллекцию. (I0245a)
У LayoutCoordinates больше нет свойства position. Свойство position не имеет смысла при использовании LayoutModifiers, поворота или масштабирования. Вместо этого разработчикам следует использовать parentCoordinates и childToLocal(), чтобы рассчитать преобразование из одной LayoutCoordinate в другую.
В LayoutCoordinates для свойства size используется IntPxSize вместо PxSize. В макетах используются размеры в целых пикселях, поэтому все размеры макетов должны быть целыми числами, а не числами с плавающей запятой. (I9367b)
Улучшения API для ограничений (I0fd15)
Добавлен параметр TextDirection.Content (I48f36).
Настройте меню панели инструментов, чтобы команды "Копировать", "Вырезать" и "Вставить" отображались корректно. (Id3955)
Добавлена плавающая панель инструментов для выделения текста в текстовом поле. (Ie8b07)
Алгоритм определения направления текста переименован в "Направление текста" (I75ce8)
Поле TextDirection переименовано в ResolvedTextDirection (I3ff38)
Добавление HapticFeedback в TextField Selection. (I58050)
Добавлены методы копирования, вырезания и вставки в выделение TextField. (Idb70b)
Удалены TestTag и Semantics. Вместо этого используйте Modifier.testTag и Modifier.semantics (I15ff0, b/158841414).
Изменено название пакета для Locale и LocaleList с androidx.ui.text на androidx.ui.intl (I8132c).
Изменение API:
AnnotatedString(builder: Builder)переименован вannotatedString(builder: Builder). (Ia6377)Изменение API:
AnnotatedString.Itemпереименован вAnnotatedString.Range. (I2d44d)Добавлена панель инструментов для работы с текстом. (I49d53)
Теперь доступен новый LifecycleOwnerAmbient. Теперь Activity, используемый с Compose UI, должен расширять androidx.activity.ComponentActivity (или AppCompatActivity). Метод setContent в android.app.Activity объявлен устаревшим (Idb25a, b/153141084).
Название пакета ui-android-text (androidx.text) заменено на androidx.ui.text.platform в соответствии с правилами androidx. (I42711)