Compose Foundation

Создавайте приложения Jetpack 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 из TextFieldBuffer API, которые отслеживают изменения (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 добавлен альтернативный API coroutineScopeOrNull() для доступа к родительской области сопрограммы диспетчера. (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 при использовании в LookaheadScope I286ad

Версия 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 содержит эти коммиты.

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

Версия 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 фокус будет автоматически сбрасываться, если нажатие происходит за пределами узла, на котором установлен фокус. В результате пользователь сможет убрать фокус, нажав на экран, что более ожидаемо, чем текущее поведение при использовании указателя. От этого поведения можно отказаться с помощью нового API AbstractComposeView.isClearFocusOnPointerDownEnabled. (I6322b, b/282963174)
  • Теперь Scrollable лучше поддерживает события прокрутки колесиком мыши в двух измерениях. В MouseInjectionScope появился новый тестовый API, который помогает тестировать варианты использования. Мы также добавили новую перегрузку для методов прокрутки в MouseInjectionScope и флаг для управления новым поведением под названием isMouseWheel1DAxisLockingEnabled (I136df).
  • В DragGestureNode теперь используется необработанный ввод указателя вместо приостановки ввода указателя для оптимизации. Изменения добавлены после флага isNonSuspendingPointerInputInDraggableEnabled (I0fa4b).
  • Добавлена аннотация @FrequentlyChangingValue к некоторым API AnchoredDraggable. 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 в соответствии с другими API DraggableAnchors. (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, который используется для пунктов контекстного меню, добавленных для действий с объектом Intent PROCESS_TEXT. (If0ac4)
  • Сделайте API контекстного меню общедоступными. Добавлены объекты Modifier.addTextContextMenuComponents и Modifier.filterTextContextMenuComponents для добавления и удаления элементов в контекстном меню. Кроме того, мы сделали общедоступными следующие элементарные API, чтобы вы могли создавать собственные контекстные меню:
    • TextContextMenuProvider
    • TextContextMenuDataProvider
    • TextContextMenuData
    • TextContextMenuComponent
    • LocalTextContextMenuDropdownProvider
    • LocalTextContextMenuToolbarProvider (I1b7b0)
  • Сделайте LazyLayoutItemProvider стабильной (Icce09, b/261565751)
  • Добавлены умные функции выбора для Android, которые можно включить или отключить с помощью ComposeFoundationFlags.isSmartSelectionEnabled. Кроме того, в нем был представлен статический тег compositionLocal LocalTextClassifierCoroutineContext, который можно использовать, чтобы указать 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. Используйте API TextAutoSize, которые выполняют те же функции. (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)
  • Переписать requestAutofill API, чтобы он не зависел от менеджера автозаполнения. (Id1929)
  • ContextualFlowRow и ContextualFlowColumn отмечены как устаревшие. Этот экспериментальный компонент был представлен в версии 1.7 и ещё не был стабилизирован, а его реализация была признана нежелательной. В будущем может быть предоставлен компонент, решающий задачи, для которых был предназначен этот компонент.
    • В версии 1.7 были добавлены экспериментальные перегрузки функций FlowRow и FlowColumn, которые включают параметр overflow. Использование этого параметра прекращено. Вместо него можно использовать перегрузки без этого параметра. По умолчанию для этих перегрузок будет использоваться поведение "Clip", как и раньше.
    • Многие задачи, для которых используется ContextualFlowRow, можно решить с помощью FlowRow, но мы понимаем, что это не всегда так. ContextualFlowRow полностью реализуется в пространстве пользователя, и вы можете попытаться скопировать его реализацию и адаптировать ее по своему усмотрению. В будущем мы планируем реализовать эти функции другим способом. (Ibafec)

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

  • Исправлена ошибка, из-за которой многоточие в макете текста иногда переводилось неправильно во время анимации. Подробнее: 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 по умолчанию. API TapGestureDetector теперь по умолчанию используют новое поведение диспетчеризации (немедленную диспетчеризацию). (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. Это позволяет создавать более эффективные реализации индикаторов по сравнению с предыдущим (теперь устаревшим) API rememberUpdatedInstance. Информацию о переходе можно найти на сайте developer.android.com.
    • Параметры clickable, combinedClickable, selectable и toggleable теперь принимают параметр MutableInteractionSource, допускающий значение NULL. Если значение равно null, а предоставленный объект Indication является объектом IndicationNodeFactory, то объект Indication можно создать только при необходимости, что повышает производительность. Если вы не поднимаете и не используете MutableInteractionSource, рекомендуем передавать значение null вместо remember { MutableInteractionSource() }.
    • Поддержка Indication#rememberUpdatedInstance прекращена. Она значительно снижает производительность и не позволяет выполнять другие оптимизации. Вместо этого используйте новый API IndicationNodeFactory.
  • 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).
  • Источники NestedScroll Drag 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 содержит эти коммиты.

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

  • Функции, связанные с вводом текста, SemanticsNodeInteraction performTextReplacement, 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, по умолчанию предварительно загружаются первые два вложенных элемента каждой сетки, но это можно настроить с помощью новых API LazyGridPrefetchStrategy(nestedPrefetchItemCount) и LazyListPrefetchStrategy#onNestedPrefetch. (I591c4)
  • Переименован элемент SemanticsProperties.Editable в IsEditable, а значение SemanticsPropertyReceiver.editable изменено на isEditable. Теперь это логическое значение, которое всегда указывается в текстовых полях. (I8acd8)
  • Значения по умолчанию из basicMarquee перемещены в объект MarqueeDefaults. (I12ff6)
  • Параметр basicMarquee delayMillis переименован в 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. По умолчанию предварительно загружаются первые два вложенных элемента, но это поведение можно контролировать с помощью новых API LazyLayoutPrefetchStrategy(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 и связанный с ним LocalContextMenuTheme ProvidableCompositionLocal. Цвета контекстного меню в текстовых полях и выделяемом тексте можно изменить, указав локаль композиции. (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)
  • Источники NestedScroll Drag 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 по сравнению с предыдущим (теперь устаревшим) API rememberUpdatedInstance. Информацию о переходе можно найти на сайте 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 прекращена. Она значительно снижает производительность и не позволяет выполнять другие оптимизации. Вместо этого используйте новый API IndicationNodeFactory.

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

  • Теперь при передаче параметра VisualTransformation BasicTextField будет предварительно проверять небольшое количество сопоставлений смещений. Это помогает выявлять распространенные ошибки в коде, которые приводят к невосстановимым исключениям на более поздних этапах измерения или отрисовки. Если выбрасывать исключения во время композиции, разработчики с большей вероятностью обнаружат ошибки на этапе разработки, что поможет избежать сбоев в рабочей среде. (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 добавлен в dragAndDropTarget Modifier, чтобы принимать файлы, перетаскиваемые в сеансе. Эта лямбда-функция возвращает допустимый объект 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, основанные на нем), которые сохраняются для повторного использования в будущем, считаются деактивированными. Для тестирования таких узлов был представлен новый API assertIsDeactivated(). Остальные тестовые 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, которые принимают неизменяемое значение и обратный вызов для изменения этого значения, как и текущий API BasicTextField. (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, которые принимают неизменяемое значение и обратный вызов для изменения этого значения, как и текущий API BasicTextField. (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.consumedWindowInsets API больше не поддерживается. Используйте вместо него 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 заменяет Swipeable API 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.Node API, что позволило снизить нагрузку на начальную композицию.
  • Повышена стабильность пейджеров. Исправлено множество ошибок.
  • Параметры 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)
  • LazyStaggeredGrid API переведены в стабильную версию. (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)

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

  • BasicTextField cursorBrush теперь может быть анимирован без перезапуска таймера указателя. (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, который мы используем для создания ленивых списков и сеток.
  • OverscrollEffect API представлен в экспериментальном режиме. Вы можете задать собственные эффекты достижения конца прокрутки, а также добавить стандартный эффект платформы в контейнеры с возможностью прокрутки.
  • Представлены 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)
  • В LazyLayoutItemProvider API вместо фабрики, возвращающей 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)
  • Добавлен новый экспериментальный LazyLayout API. Это позволяет создавать собственные компоненты, например 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)
  • Конструктор 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 для быстрого доступа к setSystemGestureExclusionRects Android (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 от Kotlin 1.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 и AGP 7.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-text API перенесены в 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")
        }
    }
    

    (I0a85b, b/161247083)

Версия 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)
    1. Удаление неиспользуемого интерфейса OffsetBase
    2. Приведение классов Offset и IntOffset к единому API
    3. Переименование IntOffset.Origin в IntOffset.Zero для соответствия Offset API
    4. Метод nativeCanvas перенесен из интерфейса Canvas для поддержки потребителей при создании собственных экземпляров Canvas.
    5. Создан класс-заглушка EmptyCanvas, чтобы переработать DrawScope и сделать его ненулевым параметром вместо lateinit, а также обеспечить ненулевое значение поля.
    6. Переименованы перечисления ClipOp в Pascal Case
    7. Переименованы перечисления FilterQuality в Pascal Case
    8. Переименованы перечисления StrokeJoin в Pascal Case
    9. Переименованы перечисления PointMode в Pascal Case
    10. Переименованы перечисления PaintingStyle в Pascal Case
    11. Переименованы перечисления PathFillType в Pascal Case
    12. Переименованы перечисления StrokeCap в Pascal Case
    13. Обновлена реализация DrawCache, чтобы больше не использовать параметры lateinit.
    14. В DrawScope больше не используется отложенная делегация для внутренних параметров fillPaint и strokePaint.
    15. Обновлен компонент Image, чтобы избежать использования Box и снизить нагрузку.
    16. Добавлены аннотации @Immutable в класс Outline
    17. Обновление PathNode: добавлены аннотации @Immutable для каждой инструкции пути
    18. Вложенная композиция Vector обновлена: удалены лишние условные проверки на равенство, поскольку они уже обрабатываются в Compose.
    19. Устаревшие методы конструктора Rect companion заменены на конструкторы функций
    20. Обновлены классы кистей и конструкторы функций с помощью API @Immutable и @Stable
    21. Переименовано перечисление VertexMode в PascalCase
    22. Обновлен метод selectPaint в DrawScope, чтобы условно перезаписывать параметры обводки в paint, если они изменились.
    23. Обновлен размер: добавлен 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)