Создать интерфейс
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
( См. справочную документацию по API для всех пакетов создания )
Последнее обновление | Стабильный выпуск | Кандидат на выпуск | Бета-версия | Альфа-релиз |
---|---|---|---|---|
18 сентября 2024 г. | 1.7.2 | - | - | 1.8.0-альфа02 |
Структура
Compose — это комбинация 7 идентификаторов групп Maven в androidx
. Каждая группа содержит целевой подмножество функций, каждая из которых имеет собственный набор примечаний к выпуску.
В этой таблице описаны группы и ссылки на каждый набор примечаний к выпуску.
Группа | Описание |
---|---|
сочинить.анимацию | Создавайте анимацию в своих приложениях Jetpack Compose, чтобы улучшить взаимодействие с пользователем. |
compose.compiler | Преобразуйте функции @Composable и включите оптимизацию с помощью плагина компилятора Kotlin. |
compose.foundation | Создавайте приложения Jetpack Compose с готовыми к использованию стандартными блоками и расширяйте основу для создания собственных элементов системы проектирования. |
составить.материал | Создавайте пользовательские интерфейсы 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 Compiler. |
Compose.ui | Фундаментальные компоненты пользовательского интерфейса, необходимые для взаимодействия с устройством, включая макет, рисование и ввод. |
Объявление зависимостей
Чтобы добавить зависимость от Compose, вам необходимо добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .
Добавьте зависимости для нужных вам артефактов в файл build.gradle
для вашего приложения или модуля:
классный
dependencies { implementation "androidx.compose.ui:ui:1.7.2" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Котлин
dependencies { implementation("androidx.compose.ui:ui:1.7.2") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .
Обратная связь
Ваши отзывы помогают сделать Jetpack лучше. Дайте нам знать, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.
Дополнительную информацию см . в документации по системе отслеживания проблем .
Версия 1.8
Версия 1.8.0-альфа02
18 сентября 2024 г.
Выпущен androidx.compose.ui:ui-*:1.8.0-alpha02
. Версия 1.8.0-alpha02 содержит эти коммиты .
Изменения API
-
TextOverflow.StartEllipsis
иTextOverflow.MiddleEllipsis
теперь доступны, что позволяет размещать многоточие в начале или середине строки однострочного текста. ( I38913 , б / 185418980 )
Исправления ошибок
- Исправление Далога
dismissOnClickoutside
( 39a3d , b/364508685 ) - Не обрезать тени содержимого диалога ( e8e2f , b/363027803 )
- Исправление ошибочного поведения при перемещении фокуса поиска между созданием и представлением ( 58377 , b/350534714 ).
Внешний вклад
-
Map
AlignmentLines
теперь принимает конкретные типыVerticalAlignmentLine
илиHorizontalAlignmentLine
. ( I02912 ) - Новый общий метод
ByteArray.decodeToImageBitmap(): ImageBitmap
. ( I83c21 )
Версия 1.8.0-альфа01
4 сентября 2024 г.
Выпущен androidx.compose.ui:ui-*:1.8.0-alpha01
. Версия 1.8.0-alpha01 содержит эти коммиты .
Версия 1.7
Версия 1.7.2
18 сентября 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.2
. Версия 1.7.2 содержит эти коммиты .
Исправления ошибок
- Повышена производительность информации об узле доступности и событий семантики за счет удаления подробной трассировки. ( I89156 , б / 362530618 )
-
ComposeView
больше не будет аварийно завершать работу при передаче исключительно большого размера измерения ( da5db , b/347036173 ). - Исправлена проблема с программой чтения с экрана специальных возможностей, из-за которой объявления
LiveRegion
на кнопках не отображались. ( ф66фа7 , б/348590026 )
Версия 1.7.1
10 сентября 2024 г.
- Никаких изменений в артефактах Android. Артефакты
-desktop
были удалены и добавлены артефакты-jvmStubs
и-linuxx64Stubs
. Ни одна из этих целей не предназначена для использования, они являются заполнителями, помогающими Jetbrains Compose.
Версия 1.7.0
4 сентября 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0
.
Важные изменения с версии 1.6.0
Важные изменения в версии 1.7.0 описаны в этом блоге .
Версия 1.7.0-rc01
21 августа 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-rc01
. Версия 1.7.0-rc01 содержит эти коммиты .
Заметные изменения
- Модуль ui:ui теперь требует, чтобы минимальная версия Foundation:found была не ниже 1.7.0-rc01 или новее. Это необходимо для устранения несовместимости поведения между пользовательским интерфейсом и основой в отношении изменений
NestedScrollSource
, которые произошли в начале версии 1.7.0-alpha01.
Версия 1.7.0-beta07
7 августа 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-beta07
. Версия 1.7.0-beta07 содержит эти коммиты .
Исправления ошибок
- Функции
SemanticsNodeInteraction
связанные с вводом текста,performTextReplacement
,performTextInput
иperformTextClearance
теперь будут выдавать ошибки утверждения, когда они вызываются дляTextFields
только для чтения. ( I4ae8f )
Версия 1.7.0-beta06
24 июля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-beta06
. Версия 1.7.0-beta06 содержит эти коммиты .
Версия 1.7.0-бета05
10 июля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-beta05
. Версия 1.7.0-beta05 содержит эти коммиты .
Исправления ошибок
- Исправлена ошибка, из-за которой при смене программной клавиатуры
TextField
не принимал вводимые данные с новой клавиатуры до тех пор, пока фокус не был потерян и не восстановлен. - Исправлена проблема, из-за которой попытки сохранить содержимое слоя приводили к непредвиденным побочным эффектам при рендеринге с использованием содержимого
SurfaceView
.
Версия 1.7.0-beta04
26 июня 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-beta04
. Версия 1.7.0-beta04 содержит эти коммиты .
Исправления ошибок
- Избегайте сбоев при измерении очень больших текстовых строк (например, 10 тыс. символов) ( 8157ab ).
- Отключите поддержку программного рендеринга для API
GraphicsLayer
. ( 35ддд8 ) - Исправлен сбой в логике сохранения слоев. ( 70б13е )
- Оптимизация повторного использования объектов слоя была отменена, поскольку это вызывало проблемы с рендерингом. ( 70б13е )
Версия 1.7.0-бета03
12 июня 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-beta03
. Версия 1.7.0-beta03 содержит эти коммиты .
Версия 1.7.0-бета02
29 мая 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-beta02
. Версия 1.7.0-beta02 содержит эти коммиты .
Изменения API
-
SemanticsProperties.Editable
переименован вIsEditable
и замененSemanticsPropertyReceiver.editable
на значениеisEditable
. Свойство теперь является логическим и всегда указывается в текстовых полях. ( I8acd8 ) - Переименуйте параметр теста доступности. ( I3d440 )
- Обновлен API для стилизации ссылок:
TextLinkStyles
теперь является частью конструктораLinkAnnotation
и методаAnnotatedString.fromHtml
( I90b2b ). Также удаленыTextDefaults
из материала ( I5477b ).
Исправления ошибок
-
LayoutCoordinates.introducesFrameOfReference
переименован вLayoutCoordinates.introducesMotionFrameOfReference
чтобы лучше отражать его назначение. Связанная функция переименована для расчета координат на основе этого флага. ( I3a330 )
Версия 1.7.0-бета01
14 мая 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-beta01
. Версия 1.7.0-beta01 содержит эти коммиты .
Изменения API
-
performCustomAccessibilityActionLabelled
переименована вperformCustomAccessibilityActionWithLabel
иperformCustomAccessibilityActionWhere
вperformCustomAccessibilityActionWithLabelMatching
. ( I5387f ) -
AnnotatedString.hasEqualsAnnotations
теперь имеетhasEqualAnnotations
( I685c0 ). - Обновлен API для получения тематических ссылок Material в тексте. В частности, из
TextDefaults
удалены методы для создания тематическихLinkAnnotations
и анализа HTML с тематическими ссылками. Вместо этого добавлен классTextLinkStyles
, который позволяет стилизовать ссылки в качестве параметра составного текста. ( I31b93 )
Исправления ошибок
- Исправляет дополнительные случаи использования при динамическом добавлении модификаторов ввода указателя во время событий 63e1504.
Версия 1.7.0-альфа08
1 мая 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-alpha08
. Версия 1.7.0-alpha08 содержит эти коммиты .
Изменения API
- Добавляет поддержку изменяемых реализаций фигур.
Shape#createOutline
теперь наблюдается внутри графических слоев, поэтому чтение значений состояния внутри приведет к недействительности при изменении состояния, что позволяет создавать более производительную анимацию фигур. ( Id1629 , б/326070216 ) - Переименован
isPositionedByParentWithDirectManipulation
, чтобыintroducesFrameOfReference
. Обратите внимание, что теперь это имеет обратный эффект: по умолчанию большинствоLayoutCoordinates
вводят систему отсчета, и только при прямом манипулировании свойство будет иметь значение false. Чтобы запросить позицию только тех, которые вводят систему отсчета, используйтеpositionInLocalFrameOfReference(...)
. ИлиpositionInLocalLookaheadFrameOfReference
изLookaheadScope
. ( Ifc5f7 ) - API-интерфейсы
LookaheadScope
стали стабильными ( I21507 ). - Измените лямбду действия для
getScrollViewportLength
в соответствии с отзывами совета API. ( Ibc74a ) - Обновлены API-интерфейсы структуры
GraphicsLayer
для использования параметров с плавающей запятой вместо int. Удалены дозорные значенияUnsetOffset/UnsetSize IntSize
в пользу уже существующих констант Unspecified во встроенных классах Offset и Size на основе плавающей точки ( I2fb03 , b/333863462 ). - При вводе ввода мыши во время тестов
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
,MouseInjectionScope.longClick()
теперь принимают параметрbutton: MouseButton
чтобы сделать их более универсально применимыми. Значением по умолчанию для всех методов являетсяMouseButton.Primary
. ( I31a23 , б / 190493367 , б / 261439695 ) - Переименован
onClicked
вonClick
внутриLinkInteractionListener
. ( Iaa35c ) - Переименуйте
TextInclusionStrategy.isInside
вisIncluded
. Сделайте тип возвращаемого значенияParagraph/MultiParagraph#getRangeForRect()
не допускающим значения NULL. ( I51f26 )
Исправления ошибок
- Исправлен длинный снимок экрана для прокручиваемых контейнеров с
reverseScrolling=true
. ( I7c59c )
Внешний вклад
- Добавлена поддержка предварительной выборки элементов во вложенных
LazyLists
(например,LazyColumn
который отображает вложенныеLazyRows
). Ожидается, что это изменение уменьшит выпадение кадров во время прокрутки для этихLazyLists
. По умолчанию реализация выполняет предварительную выборку первых двух вложенных элементов, однако этим поведением можно управлять с помощью новых APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
иLazyListPrefetchStrategy#onNestedPrefetch
. ( I51952 )
Версия 1.7.0-альфа07
17 апреля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-alpha07
. Версия 1.7.0-alpha07 содержит эти коммиты .
Изменения API
-
ClickableText
помечен как устаревший. Чтобы добавить ссылки в текст, создайтеAnnotatedString
сLinkAnnotation
соответствующим вашей ссылке, и передайте этуAnnotatedString
в составной элемент Text. ( I34d4b , б/323346994 ) - Представьте
ViewConfiguration.HandwritingGestureLineMargin
для жестов рукописного ввода. Поддержка жестаJoinOrSplit
дляBasicTextField
( Ie6e13 , b/325660505 ) -
FocusProperties.enter
иFocusProperties.exit
больше не являются экспериментальными.FocusDirection.Enter
иFocusDirection.Exit
больше не являются экспериментальными.FocusRequester.Cancel
больше не является экспериментальным ( I461a1 , b/261564106 ). - При запросе координат макета теперь вы можете использовать аргумент
excludeDirectManipulationOffset
, чтобы исключить смещение, установленное родительскими макетами, которые разместили своих дочерних элементов с помощьюPlaceable.PlacementScope.withDirectManipulationPlacement
. Аналогично, макет, который часто меняет положение своих дочерних элементов, теперь может размещать их с помощьюwithDirectManipulationPlacement
(например, Scroll, реализованного по умолчанию). Это помогает анимации, основанной наapproachLayout
стать более интуитивно понятными, поскольку теперь у вас есть возможность различать, какое смещение нужно анимировать, а что применять непосредственно при принятии решения о анимации их подхода. ( I60ec7 ) - Флаг функции для длинных снимков экрана был удален. ( I28648 , б/329128246 )
-
LazyColumn
теперь правильно отображает прикрепленные заголовки на длинных скриншотах. ( I8d239 , б/329296635 ) - Источники
NestedScroll
Drag и Fling заменяютсяUserInput
иSideEffect
чтобы учесть расширенное определение этих источников, которые теперь включают анимацию (Side Effect) и колесо мыши и клавиатуру (UserInput
). ( I40579 ) -
ApproachLayoutModifierNode
иModifier.approachLayout
теперь стабильны, а новыеisMeasurementApproachInProgress()
иisPlacementApproachInProgress()
заменяют старыеisMeasurementApproachComplete()
иisPlacementApproachComplete()
соответственно. - Удален устаревший модификатор
intermediateLayout
. ( I3e91c ) - Переименуйте
GraphicsLayer#buildLayer
для записи, чтобы отразить методы Begin/EndRecording API, поддерживаемых Displaylist, таких какRenderNode
и Picture. - Обновлен
rememberGraphicsLayer
для использованияrememberObserver
. ( I312c1 , б / 288494724 , б / 330758155 ) -
UrlAnnotation
устарел, используйте вместо негоLinkAnnotation.Url
. Если вы используете тему Material, используйте объектTextDefaults
для создания аннотации с примененной к ней темой Material ( I8d180 , b/323346545 ). - Текстовые ссылки получили опцию стиля нажатого состояния в дополнение к обычному стилю, наведению курсора и фокусу ( I5f864 , b/139312671 ).
-
String.parseAsHtml
переименован вAnnotatedString.Companion.fromHtml
. ( I43dcd ) - В метод
parseAsHtml
добавлены аргументы стиля (linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) и прослушиватель взаимодействия ссылок. При анализе строки с HTML-тегом с помощью тегов<a>
метод создаетLinkAnnotation.Url
для каждого такого тега и передает объекты стиля и прослушиватель взаимодействия ссылок в каждую аннотацию. ( I7c977 ) -
LinkAnnotation
теперь принимает аргументы стиля на основе состояния иLinkInteractionListener
. Добавьте эту аннотацию вAnnotatedString
чтобы получить гиперссылку. ПередаваяfocusedState
и/илиhoveredState
вы можете определить визуальнуюconfiguration
ссылок, когда они находятся в фокусе и/или наведены. ( I81ce4 , б/139312671 ) -
ImeOptions.hintLocales
больше не имеет значения NULL. Если вы хотите передать пустой список локалей, используйтеLocaleList.Empty
. ( Ic5bc4 )
Исправления ошибок
- Грамотно обрабатывает неправильные/поврежденные исторические данные входных событий (игнорирует неправильные данные смещения).
- Исправляет непредвиденные события указателя, когда модификатор ввода указателя добавляется динамически перед другим модификатором ввода указателя во время активного потока событий ввода указателя (например, между вводом при наведении и выходом при наведении [мышь/стилус]).
Версия 1.7.0-альфа06
3 апреля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-alpha06
. Версия 1.7.0-alpha06 содержит эти коммиты .
Новые возможности
- Добавлен метод
parseAsHtml
для стилизованных строк: он позволяет конвертировать строку, помеченную HTML-тегами, вAnnotatedString
. Обратите внимание, что не все теги поддерживаются, например, вы пока не сможете отображать маркированные списки. ( I84d3d , I30626 , б/139326648 ) - Реализована экспериментальная поддержка длинных снимков экрана в контейнерах прокрутки Compose с использованием официального API Android (
ScrollCaptureCallback
). Эта функция является экспериментальной и в настоящее время может обрабатывать не все случаи правильно. По этой причине в настоящее время он отключен по умолчанию. Чтобы принять участие, установите для флагаComposeFeatureFlag_LongScreenshotsEnabled
значение true. ( I2b055 , б/329296471 )
Изменения API
-
fun ClipEntry.getMetadata()
заменено наval ClipEntry.clipMetadata
. ( I50155 ) - Удалены функции
ClipboardManager.getClipMetadata
иClipboardManager.hasClip
. ИспользуйтеclipEntry.getMetadata()
для чтения метаданных текущей записи клипа. Также проверьте результатClipboardManager.getClip
, если он равен нулю или нет, чтобы понять, есть ли в буфере обмена текущий клип. ( I50498 ) - Теперь вы можете передавать объекты
GraphicsLayer
в функцииplaceable.placeWithLayer()
( I1b22f ). -
ClipboardManager.setClip
теперь принимает значение null, чтобы иметь возможность очистить буфер обмена. ( I7d2e9 ) - Добавлены идентификаторы ресурсов для помощи в сокрытии представлений, используемых в качестве деталей реализации в инструментах сборки ( I99531 ).
- Добавлен метод приостановки
GraphicsLayer#toImageBitmap
для поддержки рендеринга содержимого растрового изображения вGraphicsLayer
. Это операция рендеринга с аппаратным ускорением на уровне API 22+ (включительно), которая поддерживает более 99% всех устройств Android. На уровне Android API 21 это возвращается к программному рендерингу. ( I9e114 ) - Вспомогательный метод для преобразования Android
RectF
вComposeRect
( I39925 , b/325660505 ) - Все параметры
KeyboardOptions
теперь по умолчанию имеют неопределенное значение. Добавлен методKeyboardOptions.merge
. -
KeyboardOptions.autoCorrect
переименован вautoCorrectEnabled
и сделал его допускающим значение NULL, где значение NULL означает, что значение не было указано. ( Ia8ba0 , б/295951492 ) - Вариант
BasicTextField(state)
иBasicSecureTextField
теперь используютKeyboardActionHandler
вместоKeyboardActions
для обработки действий, выполняемых программной клавиатурой. ( I58dda )
Версия 1.7.0-альфа05
20 марта 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-alpha05
. Версия 1.7.0-alpha05 содержит эти коммиты .
Новые возможности
- Внедрите новый API
GraphicsLayer
для записи команд рисования в список отображения, а также дополнительных свойств, влияющих на отрисовку списка отображения. Это обеспечивает границу изоляции, позволяющую разделить сложную сцену на более мелкие части, которые можно обновлять индивидуально друг от друга, не пересоздавая всю сцену. Преобразования, выполненные вGraphicsLayer
можно выполнить без перезаписи списка отображения. В отличие отModifier.graphicsLayer
,GraphicsLayer
позволяет отображать составной контент в другом месте и полезен в случаях использования анимации, когда ожидается, что контент будет отображаться в разных сценах.
Изменения API
-
GraphicsLayer.draw(Canvas)
больше не является общедоступным API. Вместо этого используйте функцию расширенияDrawScope.drawLayer(GraphicsLayer)
для рисования слоя. ( I7a7c0 ) - Разделите
restrictedConstraints()
на два метода:fitPrioritizingWidth()
иfitPrioritizingHeight()
( I6d7fd ). - Представлена заглушка
HardwareCanvas
для использования Android L ( I1c3b5 , b/288494724 ). - Обновите структуру Compose, чтобы предоставить локальную композицию
GraphicsContext
, а также обновить реализации модификаторов Owner,DelegateableNode
иdrawWithCache
чтобы предоставить доступ кGraphicsContext
для ограниченного доступа, который будет автоматически очищать экземплярыGraphicsLayer
при удалении модификаторов. ( I64a2f , б / 288494724 ) - Представлен
InterceptPlatformTextInput
для помощи в написании низкоуровневых тестов, связанных с IME, и других низкоуровневых вариантов использования IME.PlatformTextInputTestOverride
устарел. ( I862ed , б/322680547 ) - Добавлена функция расширения
GraphicsLayer.setOutline(Outline)
. ( Ib81f4 ) - Представьте конструктор функции
GraphicsContext
для создания фабрики для создания экземпляровGraphicsLayer
( Ib98d6 , b/288494724 ). - Открытый API
GraphicsLayer
, обеспечивающий определенную разработчиком гибкость при захвате команд рисования, которые можно использовать для рисования в другом месте, а также применения различных визуальных эффектов к конечному результату. ( I80245 , б / 288494724 ) - Представьте
Paragraph#getRangeForRect
, который возвращает диапазон текста, охватываемый заданной областью прямоугольника. ( Iee516 , б/325660505 ) - Удалено экспериментальное переопределение
BasicText
с аргументомonLinkClicked
. В будущем появится замена API для поддержки гиперссылок. ( I107d5 )
Исправления ошибок
- Добавлено определение ожидаемого/фактического API
GraphicsLayer
для поддержки захвата и воспроизведения команд рисования с дополнительными визуальными эффектами и преобразованиями композиции. Представьте интерфейсGraphicsContext
для хранения графических зависимостей, включая создание экземпляровGraphicsLayer
и управление ими. ( I4a8d6 , б/288494724 ) - Исправлена проблема взаимодействия с одномерным поиском фокуса, из-за которой фокус застревал внутри
ComposeView
, встроенного среди других представлений. ( I08fd4 )
Внешний вклад
-
LocalLifecycleOwner
перешел от пользовательского интерфейса Compose кlifecycle-runtime-compose
, чтобы его вспомогательные API на основе Compose можно было использовать за пределами пользовательского интерфейса Compose. Спасибо Джейку Уортону за вклад. ( I6c41b , б/328263448 ) - Последовательно раскрывайте свойства смещения с плавающей запятой для всех подтипов выравнивания на основе смещения. ( I69f0f , б/328088992 )
Версия 1.7.0-альфа04
6 марта 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-alpha04
. Версия 1.7.0-alpha04 содержит эти коммиты .
Изменения API
- Поддержка функции рукописного ввода стилусом для BasicTextField2 на устройствах после Android U. ( I002e4 )
- В этом CL мы добавляем семантическое действие
GetScrollViewportLength
, чтобы мы могли передавать информацию о компонентах, прокручиваемых в композиции, в систему a11y. Этот CL также применяет использование указанного свойства в прокручиваемых списках Foundation. ( Ic5fa2 ) -
FocusRequester.createRefs
теперь стабилен ( I4d92c , b/261436820 ) - Введен
DelegatableNode.requireView()
позволяющий узлам-модификаторам получать текущееView
Android без чтения локальной композиции. ( I40768 ) - Новый API
Path.reverse()
для изменения направления пути ( I36348 ). - В
KeyboardOptions
добавленыhintLocales
, чтобы предоставитьTextFields
возможность указывать IME с определенными языковыми стандартами для установки предпочтительного языка. - Предоставьте свойство
platformLocale
изLocale
, которое возвращает базовый объект платформы, напримерjava.util.Locale
. ( I921c6 )
Версия 1.7.0-альфа03
21 февраля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-alpha03
. Версия 1.7.0-alpha03 содержит эти коммиты.
Изменения API
- Представляем
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 , б / 293577082 ) - Добавьте семантическое свойство
maxTextLength
, которое должно быть установлено в текстовых полях, которые фильтруют максимально допустимое количество символов. ( I24d9f , б / 170648072 ) - Обертка
Modifier.inspectable
устарела. Этот API создаст больше недействительных модификаторов, чем необходимо, поэтому его использование теперь не рекомендуется. Разработчикам рекомендуется реализовать методinspectableProperties()
вModifierNodeElement
если они хотят предоставить свойства модификатора инструментам. ( Ib3236 ) - Новый конструктор
PopupProperties
, который позволяет полностью контролировать флагиWindowManager.LayoutParams
. ( Ibb33e , b/312485503 ) - Представлен
DelegatableNode.requireLayoutCoordinates()
как способ получить текущиеLayoutCoordinates
Modifier.Node
без необходимости переопределятьonPlaced
и самостоятельно сохранять координаты в свойстве. ( Ia8657 ) - Представлен
DelegatableNode.currentLayoutCoordinates
как способ получить текущиеLayoutCoordinates
Modifier.Node
без необходимости переопределятьonPlaced
и самостоятельно сохранять координаты в свойстве. ( Иаэбаа ) -
BasicTextField2
и связанные API из пакетаandroidx.compose.foundation.text2
перемещены вandroidx.compose.foundation.text
. ( I9f635 ) - Добавлен новый API
ApproachLayoutModifierNode
для поддержки создания пользовательской логики подхода в явном узле модификатора. Также добавлен новый экспериментальный APIDeferredTargetAnimation
для анимаций, цель которых неизвестна при создании экземпляра. ( I60745 ) - Новые API-интерфейсы
Path
для запроса направления Path и извлечения контуров изPath
. ( I63d04 ) - Добавлены
PathHitTest
иPath.contains(Offset)
чтобы проверить, содержит лиPath
определенную точку. ( I3b218 ) -
TextLayoutResult
теперь предоставляет методgetLineBaseline(lineIndex)
. Это позволяет читать базовую линию произвольной строки текста в дополнение к существующим удобным свойствамfirstBaseline
иlastBaseline
. ( Ide4e8 , б/237428541 ) - Добавлен метод для сравнения только аннотаций двух
AnnotatedStrings
. ( I32659 )
Исправления ошибок
- Исправлена проблема обратной совместимости с
SemanticsPropertyReceiver.performImeAction
иSemanticsActions.PerformImeAction
. ( Ид0528 , б/322269946 )
Версия 1.7.0-альфа02
7 февраля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-alpha02
. Версия 1.7.0-alpha02 содержит эти коммиты.
Изменения API
- Исправлена проблема двоичной совместимости с
SemanticsPropertyReceiver.performImeAction
. ( I65865 , б/322269946 ) - Конструктор
PopupProperties
, принимающий параметрusePlatformDefaultWidth
больше не является экспериментальным. ( I8f8d2 ) - Добавлена перегрузка
ComposeTestRule.waitUntil
, которая принимает строковое описание условия для включения в сообщение о тайм-ауте. ( I9413e ) - Новый семантический API
unset()
для удаления свойств семантики, добавленных в ту же цепочку модификаторов. Новое семантическое свойствоisOpaque
. ( I8c583 , б / 317966058 , б / 246056649 ) - Удален
originalEventPosition
из метода копирования в общедоступном APIPointerInputChange
. ( I7бус )
Исправления ошибок
- Исправлена ошибка a11y, из-за которой при выборе можно было нажимать кнопки без вкладок и переключателей. ( I2181c )
-
VelocityTracker
теперь будет иметь исправление для добавления точек по умолчанию. Исправление по-прежнему можно отключить, установив дляVelocityTrackerAddPointsFix
значение false, если возникнут какие-либо проблемы. ( Ib3877 , б / 269487059 ) - Исправлена обратная двоичная несовместимость в
TextStyle
иParagraphStyle
. ( I179f0 , б/320819734 )
Внешний вклад
- Добавлен новый конструктор
DialogProperties
без параметров, специфичных для платформы. ( I45829 ) - Добавлен новый конструктор
PopupProperties
без параметров, специфичных для платформы. ( I9a038 )
Версия 1.7.0-альфа01
24 января 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-alpha01
. Версия 1.7.0-alpha01 содержит эти коммиты.
Изменения API
- Расширен
ClipboardManager
за счет добавленияClipEntry
иClipMetadata
для поддержки произвольного содержимого, например изображений. - Добавляет API
DeviceConfigurationOverride
вui-test
, позволяющий локально переопределять поведение тестируемого содержимого, например указывать доступный размер, локаль, направление макета, масштаб шрифта или тему.
Версия 1.6
Версия 1.6.8
12 июня 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.8
. Версия 1.6.8 содержит эти коммиты .
Исправления ошибок
- Исправлены несоответствия в масштабировании шрифта, когда масштаб шрифта меньше минимального заданного в таблице. В этом случае мы теперь интерполируем между линейным масштабом 1x и наименьшей определенной таблицей, так что размер шрифта монотонно увеличивается по мере увеличения масштаба. ( Икбе3 )
Версия 1.6.7
1 мая 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.7
. Версия 1.6.7 содержит эти коммиты .
Версия 1.6.6
17 апреля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.6
. Версия 1.6.6 содержит эти коммиты .
Исправления ошибок
- Исправлен редкий сбой
BasicTextField
.
Версия 1.6.5
3 апреля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.5
. Версия 1.6.5 содержит эти коммиты .
Версия 1.6.4
20 марта 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.4
. Версия 1.6.4 содержит эти коммиты .
Версия 1.6.3
6 марта 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.3
. Версия 1.6.3 содержит эти коммиты .
Версия 1.6.2
21 февраля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.2
. Версия 1.6.2 содержит эти коммиты.
Версия 1.6.1
7 февраля 2024 г. выпущен androidx.compose.ui:ui-*:1.6.1
. Версия 1.6.1 содержит эти коммиты.
Исправления ошибок
- Исправлена проблема обратной совместимости с
SemanticsPropertyReceiver.performImeAction
иSemanticsActions.PerformImeAction
. ( Ie0bb2 , б/322269946 ) - Макеты теперь выдают ошибку при измерении, если возвращается аномально большой размер. Ошибка такого типа обычно возникает, когда при измерении напрямую используются максимальные ограничения без проверки
Constraints.Infinity
. Проверка поможет разработчикам найти проблемы с макетом, имеющим неправильный размер, а не с макетом, который его содержит. ( I339a9 )
Версия 1.6.0
24 января 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.0
. Версия 1.6.0 содержит эти коммиты.
Версия 1.6.0-rc01
10 января 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-rc01
. Версия 1.6.0-rc01 содержит эти коммиты.
Исправления ошибок
- Оптимизированная реализация векторной графики для повышения производительности за счет минимизации дополнительных рекомпозиций.
Версия 1.6.0-бета03
13 декабря 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-beta03
. Версия 1.6.0-beta03 содержит эти коммиты.
Новые возможности
- Теперь возможно отсоединение
LayoutCoordinates
без отсоединения узла. Остерегайтесь этого в инспекторе компоновки ( If693 ).
Исправления ошибок
-
PlatformImeOptions
теперь представляет собой конкретный класс, а не интерфейс. ( Если40а4 ) - Исправлены дополнительные рекомпозиции в нисходящем направлении, вызванные тем, что
LocalSoftwareKeyboardController
иLocalTextInputService
предоставляли новые значения каждый раз, когда корень перекомпоновывался. ( I42190 , б/310510985 )
Версия 1.6.0-бета02
29 ноября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-beta02
. Версия 1.6.0-beta02 содержит эти коммиты.
Версия 1.6.0-бета01
15 ноября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-beta01
. Версия 1.6.0-beta01 содержит эти коммиты.
Изменения API
- Модификатор
DragAndDropTarget
теперь явно принимает принимающийDragAndDropTarget
и имеет лямбда-выражение для включения сеанса перетаскивания. Теперь дляDragAndDropModifierNode
есть две фабричные функции. Один для приема переводов и один для передачи данных ( I69481 ) - Обновлено
maximumFlingVelocity
теперь оно представлено как Float. Обновлена документация, чтобы более четко объяснить единствоmaximumFlingVelocity
. ( I8adc7 ) -
onDragAndDropStart
в фабрикеDragAndDropModifierNode
был переименован вacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
был добавлен в модификаторdragAndDropTarget
для принятия из сеанса перетаскивания. Эта лямбда возвращает жизнеспособныйDragAndDropTarget
, если заинтересован в сеансе перетаскивания. Другие лямбды для обработки событий перетаскивания были заменены на это. добавлена фабричная функцияDragAndDropTarget
для получения данных из сеансов перетаскивания ( Iebf3a ) Удален
DragAndDropInfo
как тип.DragAndDropModifierNode.drag
теперь принимает параметры дляtransferData
, размера оформления и оформления перетаскиванияDrawScope
лямбда.DragAndDropTarget
имеет методы для определенных событий перетаскивания, а не один абстрактный метод.onDragAndDropEvent
в заводской функции дляDragAndDropModifierNode
был переименован вonDragAndDropStart
чтобы лучше сообщить, что предоставленныйDragAndDropTarget
действителен только для данного сеанса перетаскивания.DragAndDropEventType
был удален ( I645b1 ).PlatformTextInputModifierNode.runTextInputSession
переименован вestablishTextInputSession
. ( I03cd0 )Улучшает имена API проходимых узлов, делая их более понятными. ( Я4474 )
Замените
OriginalText
наTextSubstitution
. ( Ифа5а8 )PlatformTextInputModifierNode.textInputSession
переименован вrunTextInputSession
. ( Ie9c6b )Дочерние элементы
SubcomposeLayout
(и макеты, подобныеLazyColumn
на его основе), которые сохраняются для повторного использования в будущем, считаются деактивированными. Для тестирования таких узлов был представлен новый тестовый APIassertIsDeactivated()
. Остальные тестовые API по умолчанию будут отфильтровывать деактивированные узлы. ( I2ef84 , б/187188981 )Удалены
FocusDirection.In
иFocusDirection.Out
вместо этого используйтеFocusDirection.Enter
иFocusDirection.Exit
( I2f660 ).API материала
SwipeToReveal
(для карт и чипов) теперь используют API на основе слотов (как рекомендовано Compose), а не экземпляры на основе классов данных для создания этих слотов. Это критическое изменение. Примеры использования нового API см. в демо-версии и образце кода. ( Ia8943 )Конструктор
FontStyle(int)
устарел, вместо него используйтеFontStyle.Normal
илиFontStyle.Italic
. ( I66610 )Интерфейс
FontScalable
переименован вFontScaling
( Ie804a ).
Исправления ошибок
-
SoftwareKeyboardController.show()
больше не будет отображать программную клавиатуру, если ни один текстовый редактор не находится в фокусе. ( I2165a , б/301477279 ) - События «Нажатие» аппаратной клавиши для клавиш, которые не получили событие «Нажатие» в том же представлении создания, теперь будут игнорироваться. ( Ib37b4 , b/305518328 )
- Добавьте поддержку средства визуализации для Sweep Gradient в
ArcLine
. ( I4d5bb ) - Реализуйте равенство и хеш-код для
PageSize.Fixed
. ( Ие3еде , б/300134276 ) - Исправлена проблема двоичной совместимости с изменением вставки окна ( Iee695 ).
- Удалите основной слой материала для чипа/кнопки Material3, поскольку без него микротесты показывают лучшую производительность. ( I55555 )
-
TestDispatcher
, переданный в качествеeffectContext
в тесты Compose, теперь будет использоваться для создания часов теста и кадров. ( Ia7178 )
Версия 1.6.0-альфа08
18 октября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-alpha08
. Версия 1.6.0-alpha08 содержит эти коммиты.
Изменения API
- В
Modifier.dragAndDrawSource
лямбдаonDrawDragShadow
переименована вdrawDragDecoration
, аDragAndDropInfo
параметр размера переименован вdragDecorationSize
. ( Id0e30 , б/303904810 ) - Введите
SemanticsNodeInteraction.isDisplayed()
иSemanticsNodeInteraction.isNotDisplayed()
, чтобы проверить, виден или нет соответствующий узел, не проверяя его. ( I2c196 , б/302100809 ) - Введено специальное значение
Unspecified
для полейTextAlign
,TextDirection
,Hyphens
иLineBreak
ParagraphTextStyle
для заменыnull
. Поскольку эти классы являются встроенными классами, заменяя значение nullable на Unspecified, мы избегаем упаковки примитивных типов. Конструкторы, геттеры и другие методы в стиляхTextStyle
и Paragraph были обновлены, чтобы принимать упомянутые параметры как ненулевые типы. ( I4197e , б / 299490814 ) - Добавьте перегрузку
GoogleFont
для чтенияGoogleFont
из XML. ( Если8f59 ) -
LoremIpsum
PreviewParameterProvider
сделал открытым классом. ( I41bf5 , б / 266918816 , б / 300116360 )
Исправления ошибок
-
FontFamilyResolver
теперь используетDispatchers.Main
для сопрограмм управления кэшем. ( Ie8dd9 ) -
AndroidViewBinding
теперь синхронно удаляет экземплярыFragment
, раздутые путем включенияFragmentContainerView
в ваш макет как часть егоonRelease
, используяcommitNow
(вместоcommit
которую он использовал ранее), тем самым устраняя проблемы с методом Live Edit с заменой композиции при изменениях. ( I58fbf )
Версия 1.6.0-альфа07
4 октября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-alpha07
. Версия 1.6.0-alpha07 содержит эти коммиты.
Изменения API
- Представлен
PlatformTextInputMethodTestOverride
для написания тестов для пользовательских текстовых редакторов. ( Id159b ) - Добавляет модификатор
dragAndDropSource
для запуска сеансов перетаскивания и модификаторdragAndDropTarget
для получения данных из сеансов перетаскивания. ( Ib7828 , б / 286038936 ) - Добавлены коллекции
ColorList
иColorSet
позволяющие избежать выделения. ( I744bd ) - Добавлен временный флаг
DisableNonLinearFontScalingInCompose
для отключения нелинейного масштабирования шрифта. УстановитеDisableNonLinearFontScalingInCompose = true
в своих тестах, если вам нужно время на их очистку. Этот флаг будет удален в Compose 1.6.0-beta01. ( Ic9486 )
Исправления ошибок
- Оптимизирован синтаксический анализ векторных изображений XML. ( Ибб015 )
Версия 1.6.0-альфа06
20 сентября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-alpha06
. Версия 1.6.0-alpha06 содержит эти коммиты.
Изменения API
- Дополнительная оптимизация значков материалов. ( I3e08d )
- Добавляет возможность перемещаться по дереву модификаторов вверх/вниз для поиска похожих узлов. ( I2d234 )
- Добавлен обратный вызов
onRestoreFailed()
к модификаторуfocusRestorer()
( Ie1d43 ). - Добавлены аннотации androidx к различным графическим API для указания
ColorInt
,FloatRange
,IntRange
,Size
и т. д. ( Id65c8 , б/290950582 ) - Добавьте
showSystemUi=true
в определениеPreviewScreenSizes
( Ib61d3 ).
Изменения поведения
- Compose теперь использует нелинейное масштабирование шрифтов для лучшей читаемости и доступности. Если в системных настройках масштаб шрифта > 100%, мелкий текст будет увеличиваться в размерах как обычно, а уже крупный текст увеличится лишь немного. Кроме того, высота строк, определенная в SP, будет автоматически корректироваться, чтобы оставаться пропорциональной предполагаемой высоте 100% масштаба. Дополнительные сведения см. в разделе «Рекомендации по масштабированию шрифтов» . ( I11518 )
Версия 1.6.0-альфа05
6 сентября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-alpha05
. Версия 1.6.0-alpha05 содержит эти коммиты.
Изменения API
- Включите захват контента в
AndroidComposeViewAccessibilityDelegateCompat
. ( Ib2969 ) - Скорость броска в компонентах View, таких как
ScrollView
иRecyclerView
ограниченаViewConfiguration.ScaledMaximumFlingVelocity
. Compose теперь содержит собственную версиюmaximumFlingVelocity
, которая теперь применяется кDraggable
. ( Ibf974 ) - Добавляет начальные каркасы для поддержки API-интерфейсов перетаскивания платформы. ( Если84ce )
- Добавьте
deviceId
вRotaryScrollEvent
( Iba3bf ) - Обновлен API устройств
ui-tooling
для включения новых устройств ( Ib25b4 ).
Версия 1.6.0-альфа04
23 августа 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-alpha04
. Версия 1.6.0-alpha04 содержит эти коммиты.
Изменения API
- Добавлен метод деактивации
ReusableComposition
, удаляющий наблюдения, но сохраняющий узлы на месте. Деактивированную композицию можно активировать снова, вызвавsetContent
. ( Ib7f31 ) - Добавьте интерфейс
ReusableComposition
для управления жизненным циклом и повторного использования подкомпозиций. ( I812d1 , б/252846775 ) -
Modifier.focusGroup
повышен до стабильных API. ( I7ffa3 ) - Добавлены аннотации androidx к различным графическим API для указания
ColorInt
,FloatRange
,IntRange
,Size
и т. д. ( I70487 , б / 290950582 ) - Обновлен API
ColorFilter
теперь у него есть конкретные типы подклассов для улучшения возможности проверки параметров. ( I5fe29 ) - Внедрить библиотеку Wear-Tooling-Preview для списка допустимых устройств износа, которые можно использовать для предварительного просмотра пользовательского интерфейса ( Ib036e ).
- Создан интерфейс
FontScalable
для управления частью масштабирования шрифта интерфейса Density. ( I2cf3f )
Версия 1.6.0-альфа03
9 августа 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-alpha03
. Версия 1.6.0-alpha03 содержит эти коммиты.
Изменения API
- Новый тип перехода входа/выхода, который масштабирует содержимое в зависимости от размера анимационного контейнера во время анимации входа и выхода.
LookaheadScope
Составное развлечение и интерфейс теперь стабильны. ( Еслиb2ce ) - Добавлена поддержка настройки
privateImeOptions
( Idb772 ).
Исправления ошибок
-
PopupPositionProvider.calculatePosition
теперь будет автоматически обновлять положение всплывающего окна при изменении состояния, считанного в расчете. ( I676a1 , б/292257547 ) - Исправлены текстовые поля, отображающие клавиатуру и доступные для редактирования, если
readOnly
установлено значение true. Также исправлена ошибка, из-за которой клавиатура не отображалась, когдаreadOnly
менялось с true на false во время фокусировки. ( I34a19 , б / 246909589 ) - Расширенное применение глобальных утверждений при тестировании пользовательского интерфейса. ( I1f90d )
Версия 1.6.0-альфа02
26 июля 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-alpha02
. Версия 1.6.0-alpha02 содержит эти коммиты.
Изменения API
- Добавлен интерфейс локатора службы, который может быть реализован разработчиками композиции, который позволяет реализовать композицию, которая делегирует другому составу поиск службы делегата в исходной композиции. Это не следует называть Directy, и оно используется для создания экспериментальных API во время выполнения, которые можно найти в завернутых версиях композитора, например, в модуле пользовательского интерфейса. ( I296b9 )
- Полностью переработан API
PlatformTextInput*
. ( I6c93a , б/274661182 , б/267235947 , б/277380808 ) -
SoftwareKeyboardController
иLocalSoftwareKeyboardController
больше не являются экспериментальными.LocalSoftwareKeyboardController
теперь также является полноценнымCompositionLocal
. ( I4c364 ) -
LookaheadLayout
иLookaheadLayoutScope
устарели в нескольких выпусках и теперь удалены. Заменяющими API являютсяLookaheadScope
, которые могут работать с любым макетом. ( I12ac3 ) - Добавлен
SemanticsNodeInteraction.requestFocus
как более удобный и доступный способ запроса фокуса в тестах. ( Ie8722 ) - Добавьте экспериментальные API для регистрации глобальных утверждений для использования платформами тестирования в будущем. ( I12d77 )
Исправления ошибок
- Первый вызов обратного вызова
update
AndroidView
теперь будет отложен до тех пор, пока представление не будет присоединено, вместо того, чтобы запускаться при применении композиции, которая представляетAndroidView
. Это исправляет ошибку, из-за которой обратный вызовupdate
не становился недействительным, если считанное им состояние было немедленно изменено эффектом. ( Ие9438 , б/291094055 )
Версия 1.6.0-альфа01
21 июня 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-alpha01
. Версия 1.6.0-alpha01 содержит эти коммиты.
Новые возможности
- Поддержка просмотра вперед в
LazyList
. Это позволяетLazyList
в проходе просмотра вперед обходить любую анимацию (например, анимацию размещения элементов,AnimatedVisibility
и т. д.) и вычислять размер и положение просмотра вперед для всех дочерних элементов. После просмотра вперед дочерние элементыLazyList
могут анимировать независимо от реальности, как видно на этапе просмотра вперед.
Изменение поведения: параметр includeFontPadding теперь по умолчанию имеет значение false в Compose.
includeFontPadding
теперь имеет значение false по умолчанию ( 21d806 ) в Compose.
includeFontPadding
— это устаревший атрибут, который определяет, включать ли дополнительные поля поверх первой и последней строк текста для размещения любых символов, которые могут выходить за пределы или под базовые линии текста.
Обновление этой версии Compose изменит способ отображения всех текстов в вашем пользовательском интерфейсе, удалив дополнительные поля поверх первой и последней строк каждого отображаемого текста.
В зависимости от ваших требований к пользовательскому интерфейсу и показателей шрифта, которые вы используете, изменения должны быть минимальными. Однако вы можете столкнуться с такими блокировщиками, как: - Неработающие скриншоты. При необходимости исправьте пользовательский интерфейс и восстановите золотые изображения. - Текст немного смещен. Удалите любые пользовательские отрицательные отступы или добавьте отступы, если необходимо.
Вы можете includeFontPadding
, используя PlatformTextStyle
для каждого текста:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Вы можете включить includeFontPadding
для всех ваших текстов, настроив стили материалов. Обратите внимание, что имена параметров будут различаться в зависимости от M2 и M3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Дополнительную информацию о Compose includeFontPadding
можно найти в документации для разработчиков и в этой записи блога .
Если у вас возникли проблемы/ошибки, связанные с этим изменением, сообщите об ошибке с помощью системы отслеживания проблем .
Изменения API
- Поддержка
InputConnection#requestCursorUpdates
( I0c69b ) - Добавлены
FocusRequester.saveFocusedChild
иFocusRequester.restoreFocusedChild
( Ic557e , b/272302679 , b/275157318 ). - Добавьте тип
ResourceResolutionException
для переноса генерируемых объектов при попытке загрузки растровых ресурсов с описанием пути к ресурсу, который не удалось загрузить. ( I19f44 , б / 230166331 , б / 278424788 ) - Оптимизированный доступ для производительности и распределения памяти. ( Иеде48 )
- Добавлены семантические свойства и действия для поддержки перевода текста. ( I4a6bc )
- Новое свойство в
IntrinsincMeasureScope
и его реализациях (например,MeasureScope
), позволяющее указать, является ли текущий проход меры просмотром вперед. ( I7a812 ) - Обновлен API
DrawScope
, позволяющий перенацелить рендеринг на другой холст с альтернативной плотностью/направлением макета и размером. - Обновлен
DrawContext
для поддержки настройки плотности и направления макета, а также для возможности настройки холста. ( Ie1f9b , б/225408150 ) - Добавлен
Paragraph#fillBoundingBoxes
для расчета ограничивающих рамок символов. ( Если30ee ) - Добавлен набор общих
MultiPreviews
( Ia5a27 ).
Исправления ошибок
- Добавлен интерфейс
FocusTargetModifierNode
, который можно использовать для создания собственногоFocusTarget
. ( I9790e ) - Параметры
fallback*
конструктораTextMeasurer
переименованы вdefault*
. ( I940a5 ) -
SemanticsPropertyReceiver.performImeAction
переименован вonImeAction
, аSemanticsActions.PerformImeAction
— вOnImeAction
. ( I8e841 ) - Добавляет колесо, чтобы отличать прокрутку мыши от перетаскивания при вложенной прокрутке (в частности, в
NestedScrollConnection
). ( Ie57e4 ) - Добавлен API
asComposePaint
для заменыtoComposePaint
, поскольку возвращаемый объект оборачивает исходныйandroid.graphics.Paint
( I22b4c ). - Устаревший
SemanticsProperties.imeAction
и замените его новым параметромSemanticsActions.performImeAction
. ( I4a587 ) - Добавлена поддержка выбора мышью. Сенсорный выбор будет расширяться по словам и уменьшаться по символам. ( Ic0c6c , б/180639271 )
- Методы
Paragraph
, которые раньше выдавалиAssertionError
для смещений за пределами границ, теперь выдают исключениеIllegalArgumentException
, как это делаетMultiParagraph
. ( I549d3 , б/243338896 )
Версия 1.5
Версия 1.5.4
18 октября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.4
. Версия 1.5.4 содержит эти коммиты.
Версия 1.5.3
4 октября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.3
. Версия 1.5.3 содержит эти коммиты.
Исправления ошибок
- ( b/301209788 )
TextField
иногда неправильно применял предыдущие команды при фокусировке и вводе корейского ввода, что приводило к потере символов.
Версия 1.5.2
27 сентября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.2
. Версия 1.5.2 содержит эти коммиты.
Исправления ошибок
- Добавлен обходной путь для сбоев при доступе к API прокрутки специальных возможностей из фонового потока.
- Исправлено добавление неприсоединённых узлов в семантическое дерево.
Версия 1.5.1
6 сентября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.1
. Версия 1.5.1 содержит эти коммиты.
Исправления ошибок
- Исправлены текстовые поля, отображающие клавиатуру и доступные для редактирования, если
readOnly
установлено значение true. Также исправлена ошибка, из-за которой клавиатура не отображалась, когдаreadOnly
менялось с true на false во время фокусировки. ( I34a19 , б / 246909589 )
Версия 1.5.0
9 августа 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0
. Версия 1.5.0 содержит эти коммиты.
Версия 1.5.0-rc01
26 июля 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0-rc01
. Версия 1.5.0-rc01 содержит эти коммиты.
Исправления ошибок
- Исправлен сбой, возникающий при использовании
SubcomposeLayout
внутриmovableContentOf()
.
Версия 1.5.0-бета03
28 июня 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0-beta03
. Версия 1.5.0-beta03 содержит эти коммиты.
Исправления ошибок
- Добавлен интерфейс FocusTargetModifierNode, который можно использовать для создания собственного FocusTarget. ( Еслиb1d6 )
- Исправлена проблема с составными элементами Dialog и Popup, из-за которой размер дочернего окна не изменялся должным образом при
usePlatformDefaultWidth=true
. ( I112ee )
Версия 1.5.0-бета02
7 июня 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0-beta02
. Версия 1.5.0-beta02 содержит эти коммиты.
Изменения API
- Добавлен
asComposePaint
API, позволяющий использовать экземплярandroid.graphics.Paint
для использования в Compose.
Исправления ошибок
- Добавлен API
asComposePaint
для заменыtoComposePaint
, поскольку возвращаемый объект оборачивает исходныйandroid.graphics.Paint
( I22b4c ).
Версия 1.5.0-бета01
24 мая 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0-beta01
. Версия 1.5.0-beta01 содержит эти коммиты.
Изменения API
- Удалены выделения при рекомпозиции, цветовой анимации и
AndroidComposeView
( Ib2bfa ). - Добавляет вспомогательную функцию
CacheDrawModifierNode()
позволяющую делегировать ( Icf8f9 ) - Представляем свойство
isLookingAhead
, доступное изMeasureScope
, для наблюдения за результатами просмотра вперед и при необходимости влияния на основной проход. ( Ibf4c3 ) - Новое семантическое свойство
traversalIndex
— число с плавающей запятой, используемое для изменения порядка узлов при обходеTalkBack
(более низкие значения идут раньше). ( I9a81b , б/186443263 ) - Переименование свойства семантики
isContainer
вisTraversalGroup
( I121f6 ). -
ColorProducer
теперь естьoperator fun invoke
вместоproduce
( I4a9a2 ). - Добавьте API преобразования
Path
, чтобы применять преобразования перемещения/масштабирования/вращения к объектам пути. ( I23434 , б / 233772232 ) - Метод
ColorProducer
называетсяproduce
. ( I78bde ) - Переименуйте
toFrameworkColorSpace
вtoAndroidColorSpace
( I4f547 ). - Переименуйте
ColorLambda
вColorProducer
. ( I73b1a ) - Представьте API для преобразования между типами цветового пространства Android и Compose. ( Ie7db4 , б/279979665 )
- В
BasicText
добавлен параметр цвета, позволяющий эффективно анимировать или устанавливать цвет текста. ( Ifffd88 , б / 246961787 ) -
TextRange.constrain
переименован вTextRange.coerceIn
. ( I31be2 ) - Добавлен оптимизированный
TextStyle.merge(...)
с полным списком параметров. ( Иад234 , б/246961787 ) - Стабилизированы многие текстовые API, включая
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
. ( I2f740 , б/261581564 , б/261581931 , б/261561245 ) -
PlatformTextStyle.includeFontPadding
не рекомендуется. Нашим первоначальным намерением было удалить это поле, однако отзывы показывают, что разработчикам нужна эта опция конфигурации. Поэтому удаление устаревших данных из поля ( I98e96 , b/277703184 ) - Добавлен общедоступный метод
TextRange.constrain
. ( I97912 ) -
UrlAnnotation
вAnnotatedString
теперь можно открыть через службы специальных возможностей, такие какTalkBack
. ( If4d82 , b/253292081 ) - Добавлено семантическое действие
InsertTextAtCursor
для текстовых полей. ( I11ed5 ) - Конструктор
LineHeightStyle.Alignment(topRatio)
повышен до стабильного API. ( I79c32 , б/261565383 ) -
TextMeasurer
и связанные с ним API больше не являются экспериментальными. ( I74647 , б / 261581753 ) - Добавлено семантическое действие
PerformImeAction
для вызова действия IME на узлах текстового редактора. ( Ic606f , б/269633506 ) - API
PlatformTextInput
больше не являются экспериментальными для Android. ( I668eb ) - имя параметра значения для
Enum.valueOf
изменено ( Ia9b89 ) - больше исключений из перечисления valueOf ( I818fe )
- Представлен новый низкоуровневый API
PlatformTextInputAdapter
для создания пользовательских реализаций ввода текста, которые напрямую взаимодействуют с API платформы. ( I58df4 ) - В методы
DrawScope.drawText
,Paragraph.paint
иMultiParagraph.paint
добавлен параметрBlendMode
для поддержки различных алгоритмов смешивания при рисовании текста на Canvas. ( I57508 ) - Переименуйте
Font.MaximumAsyncTimeout
вFont.MaximumAsyncTimeoutMillis
. Только переименовать. ( I07af5 ) - Обновлены значения DPI эталонных устройств
@Preview
( Id6151 , b/254528382 ). - Добавьте параметры
brush
иalpha
вBasicText
, чтобы обеспечить эффективную анимацию или настройку текстовой кисти. - Определите типы лямбда без коробок для Float, Double, Long, Int, Short в :ui:ui-unit ( I6f18d , b/246961787 )
Исправления ошибок
- Удалены множественные выделения при отслеживании скорости указателя ( I26bae ).
- Уменьшение выделения ресурсов при управлении макетом и вводом указателя ( I5333a ).
- Оптимизация использования векторной памяти и рендеринга первых кадров ( I2f3c6 ).
- Удалены выделения при рисовании линий и точек с помощью Canvas ( I9f535 ).
- Добавить документы для
AndroidFont.fontVariationSettings
( I7d9e2 )
Внешний вклад
- Улучшена производительность и уменьшено выделение ресурсов в векторных API ( I906cb ).
Версия 1.5.0-альфа04
10 мая 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0-alpha04
. Версия 1.5.0-alpha04 содержит эти коммиты.
Новые возможности
- Улучшения делегирования
Modifier.Node
Добавлена расширенная возможность делегирования другим экземплярамModifier.Node
изDelegatingNode
. Это можно сделать с помощьюdelegate
иundelegate
API. До этого изменения каждый API делегирующего узла необходимо было явно делегировать делегированному узлу. После этого изменения интерфейсы узлов будут делегироваться неявно, еслиDelegatingNode
не переопределяет их явно. ( 67352bc )
Изменения API
- Представьте
NestedScrollModifierNode
—NestedScroll Modifier.Node
, которому можно делегировать. ( I69513 ) - В составной объект
AndroidViewBinding
добавлены параметрыonReset
иonRelease
, что отражает составной элементAndroidView
и обеспечивает поддержку повторного использования представления с помощьюViewBinding
. ( I00b1e , б/276802519 ) - Обновлен API Compose Path для поддержки операций перемотки для поддержки случаев частого манипулирования Path с более быстрым повторным использованием. ( I7b797 )
- Добавлен оптимизированный
TextStyle.merge(...)
с полным списком параметров. ( Иад234 , б/246961787 ) - Стабилизированы многие текстовые API, включая
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
. ( I2f740 , б/261581564 , б/261581931 , б/261561245 ) -
PlatformTextStyle.includeFontPadding
не рекомендуется. Нашим первоначальным намерением было удалить это поле, однако отзывы показывают, что разработчикам нужна эта опция конфигурации. Поэтому удаление устаревших данных из поля ( I98e96 , b/277703184 )
Исправления ошибок
- Исправлена регрессионная ошибка, из-за которой клавиатура не отображалась для текстовых полей внутри диалогов, не созданных с помощью компонуемого
Dialog
. ( I82551 , б / 262140644 )
Версия 1.5.0-альфа03
19 апреля 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0-alpha03
. Версия 1.5.0-alpha03 содержит эти коммиты.
Новые возможности
- Новое поведение по умолчанию для
SubcomposeLayout
вLookaheadScope
:SubcomposeLayouts
, у которых нет условных слотов (например,TabRow
,Scaffold
,BoxWithConstraints
и т. д.), теперь хорошо работают с анимацией просмотра вперед.
Изменения API
- Новый
intermediateMeasurePolicy
по умолчанию, который повторно использует политику измерения из прохода просмотра вперед, позволяет подтипамSubcomposeLayout
без условных слотов, таким какScaffold
,TabRow
иBoxWithConstraints
, работать с прогнозом вперед по умолчанию. ( Id84c8 ) - Рекомпозер, созданный для окна Android, теперь будет блокировать только вызовы
withFrameNanos
а не всю композицию, когда он получает уведомлениеON_STOP
. Это означает, что окна, связанные с остановленными действиями, будут продолжать перекомпоновываться при изменении данных, но анимация или любой другой вызывающий объектwithFrameNanos
будет блокироваться. ( Id9e7f , б/240975572 ) - Изменяет
motionEventSpy
на стабильный. ( Ic5ec4 , б/261560988 ) - Добавлен общедоступный метод
TextRange.constrain
. ( I97912 ) -
PlatformTextStyle.includeFontPadding
больше не считается устаревшим, чтобы побудить разработчиков использовать этот API совместимости для переключения и проверки параметраincludeFontPadding
false. ( I98e96 , б/277703184 )
Версия 1.5.0-альфа02
5 апреля 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0-alpha02
. Версия 1.5.0-alpha02 содержит эти коммиты.
Изменения API
- Новый API
SubcomposeLayout
, который использует дополнительную политику промежуточных мер для обработки логики мер/макета во время анимации на основе прогноза. ( I017d3 ) - PointerInput теперь ленив и использует Modifier.Node для повышения производительности ( читайте о незначительном изменении поведения ). ( 15даб9 )
- Заменяет экспериментальные API на стабильные с ключевыми событиями. ( I9c7d8 , б / 261566839 , б / 261567368 )
- Изменяет экспериментальные API на стабильные в
PointerInputChange
. ( I1b543 , б / 261560988 , б / 261565762 , б / 261565749 ) - Добавляет способ создания экземпляра
SuspendingPointerInputModifierNode
для более сложных реализацийModifier.Node
. ( Ic4933 ) -
UrlAnnotation
вAnnotatedString
теперь можно открыть через службы специальных возможностей, такие какTalkBack
. ( If4d82 , b/253292081 ) - Добавлен API для перехвата аппаратных клавиш перед их отправкой на программную клавиатуру ( I4f4c6 , b/186800395 ).
- Добавлено семантическое действие
InsertTextAtCursor
для текстовых полей. ( I11ed5 ) - Тестовые действия, связанные с текстом (например,
performTextInput
), теперь будут запрашивать фокус напрямую, используя семантическое действие, вместо щелчка по полю. ( I6ed05 )
Исправления ошибок
- Действия текстового теста теперь требуют включения текстовых полей. ( Iab328 )
Версия 1.5.0-альфа01
22 марта 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0-alpha01
. Версия 1.5.0-alpha01 содержит эти коммиты.
Изменения API
- Modifier.intermediateLayout теперь не требует явного LookaheadScope. Блок измерения в промежуточномLayout имеет IntermediateMeasureScope в качестве приемника, что обеспечивает удобные CoroutineScope, LookaheadScope и MeasureScope. ( Ibe2e5 ).
- LookaheadLayout заменен на LookaheadScope, который больше не является макетом. Это позволяет напрямую контролировать содержимое chid в LookaheadScope с помощью MeasurePolicy родительского объекта. ( Ibe2e5 )
- Добавляет
Modifier.Node#coroutineScope
, позволяющий Modifier.Nodes запускать сопрограммы. ( I76ef9 ) - Разрешите Modifier.Nodes читать CompositionLocals, реализовав интерфейс CompositionLocalConsumerModifierNode. ( Ib44df )
- Распространение класса @Deprecated на свойство. ( I882d1 )
Версия 1.4
Версия 1.4.3
3 мая 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.3
. Версия 1.4.3 содержит эти коммиты.
Исправления ошибок
- Исправлена проблема, из-за которой
AndroidView
мог располагаться неправильно при использовании с некоторыми модификаторами. ( I4dc77 , б/274797771 ) - Исправлена ошибка в 2D-поиске фокуса, которая затрагивала
DropDown
меню ( b/276811828 ). - Исправлена ошибка в свойствах входа/выхода пользовательского фокуса, из-за которой блок входа/выхода запускался только при первом вызове лямбды ( b/277234245 ).
- Исправлена регрессия в системе фокуса, приводившая к сбою при чтении
focusProperties
. ( б / 271324781 , б / 274897776 )
Версия 1.4.2
19 апреля 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.2
. Версия 1.4.2 содержит эти коммиты.
Исправления ошибок
- Исправлена проблема, из-за которой
AndroidView
не мог правильно использовать свои модификаторы, что могло привести к неожиданному поведению и сбоям. ( Ib67ee , б/275919849 ) - Исправлена регрессия, при которой клавиатура не отображалась для текстовых полей внутри диалогов, не созданных с помощью составного
Dialog
( I82551 , b/262140644 ).
Версия 1.4.1
5 апреля 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.1
. Версия 1.4.1 содержит эти коммиты.
Исправления ошибок
- Устранена проблема с
ParentDataModifier
не влияющая наAndroidView
( b/274797771 ).
Версия 1.4.0
22 марта 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.0
. Версия 1.4.0 содержит эти коммиты.
Важные изменения с версии 1.3.0
- Добавлен новый API-интерфейс
PinnableContainer
, который позволяет закреплять элементы ленивого списка, чтобы они не удалялись при прокрутке за пределы. Например,Modifier.focusable()
использует этот механизм для закрепления элемента, находящегося в фокусе. ( Ib8881 , б / 259274257 , б / 195049010 ) - Система фокуса переписана с использованием новых экспериментальных API
Modifier.Node
. ( I7f4d7 , b/247708726 , b/255352203 , b/ 253043481 , b /247716483 , b /254529934 , b/251840112 , b/251859987 , b/257141589 ) - Добавлено свойство семантики
IsContainer
на Surfaces. Это свойство будет использоваться в последующих изменениях, определяющих порядок обхода на основе семантического значения таких элементов, как поверхности. ( I63379 ) - Добавлена новая роль доступности
DropdownList
. Это можно использовать для копирования поведенияTalkBack
при фокусировке наandroid.widget.Spinner
. ( I177e5 , б/236159001 ) - Теперь вы можете использовать
PlatformTextStyle(emojiSupportMatch)
чтобы при необходимости отключить обработку поддержки эмодзи для одного абзаца. ( Я7100 , б/139326806 ) - Тесты пользовательского интерфейса Android Compose теперь будут запускать проходы макета для каждого кадра при выполнении кадров для перехода в режим ожидания (например, через
waitForIdle
). Это может повлиять на тесты, проверяющие отдельные кадры анимации макета. ( I8ea08 , б/222093277 ) - В
TextStyle
добавлен экспериментальныйTextMotion
, позволяющий определить текст какStatic(default)
или анимированный. ИспользуйтеTextMotion.Animated
, если текст будет масштабироваться, переводиться или вращаться с помощью анимации. ( I24dd7 )
Версия 1.4.0-rc01
8 марта 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.0-rc01
. Версия 1.4.0-rc01 содержит эти коммиты.
Изменения API
- Добавлена перегрузка составной функции
AndroidView
, которая принимает параметрonReset
. Это позволяет повторно использовать экземпляры View, когда их узел в композиции отбрасывается и повторно используется совместимым способом. Это особенно полезно дляLazyRows
иLazyColumns
представлений. ( I3f10d , б/230099236 ) - Представлен новый низкоуровневый API
PlatformTextInputAdapter
для создания пользовательских реализаций ввода текста, которые напрямую взаимодействуют с API платформы. ( I58df4 )
Исправления ошибок
- Семантическое действие
SetText
вBasicTextField
теперь будет обновлять текстовый буфер, используя тот же путь кода, что и обновления IME, и функции тестирования (например,performTextReplacement
). - Функции тестирования текста
performTextClearance
,performTextReplacement
иperformTextSelection
теперь используютSemanticsActions
. ( I0807d , б/269633168 , б/269624358 )
Версия 1.4.0-бета02
22 февраля 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.0-beta02
. Версия 1.4.0-beta02 содержит эти коммиты.
Изменения API
- Удален API
modifierElementOf()
. Вместо этого используйте расширение непосредственно изModifierNodeElement
. ( I2256b ) - Добавлен новый обратный вызов
Modifier.Node.onReset()
позволяющий сбросить некоторое локальное состояние для правильной обработки случая, когдаLayout
будет повторно использоваться (например, как элементLazyColumn
). ИсправленFocusTargetModifierNode
для правильного сброса состояния фокуса. ( I65495 , б / 265201972 ) - В методы
DrawScope.drawText
,Paragraph.paint
иMultiParagraph.paint
добавлен параметрBlendMode
для поддержки различных алгоритмов смешивания при рисовании текста на Canvas. ( I57508 )
Исправления ошибок
- Улучшен алгоритм порядка фокуса доступности, например, верхняя/нижняя полоса чаще читается первой/последней соответственно ( 74e9c5 ).
Версия 1.4.0-бета01
8 февраля 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.0-beta01
. Версия 1.4.0-beta01 содержит эти коммиты.
Изменения API
-
PinnableContainer.PinnedHandle.unpin()
был переименован вrelease()
( I4667a ). - Добавлены
waitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
иwaitUntilDoesNotExist
в качестве экспериментального API дляComposeTestRule
, расширяя APIwaitUntil
для приема любого сопоставления и любого количества узлов. Дополнительную документацию смотрите вComposeTestRule
. ( Ifa1b9 , б/226934294 ) - Переименуйте
Font.MaximumAsyncTimeout
вFont.MaximumAsyncTimeoutMillis
. ( I07af5 ) - Удален
GoogleFont.Provider.AllFontsListUri
и вместо этого добавлена ссылка на него в ktdoc. ( I16f29 )
Исправления ошибок
- Добавить документы для
AndroidFont.fontVariationSettings
( I7d9e2 )
Версия 1.4.0-альфа05
25 января 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.0-alpha05
. Версия 1.4.0-alpha05 содержит эти коммиты.
Изменения API
- Представлены новые экспериментальные перегрузки для функции
runComposeUiTest
и функцийcreate*ComposeRule
, которые принимают параметрыCoroutineContext
. Контекст будет использоваться для композиции теста и любых вызововLaunchedEffect
иrememberCoroutineScope()
в композиции. ( I10614 , б / 265177763 ) - Добавьте новый API для отслеживания одномерной скорости ( If5a82 ).
-
FocusRequester
теперь помечен как@Stable
. ( I580ee ) - Удалите экспериментальную аннотацию из конструктора
DialogProperties
, которая принимает параметрusePlatformDefaultWidth
. ( Ic4048 ) - Добавлена функция для расчета положения и касательной на расстоянии на пути - с помощью
PathMeasure.getPosition()
иPathMeasure.getTangent()
( I3b47c ). - Удален случайно раскрытый публичный установщик в
PlatformParagraphStyle
. ( I07f47 ) - Больше типов/обнуляемости встроенных/устаревших скрытых функций ( I24f91 )
- Добавьте
AnnotatedString.hasStringAnnotations
для запроса аннотаций с нулевым выделением. ( I94dfe , б / 246960758 ) - Добавлена новая перегрузка функции
TextMeasurer.measure
, которая принимаетString
как текст. ( I47b2d , б/242705342 ) - API-интерфейсы
LineBreak
иHyphens
в TextStyle переведены в стабильную версию. ( Ic1e1d )
Внешний вклад
- Методы
notifyFocusedRect
вTextInputSession
иTextInputService
снова не устарели. ( I23a04 , б / 262648050 )
Версия 1.4.0-альфа04
11 января 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.0-alpha04
. Версия 1.4.0-alpha04 содержит эти коммиты.
Новые возможности
- Добавлен новый API-интерфейс
PinnableContainer
, который позволяет закреплять элементы ленивого списка, чтобы они не удалялись при прокрутке за пределы. Например,Modifier.focusable()
использует этот механизм для закрепления элемента, находящегося в фокусе. ( Ib8881 , б / 259274257 , б / 195049010 ) - Система фокуса переписана с использованием новых экспериментальных API
Modifier.Node
. ( I7f4d7 , b/247708726 , b/255352203 , b/ 253043481 , b /247716483 , b /254529934 , b/251840112 , b/251859987 , b/257141589 ) - Добавлено свойство семантики
IsContainer
на Surfaces. Это свойство будет использоваться в последующих изменениях, определяющих порядок обхода на основе семантического значения таких элементов, как поверхности. ( I63379 ) - Добавлена новая роль доступности
DropdownList
. Это можно использовать для воспроизведения поведенияTalkBack's
при фокусировке наandroid.widget.Spinner
. ( I177e5 , б/236159001 ) - Теперь вы можете использовать
PlatformTextStyle(emojiSupportMatch)
чтобы при необходимости отключить обработку поддержки эмодзи для одного абзаца. ( Я7100 , б/139326806 ) - Тесты пользовательского интерфейса Android Compose теперь будут запускать проходы макета для каждого кадра при выполнении кадров для перехода в режим ожидания (например, через
waitForIdle
). Это может повлиять на тесты, проверяющие отдельные кадры анимации макета. ( I8ea08 , б/222093277 ) - В
TextStyle
добавлен экспериментальныйTextMotion
, позволяющий определить текст какStatic(default)
или анимированный. ИспользуйтеTextMotion.Animated
, если текст будет масштабироваться, переводиться или вращаться с помощью анимации. ( I24dd7 )
Изменения API
- Аргумент
maxSize: IntSize
вdrawText
заменен наsize: Size
, который будет встроенным в другие функцииDrawScope
. По умолчанию дляsize
установлено значениеSize.Unspecified
, что не должно менять предыдущее поведение по умолчанию. ( Icd27d ) - Удален устаревший экспериментальный конструктор шрифтов. ( I8a724 , б / 261435386 )
- Класс данных инструментов пользовательского интерфейса
Group
теперь имеет полеisInline
, которое указывает, предназначена ли группа для вызова встроенной составной функции. ЕслиisInline
имеетtrue
, то вызывается встроенная компонуемая функция. Однако значение может быть ложным для вызовов встроенных компонуемых функций из модулей, скомпилированных с помощью версии подключаемого модуля компилятора Compose, которая не генерирует информацию о встроенных функциях. ( Идб846 ) - Довели до стабильной версии ряд ранее экспериментальных API.
- API событий ротационной прокрутки теперь стабилен ( I42ad3 , b/261561229 )
- API
FontVariation
теперь стабилен ( I8779f , b/241016309 ). - Все конструкторы
Font()
теперь имеют стабильный API ( I5948b , b/261435386 ). -
DeviceFontFamilyName
теперь стабильно ( I8b640 , b/261435386 ) - Конструктор
AndroidFont
сvariationSettings
теперь является стабильным API и может использоваться для создания новых типов дескрипторов шрифтов. ( I5adcc , б / 261565807 ) - API
createFontFamilyResolver
теперь стабилен. Это можно использовать для перехвата неперехваченных исключений во время асинхронной загрузки шрифтов. ( Ибб481 , б/261435386 ) - API
Font.loadingStrategy
теперь стабилен. ( I5937c , б / 261435386 ) - API
GoogleFont
теперь стабилен. ( Ic90b0 , б/261435386 ) -
TextUnit(float, TextUnitType)
теперь является стабильным API. ( I90c84 , б/261561612 ) -
pluralStringResource
теперь является стабильным API. ( I09849 , б / 261439703 )
Версия 1.4.0-альфа03
7 декабря 2022 г.
Выпущен androidx.compose.ui:ui-*:1.4.0-alpha03
. Версия 1.4.0-alpha03 содержит эти коммиты.
Изменения API
- Удаление
ExperimentalComposeUiApi
изPointerIcon
( I23af8 ) - Введем действия по обеспечению доступности страницы:
PageUp
,PageDown
,PageLeft
,PageRight
. Обратите внимание, что они доступны только из API 29. ( Ida4ab ). - Обновлено представление параметра
rememberNestedScrollConnection
с корневого представления на представление хоста. ( Я5200 ) - Добавлен API-модификатор для запроса информации о прокрутке предков. ( I2ba9d , б/203141462 )
- Используется в
Clickable
для правильной задержки взаимодействия с нажатием, когда жесты могут стать событиями прокрутки. - Исправлены
Clickables
, которые неправильно задерживали пульсацию при использовании внутриScrollable ViewGroup
. - Обновлены ящики и листы для правильной задержки нажатия на случай, если жесты могут стать событиями прокрутки.
-
CompositingStrategy.Always
переименован вOffscreen
чтобы указать, чтоgraphicsLayer
всегда будет отображаться в промежуточном буфере ( I47dc1 ). - Перегрузка макета несколькими слотами для контента теперь стабильна ( I10566 , b/248294649 ).
- Добавлены новые экспериментальные API
PerfettoTrace.record {}
иPerfettoTraceRule
для захвата трассировок Perfetto (также известных как системные трассировки) в рамках теста для проверки поведения и производительности теста. ( I3ba16 ) - В тестах пользовательского интерфейса, использующих правило Compose, продолжения, возобновленные во время обратных вызовов
withFrameNanos
не будут отправляться до тех пор, пока не завершится выполнение всех обратных вызовов кадров. Это соответствует поведению Compose при нормальной работе. Однако тесты, основанные на старом поведении, могут завершиться неудачно. Это должно влиять только на код, который напрямую вызываетwithFrameNanos
илиwithFrameMillis
и имеет логику вне обратного вызова, передаваемую тем функциям, которые, возможно, потребуется переместить внутри обратных вызовов. Примеры см. в изменениях теста анимации в этом CL. - Добавлен необязательный параметр
onPerformTraversals: (Long) -> Unit
в конструкторTestMonotonicFrameClock
и фабричная функция для запуска кода после обратных вызововwithFrameNanos
, но перед возобновлением сопрограмм вызывающего объекта. ( Idb413 , б/254115946 , б/222093277 , б/255802670 ) - Добавлен EmojiCompat в Compose ( Ibf6f9 , b/139326806 )
- В
@Preview
добавлен новый параметр обоев для поддержки динамического цвета ( I9f512 ).
Исправления ошибок
- Уведомления о применении снимка теперь отправляются после того, как
Recomposer
завершит применение изменений. ( Iad6c0 , b/222093277 ) - Внесены изменения в
captureToImage
, позволяющие делать скриншоты нескольких окон. Это полезно для тестов скриншотов, в которых используются всплывающие окна создания. ( я169c5 )
Обновления зависимостей
- Интерфейс Compose и Compose Material теперь зависят от жизненного цикла 2.5.1. ( I05ab0 , б/258038814 )
Версия 1.4.0-альфа02
9 ноября 2022 г.
Выпущен androidx.compose.ui:ui-*:1.4.0-alpha02
. Версия 1.4.0-alpha02 содержит эти коммиты.
Изменения API
- Обновлен
GraphicsLayerScope
, чтобы отображать текущий размерgraphicsLayer
. Это полезно для вычисления преобразованийgraphicsLayer
в зависимости от размера Composable. ( If8c43 , б/181387080 ) - Введена
CompositingStrategy
, чтобы определить, когда следует использовать закадровый слой композитинга для рендеринга содержимогоgraphicsLayer
. Auto поддерживает поведение по умолчанию, которое внутренне использует слой, если применяется альфа илиRenderEffect/Overscroll
. Always всегда будет вводить закадровый буфер, гдеModulateAlpha
будет избегать использования закадрового буфера и вместо этого будет модулировать каждую из записанных инструкций рисования вgraphicsLayer
. ИспользованиеModulateAlpha
по-прежнему будет использовать закадровый буфер для использованияRenderEffect/Overscroll
( I25e82 , b/256382834 ). -
invalidateSubtree()
был добавлен вModifier.Node
, чтобы сделать недействительными целые иерархии для макета и рисования. ( I4bd90 ) - Повысьте уровень
rememberNestedScrollInteropConnection
до стабильного. Введена возможность передавать корневое представление дляrememberNestedScrollInteropConnection
. Это может помочь пользовательскому представлению лучше реагировать на ограничения прокрутки, особенно в нестандартных представлениях (например,ModalBottomSheetDialog
). ( I9e107 ) - Добавлен интерфейс
ObserverNode
, который может использоваться реализациямиModifier.Node
, которые должны получать уведомление при изменении ранее прочитанного значения ( I5728b , b/247716483 ). - В
Paint
добавлен новый конструктор, который принимает собственныйandroid.graphics.Paint
. Также добавлена функция расширенияtoComposePaint()
, которая преобразует существующий собственный объект Paint в Compose Paint. ( Ica91b ) - Добавьте новый
FontFamily.Resolver.resolveAsTypeface
для использования на Android. ( I8950b ) - Добавьте
ToolingState
, чтобы позволить инструментам изменять внутренние состояния Composable ( Ie6614 ). - Инструменты рефакторинга для лучшей поддержки новых добавленных анимаций ( I8677b )
- Добавлен параметр
minLines
в Material и Material3 Text,TextField
иOutlinedTextField
, который позволяет установить минимальную высоту компонента с точки зрения количества строк ( I4af1d ).
Версия 1.4.0-альфа01
24 октября 2022 г.
Выпущен androidx.compose.ui:ui-*:1.4.0-alpha01
. Версия 1.4.0-alpha01 содержит эти коммиты.
Изменения API
- Был добавлен новый метод
awaitEachGesture()
для детекторов жестов. Он работает аналогичноforEachGesture()
, но цикл по жестам полностью работает внутриAwaitPointerEventScope
, поэтому события не могут быть потеряны между итерациями. -
forEachGesture()
устарел в пользуawaitEachGesture()
поскольку он позволяет терять события между жестами. ( Iffc3f , b/251260206 ) - Устаревшая переработка объектов специальных возможностей в androidx. Мы обнаружили, что изменения производительности незначительны даже в самых старых поддерживаемых версиях. ( I0a961 )
- Добавлен
DrawStyle
в качестве экспериментального атрибута дляTextStyle
иSpanStyle
чтобы включить рисование контурного текста. ( If24b8 , б/155421273 ) -
AnnotatedString.Builder
теперь реализуетkotlin.text.Appendable
. ( I1a061 , б/231030444 ) -
AnnotatedString.Builder
теперь имеет методappend(AnnotatedString, start: Int, end: Int)
для добавления подстрокиAnnotatedString
и пересекающихся стилей. - В функции рисования
Paragraph
иMultiParagraph
добавлен параметрDrawStyle
, который позволяет рисовать контурный текст. ( Ic8102 , б/155421273 )
Внешний вклад
- Спасибо за
vighnesh
за добавление ТВ-устройств в превью ( Ie15cd )
Версия 1.3
Версия 1.3.3
11 января 2023 г.
Выпущен androidx.compose.ui:ui-*:1.3.3
. Версия 1.3.3 содержит эти коммиты.
Исправления ошибок
- Исправлен сбой, который иногда возникал на Android 9, когда активность сохраняла состояние представления создания. ( I0b755 , б/260322832 )
Версия 1.3.2
7 декабря 2022 г.
Выпущен androidx.compose.ui:ui-*:1.3.2
. Версия 1.3.2 содержит эти коммиты.
Исправления ошибок
- Обновлен для использования Profobuf 3.21.8, что позволяет избежать предупреждения системы безопасности в
protobuf-javalite:3.19.4
(CVE-2022-3171) ( b/255545055 ).
Версия 1.3.1
9 ноября 2022 г.
Выпущен androidx.compose.ui:ui-*:1.3.1
. Версия 1.3.1 содержит эти коммиты.
Версия 1.3.0
24 октября 2022 г.
Выпущен androidx.compose.ui:ui-*:1.3.0
. Версия 1.3.0 содержит эти коммиты.
Важные изменения с версии 1.2.0
- Новый экспериментальный пакет API
LookaheadLayout
(обеспечивающий ранее невозможное поведение анимации) - Новый экспериментальный пакет API
Modifier.Node
(более производительная альтернативаModifier.composed
) - Улучшена поддержка вставок окон.
- Фокусная поддержка D-Pad и аппаратной клавиатуры в LazyLists.
- Максимальное поддерживаемое возвышение в диалоговых окнах и всплывающих окнах уменьшено до 8dp (критическое изменение поведения для некоторых специализированных систем дизайна – обоснование в примечаниях к выпуску бета-версии 01 ).
- Множество мелких, некритичных улучшений API.
- Множество исправлений ошибок и улучшений производительности.
Версия 1.3.0-rc01
5 октября 2022 г.
Выпущен androidx.compose.ui:ui-*:1.3.0-rc01
. Версия 1.3.0-rc01 содержит эти коммиты.
Изменения API
- Добавлен новый экспериментальный API Hyphens для поддержки автоматического расстановки переносов в тексте ( Iaa869 ).
Исправления ошибок
- Шрифты
DeviceFontFamilyName
не будут настраивать параметрыwght
иital
по умолчанию, вместо этого будут использоваться настройки платформы для загруженногоTypeface
. ( Ia7a6d , б/246989332 ) - Исправлена утечка памяти
LazyColumn
—onModifierLocalsUpdated
не вызывался со значением по умолчанию при повторном использовании модификаторов ( b/230168389 ).
Версия 1.3.0-beta03
21 сентября 2022 г.
Выпущен androidx.compose.ui:ui-*:1.3.0-beta03
. Версия 1.3.0-beta03 содержит эти коммиты.
Изменения API
- Добавьте параметры для настройки разрыва строк в тексте. ( I86907 )
- Изменен аргумент
size:IntSize
сconstraints: Constraints
в методеTextMeasurer.measure
для поддержки ограничений минимальной ширины. ( I37530 , б / 242707525 )
Исправления ошибок
- API
BackHandler
AndroidX Activity теперь работает в составномDialog
. ( I35342 )
Версия 1.3.0-бета02
7 сентября 2022 г.
Выпущен androidx.compose.ui:ui-*:1.3.0-beta02
. Версия 1.3.0-beta02 содержит эти коммиты.
Изменения API
- Добавлена экспериментальная перегрузка для Layout, которая принимает список нескольких составных лямбда-выражений контента, что позволяет по-разному угрожать измеримым величинам, помещенным в разные лямбды контента ( Ic1b4e ).
Изменения в экспериментальных API Focus:
-
FocusDirection.In
иFocusDirection.Out
устарели и замененыFocusDirection.Enter
иFocusDirection.Exit
. ( Я4262 , б/183746982 ) - Добавлены два новых свойства фокуса: Enter и Exit, позволяющие указать собственное поведение для
FocusManager.moveFocus(Enter)
иFocusManager.moveFocus(Exit)
. ( I5f3f9 , б/183746982 ) - Теперь вы можете использовать
FocusRequester.Cancel
для отмены перемещения фокуса.FocusRequester.Cancel
можно использовать в любом из следующих свойств фокуса: вверх, вниз, влево, вправо, следующий, предыдущий, начало, конец, вход и выход. ( Ib300f )
Версия 1.3.0-бета01
24 августа 2022 г.
Выпущен androidx.compose.ui:ui-*:1.3.0-beta01
. Версия 1.3.0-beta01 содержит эти коммиты.
Рефакторинг узла модификатора
Уровень, который обрабатывает экземпляры Modifier/Modifier.Element
и координирует их поведение на LayoutNodes
был существенно переработан. В нынешнем виде это был рефакторинг, который не затронул общедоступный API ни одного из многих модификаторов в Compose, и его можно рассматривать как изменение, касающееся только реализации. Несмотря на это, это важное изменение по разным причинам. ( Ie4313 )
Сводка изменений
Добавленные экспериментальные API-интерфейсы Modifier.Node
предоставляют абстракцию, которая позволяет поддерживать состояние экземпляра, которое будет сохраняться в течение жизненного цикла узла макета и будет выделяться для каждого узла макета и для каждого использования соответствующего Modifier.Element
, который его произвел.
В общих чертах, эта абстракция предоставляет альтернативный механизм для создания модификаторов с сохранением состояния, не полагаясь на механику API Modifier.composed
.
Риск
Это изменение строго двоично совместимо с предыдущими выпусками и должно быть обратно совместимым с точки зрения наблюдаемого поведения, насколько это практично и разумно. Тем не менее, есть несколько подсистем Compose, которые этот рефакторинг не затронул, и вполне вероятно, что поведение изменилось способами, которые не были охвачены нашими тестами и еще не были обнаружены и исправлены .
Пожалуйста, обновляйтесь до этой версии с осторожностью. Если вы считаете, что это что-то сломало, сообщите нам об этом.
Экспериментальные API
Были добавлены различные экспериментальные API, все они относятся к новой концепции «узла модификатора». Modifier.Node создаются в результате
-
fun modifierElementOf(…): Modifier
-
abstract class ModifierNodeElement
-
abstract class Modifier.Node
-
abstract class DelegatingNode
-
interface LayoutModifierNode
-
interface DrawModifierNode
-
interface SemanticsNode
-
interface PointerInputNode
-
interface ModifierLocalNode
-
interface ParentDataModifierNode
-
interface LayoutAwareModifierNode
-
interface GlobalPositionAwareModifierNode
-
interface IntermediateLayoutModifierNode
Изменение поведения
Максимально поддерживаемое возвышение в диалогах и всплывающих окнах уменьшено до 8dp.
Максимальное поддерживаемое возвышение для диалоговых окон и всплывающих окон «Создание» было уменьшено с 30dp до 8dp. Это изменение затрагивает как материалы, так и пользовательские диалоги и всплывающие окна пользовательского интерфейса. Это изменение сделано для устранения ошибки специальных возможностей в версиях Android ниже S и для обеспечения того, чтобы службы специальных возможностей в этих окнах могли взаимодействовать с содержимым внутри диалогового окна или всплывающего окна.
Это изменение повлияет на вас только в том случае, если вы создаете настраиваемое диалоговое окно или всплывающее окно с уровнем прав, установленным на уровни выше 8dp. Рассмотрите возможность снижения высоты вашего диалогового или всплывающего окна. Если вам нужно отказаться от этого нового поведения, рассмотрите возможность создания собственного диалогового или всплывающего окна с желаемым набором прав доступа. Это не рекомендуется, так как это может отрицательно сказаться на доступности, и разработчик должен обеспечить, чтобы нижняя часть диалогового окна или всплывающего окна была интерактивной и читаемой службами специальных возможностей.
Изменения API
- Исправлена проблема, из-за которой
painterResource
не обновлялся при изменении конфигурации ( I58e73 , b/228862715 ). -
rememberTextMeasurer
больше не принимает параметрыFontFamily.Resolver
,Density
илиLayoutDirection
. Используйте конструкторTextMeasurer
, чтобы указать собственные значения для этих параметров. ( Ia1da3 ) - Добавлено свойство
DialogProperties.decorFitsSystemWindows
, позволяющее диалоговым окнам поддерживатьWindowInsets
. ( I57742 , б / 229378542 ) - Конструкторы шрифтов перемещены обратно в исходный файл Kotlin, чтобы сохранить двоичную совместимость. Никаких изменений по сравнению с последней стабильной версией. ( Ieb2f3 )
- Удален ненужный оператор из нескольких определений равенства - это не имеет никакого эффекта. ( I6c309 )
-
FontVariation.Setting
— это закрытый интерфейс, позволяющий использовать API-интерфейсы ограничения в будущем. ( I11021 , б / 143703328 ) - Добавьте
CompositionGroup.findParameters
вSlotTree.kt
. Это позволяет инструментам получать параметры дляCompositionGroup
без необходимости анализа всей таблицы слотов. ( I124fe )
Версия 1.3.0-альфа03
10 августа 2022 г.
Выпущен androidx.compose.ui:ui-*:1.3.0-alpha03
. Версия 1.3.0-alpha03 содержит эти коммиты.
Изменения API
-
LayoutCoordinates.findRootCoordinates()
теперь общедоступен ( I7fa37 , b/204723384 ) - Добавлен экспериментальный API для получения
LayoutCoordinates
вPlacementScope
. Это позволяет разработчикам знать, где находится текущий макет, и размещать дочерние элементы относительно его положения. ( I5482b , б / 238632578 ) - Добавлен
LayoutCoordinates.transformFrom
для преобразования Matrix из одногоLayoutCoordinates
в другой. ( Ic5ab1 , б/238632578 ) -
SemanticsModifier.id
устарел и вместо этого переместил идентификатор семантики вLayoutInfo.semanticsId
. ( Iac808 , б/203559524 ) - Ресурсные шрифты теперь поддерживают настройку вариантов шрифта (API 26+). ( I900dd , б/143703328 )
- Поддержка переменных шрифтов в
DeviceFontFamilyNameFont
( Ic1279 , b/143703328 ) - Конструкторы шрифтов теперь принимают список
FontVariation.Setting
для настройки переменных шрифтов на устройствах O+. ( I11a9d , б/143703328 ) - Добавьте API
FontVariation
для определения и использования переменных шрифтов. ( I3c40c , б / 143703328 ) - Конструктор
LineHeightStyle.Alignment
теперь общедоступен (экспериментальный) ( I4bbbe , b/235876330 ) - Теперь абзац является ожидаемым|актуальным и определен для Android и настольных компьютеров. ( Id387e , б/239962983 )
- Параграф интерфейса теперь запечатан в интерфейсе Paragarph. Для подкласса параграфа нет вариантов использования, и мы рекомендуем связаться с вами, если это изменение повлияет на вас. ( Если5247 , б/239962983 )
- Удалена экспериментальная аннотация из
PlatformTextStyle
иLineHeightStyle
. ( I64bef ) -
TextInputService.show|hideSoftwareKeyboard
устарел. Вместо этого используйтеSoftwareKeyboardController
в коде приложения иTextInputSession
в коде управления IME. ( I14e4c , б/183448615 ) - Добавить новый API для существующих типов анимации ( I26179 ).
Исправления ошибок
- Добавлен
@RequiresPermission
для API, требующих предоставления разрешенияPOST_NOTIFICATIONS
в SDK 33 и более поздних версиях. ( Ie542e , б/238790278 )
Версия 1.3.0-альфа02
27 июля 2022 г.
Выпущен androidx.compose.ui:ui-*:1.3.0-alpha02
. Версия 1.3.0-alpha02 содержит эти коммиты.
Изменения API
- Добавлено новое свойство
PointerInputChange#pressure
для получения давления. ( I45a5e , б / 205164819 ) - Добавлен
rememberTextMeasurer
, чтобы легко создавать и запоминать экземплярыTextMeasurer
в композиции. ( I8d66e ) -
Rect
,RoundRect
иMutableRect
теперь поддерживают синтаксис Kotlinin
для вызова функцииcontains
. ( Ie42b0 , б/238642990 ) - Удалите ненужные функции из
KeyInjectionScope
, поскольку их можно легко реализовать с помощью более простых частей API. В число удаленных функций входятpressKeys
,keysDown
keysUp
. ( I81d77 ) - Переработаны имена констант и параметров в
KeyInjectionScope
, включившие суффикс «Миллис», где единицами измерения указанных констант и параметров являются миллисекунды. ( Ябеф5 ) - В
EditCommand
добавлен методtoStringForLog()
который помогает устранять проблемы с редактированием текста. ( I53354 , б / 228862731 ) - Добавлена функция расширения
drawText
вDrawScope
позволяющая рисовать многостильный текст на составных объектах и модификаторах, которые работают сDrawScope
напримерCanvas
иdrawBehind
. ( I16a62 , р/190787898 ) - Представьте новый экспериментальный API под названием
TextMeasurer
, который позволяет выполнять произвольные вычисления макета текста, которые дают результаты, идентичныеBasicText
, независимо от среды выполнения Compose. ( I17101 ) - Добавьте
mapTree
вSlotTree.kt
. Это позволяет инструментам проверятьSlotTree
без предварительного копирования в памяти, как это делает Tree. Для инспектора макетов это дает повышение производительности примерно в 10 раз. ( I5e113 ). - Изменен Compose Preview для хранения в двоичных выходных файлах, чтобы позволить разработчикам писать и повторно использовать аннотации
MultiPreview
из библиотек. ( I85699 , б / 233511976 )
Исправления ошибок
- При добавлении событий
InputEventChange
вVelocity
Tracker мы теперь будем учитывать дельты вместо позиций, это гарантирует правильное вычисление скорости для всех случаев, даже если целевой элемент движется ( Icea9d , b/216582726 , b/223440806 , b/227709803 ) - Исправлен NPE, вызванный
AnnotatedString.toUpperCase
при наличии аннотаций. ( I0aca2 , б/210899140 )
Версия 1.3.0-альфа01
29 июня 2022 г.
Выпущен androidx.compose.ui:ui-*:1.3.0-alpha01
. Версия 1.3.0-alpha01 содержит эти коммиты.
Изменения API
- Новый
LookaheadLayout
, который поддерживает просмотр вперед перед фактической мерой/макетом. Это позволяет предварительно рассчитать макет при его изменении, в то же время позволяя измерению/макету после просмотра использовать предварительно рассчитанный размер/положение для анимации размера и положения по отношению к цели.SubcomposeLayouts
пока не поддерживаются, но будут в следующем выпуске. ( I477f5 ) - Добавьте необязательный параметр альфа в вариант Brush для
TextStyle
иSpanStyle
чтобы изменить непрозрачность всегоText
. ( Ic2fac , б/234117635 ) - Представлен тип аннотации
UrlAnnotation
и связанные с ним методы для поддержки поддержки ссылокTalkBack
вAnnotatedString
s. ( I1c754 , б/231495122 ) - Перенос функциональности утилиты во время выполнения ( I4f729 )
Исправления ошибок
-
TextLayoutResult.getLineForOffset
не выдает. ( Idc5d6 , б/235876324 )
Внешний вклад
- Добавлен новый API
WindowInfo.keyboardModifiers
для наблюдения за его состоянием в составных функциях или через snapshotFlow ( Icdb8a ).
Версия 1.2
Версия 1.2.1
10 августа 2022 г.
Выпущен androidx.compose.ui:ui-*:1.2.1
. Версия 1.2.1 содержит эти коммиты.
Исправления ошибок
- Исправлен нулевой указатель в инспекторе ( b/237987764 ).
- Исправлено исключение приведения классов во время запоминания в инспекторе ( b/235526153 ).
Версия 1.2.0
27 июля 2022 г.
Выпущен androidx.compose.ui:ui-*:1.2.0
. Версия 1.2.0 содержит эти коммиты.
Важные изменения с версии 1.1.0
Улучшения в обходе фокуса:
- Прокрутка ленивых списков с помощью фокуса теперь работает с использованием нового основного API
BeyondBoundsLayout
. - Новые API настройки поведения в
FocusOrder
иFocusProperties
- Улучшено поведение при использовании физической клавиатуры или пульта от телевизора.
- Прокрутка ленивых списков с помощью фокуса теперь работает с использованием нового основного API
Новые API для:
- Оконные вставки
- Основные примитивы для управляемой жестами, бесконечной анимации и анимации макета.
- Возможности
GraphicsLayer
, включаяRenderEffect
Множество исправлений ошибок и улучшений производительности.
Версия 1.2.0-rc03
29 июня 2022 г.
Выпущен androidx.compose.ui:ui-*:1.2.0-rc03
. Версия 1.2.0-rc03 содержит эти коммиты.
- Никаких изменений с версии 1.2.0-rc02.
Версия 1.2.0-rc02
22 июня 2022 г.
Выпущен androidx.compose.ui:ui-*:1.2.0-rc02
. Версия 1.2.0-rc02 содержит эти коммиты.
Версия 1.2.0-rc01
15 июня 2022 г.
Выпущен androidx.compose.ui:ui-*:1.2.0-rc01
. Версия 1.2.0-rc01 содержит эти коммиты.
Изменения API
- Интерфейсы в библиотеках компоновки теперь создаются с использованием методов интерфейса jdk8 по умолчанию ( I5bcf1 ).
- В
KeyInjectionScope
добавлены функции более высокого порядка для ввода нажатий клавиш, когда другие клавиши удерживаются нажатыми или включены. К этим функциям относятсяwithKeysDown
,withKeysToggled
и т. д. Также добавлены свойства для проверки того, не нажата ли конкретная мета-клавиша, например,isCtrlDown
чтобы проверить, нажата ли какая-либо клавиша управления. Обратитесь кKeyInjectionScope
для получения документации по каждой функции. ( I9f6cd , б/229831515 ) - Был введен экспериментальный
OverscrollEffect
, позволяющий создавать собственные эффекты прокрутки, наряду с перегрузкамиModifier.scrollable
, которые его принимают. - Экспериментальная
LocalOverScrollConfiguration
была перенесена изfoundation.gesture
в базовый пакет и переименована вLocalOverscrollConfiguration
( If19fb , b/204650733 ). - Переименуйте
runComposeUiTestWithoutActivity {}
вrunEmptyComposeUiTest {}
, что приведет его в соответствие сcreateEmptyComposeRule()
( I6fed7 ).
Версия 1.2.0-бета03
1 июня 2022 г.
Выпущен androidx.compose.ui:ui-*:1.2.0-beta03
. Версия 1.2.0-beta03 содержит эти коммиты.
Изменения API
- Добавлен
pressKeyTimes
, а такжеisCapsLockOn
и его друзья вKeyInjectionScope
. Кроме того, API теперь поддерживает комбинированные шаблоны внедрения с помощью мыши и клавиатуры, например нажатие кнопки мыши с удерживаемой мета-клавишой. ( I4c8da , б / 229831515 ) - Добавлена экспериментальная поддержка внедрения ключевых событий. Используйте
performKeyInput
для отправки ключевых событий или отправляйте их через свойствоkey
MultiModalInjectionScope
во время жеста мультимодального ввода с помощьюperformMultiModalInput
. См.KeyInjectionScope
для документации API. ( Ic5000 , б/229831515 ) - Добавьте новый
GoogleFont.Provider.AllFontsListUri
для получения канонического интернет-источника шрифтов Google, поддерживаемых Android. - Улучшено отображение сообщений об ошибках, когда GoogleFonts не загружаются в режиме создания. ( I0416c )
Исправления ошибок
- При добавлении событий
InputEventChange
в Velocity Tracker мы теперь будем учитывать дельты вместо позиций, это гарантирует, что скорость будет правильно рассчитана для всех случаев, даже если целевой элемент движется ( I51ec3 , b/216582726 , b/223440806 , b/227709803 ). - Параметр
Show Layout Bounds
теперь будет применяться к составным объектам сразу после его переключения с плитки быстрых настроек, без необходимости выходить из действия и повторно входить в него. ( I843d5 , б/225937688 ) - Поиск строки доступности не вызывает загрузку шрифта. Раньше он пытался загрузить шрифты для
StyleSpans
, что приводило к сбоям, еслиFontFamily.Resolver
был перезаписан. ( I4609d ) - Нажатие клавиши удаления вперед, когда курсор находится в конце текстового поля, больше не приводит к сбою.
-
DeleteSurroundingTextCommand
иDeleteSurroundingTextInCodePointsCommand
теперь требуется, чтобы аргументы их конструктора были неотрицательными. ( Ica8e6 , р/199919707 )
Версия 1.2.0-бета02
18 мая 2022 г.
Выпущен androidx.compose.ui:ui-*:1.2.0-beta02
. Версия 1.2.0-beta02 содержит эти коммиты.
Изменения API
- Повторное использование функций в других типах предварительного просмотра ( I19f39 )
Исправления ошибок
-
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
был переименован вDisposeOnDetachedFromWindowOrReleasedFromPool
чтобы лучше отражать то, когда удаления действительно происходят, а не просто когда они не происходят. ( Если15ca )
Версия 1.2.0-бета01
11 мая 2022 г.
Выпущен androidx.compose.ui:ui-*:1.2.0-beta01
. Версия 1.2.0-beta01 содержит эти коммиты.
Новые возможности
- Это первая бета-версия 1.2!
Изменения API
- Добавлен экспериментальный
BeyondBoundsInterval
, который может использоваться пользовательскими реализациямиLazyList
при размещении элементов за пределами видимых границ ( Ifabfb , b/184670295 ). - Версии
Modifier.composed
с ключами теперь являются стабильным API ( Ie65e4 , b/229988420 ). - Упрощен API
rememberNestedScrollConnection
для использования локальных переменных композиции для получения информации о текущем представлении ( I67ca7 ). - Аннотация
@ComposableTarget
и аннотации, отмеченные@ComposableTargetMarker
теперь можно использовать в области файла с помощью префикса@file
. Использование целевой аннотации в области файла заставит компилятор предположить, что все составные функции в файле предназначены для соответствующего приложения. Например, использование@file:UiComposable
объявляет, что все функции@Composable
нацелены на приложение Compose UI. Функция, которой необходимо нацелиться на другое средство применения, должна явно указать аннотацию целевого маркера для желаемого средства применения. ( I40804 ) Представлен новый экспериментальный, независимый от платформы тестовый API:
interface ComposeUiTest
иfun runComposeUiTest(block: ComposeUiTest.() -> Unit)
, который можно использовать для запуска тестов Compose Ui без необходимости использованияTestRule
. Чтобы запустить тест безComposeTestRule
, передайте тест как лямбда-выражение вrunComposeUiTest
и используйте методы и члены в области приемникаComposeUiTest
, те же, что и вComposeContentTestRule
.Специальный для Android
interface AndroidComposeUiTest
иfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
добавляются для обеспечения доступа к базовому действию, аналогичноAndroidComposeTestRule
. Для еще большего контроля вы можете самостоятельно создать экземплярclass AndroidComposeUiTestEnvironment
.Реализация Desktop — это
class DesktopComposeUiTest
, но на данный момент специальные функции запуска Desktop не предлагаются.Перенос теста из
ComposeTestRule
вComposeUiTest
можно выполнить следующим образом (пример Android). От:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
К:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
На данный момент
ComposeContentTestRule
иComposeTestRule
не наследуются отComposeUiTest
, что означает, что функции расширенияComposeUiTest
еще не могут вызываться в интерфейсеTestRule
. КогдаComposeUiTest
перейдет на стабильный API,ComposeContentTestRule
иComposeTestRule
будут изменены и станут продолжениемComposeUiTest
. ( Ib4e90 )LineHeightBehavior
переименован вLineHeightStyle
LineVerticalAlignment
переименован вLineHeightStyle.Alignment
Переименовывает
LineHeightTrim
переименован вLineHeightStyle.Trim
Значения конструктора по умолчанию из
LineHeightStyle
удалены ( I582bf , b/181155707 ).В
TextStyle
иSpanStyle
добавленаBrush
, позволяющая рисовать текст градиентной окраской. ( I53869 , б / 187839528 )Атрибуты
trimFirstLineTop
иtrimLastLineBottom
LineHeightBehavior
преобразованы в одно перечисление:LineHeightTrim
.LineHeightTrim
имеет значения 4 состояний, определяемых двумя логическими значениями:FirstLineTop
,LastLineBottom
, Both и None ( Ifc6a5 , b/181155707 ).Добавлен
LineHeightBehavior
вTextStyle
иParagraphStyle
.LineHeightBehavior
определяет, применяется ли высота строки к верху первой строки и к низу последней строки. Он также определяет выравнивание строки в пространстве, предоставляемомTextStyle(lineHeight)
.Например, можно получить поведение, подобное тому, которое CSS определяет через
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.Конфигурации
trimFirstLineTop
,trimLastLineBottom
работают корректно только в том случае, еслиincludeFontPadding
установлено значение false. ( I97332 , б/181155707 )Функции
PlatformParagraphStyle.lerp
иPlatformSpanStyle.lerp
изменены на функции верхнего уровня ( I9a268 ).
Исправления ошибок
- В документации
PointerInputChange::copy
теперь правильно указано, что это неполная копия. ( I182f5 ) - Поддержка многоточия, когда высота ограничена и не помещается во все текстовые строки ( Ie528c , b/168720622 ).
- По умолчанию включен
includeFontPadding
. Можно отключитьincludeFontPadding
, используя атрибутTextStyle.platformTextStyle
. В ближайшем будущем мы изменим поведение по умолчанию, однако до тех пор это позволит нам лучше интегрировать улучшения высоты строки (aosp/2058653) и решить проблемы с обрезкойTextField
. ( I01423 , б/171394808 )
Внешний вклад
-
MouseInjectionScope.scroll(delta = someDelta)
теперь инвертируется на Android при вертикальной прокрутке (если значение someDelta положительное, оно будет прокручиваться вниз) ( Ifb697 , b/224992993 )
Версия 1.2.0-альфа08
20 апреля 2022 г.
Выпущен androidx.compose.ui:ui-*:1.2.0-alpha08
. Версия 1.2.0-alpha08 содержит эти коммиты.
Изменения API
- Функции
pluralStringResource
были помечены как экспериментальные, чтобы обеспечить возможность эволюции для поддержки лучшей интернационализации в будущем. ( Если24e4 ) - Paragraph и MultiParagraph теперь принимают параметр Constraints. Передача
Constraints.maxHeight
на данный момент невозможна, но позволит выполнять некоторые вычисления в будущем, например эллипсизацию на основе высоты. ( I6afee , б/168720622 ) -
SubcomposeSlotReusePolicy.getSlotsToRetain()
теперь принимает собственный класс, подобный MutableSet, который не позволяет добавлять в него новые элементы. ( Icd314 ) - PointerIcon теперь является интерфейсом
@Stable
( I9dafe ). - Частичное потребление (позиция вниз ИЛИ) устарело в
PointerInputChange
. Вы можете использоватьconsume()
чтобы полностью использовать изменения. Вы можете использоватьisConsumed
, чтобы определить, использовал ли это изменение кто-то другой ранее. -
PointerInputChange::copy()
теперь всегда создает неглубокую копию. Это означает, что копииPointerInputChange
будут использованы после использования одной из копий. Если вы хотите создать несвязанныйPointerInputChange
, используйте вместо этого конструктор. ( Ie6be4 , б/225669674 ) - Включите взаимодействие вложенной прокрутки между Compose и View в направлении Compose > View. Это означает, что составной родительский элемент сможет получать изменения вложенной прокрутки из представления вложенной прокрутки. ( Если7949 , б/174348612 )
- Новый
SemanticsProperty testTagsAsResourceId
, который можно использовать для обеспечения соответствия Compose тестам UIAutomator, разработанным для системы View. ( I39c20 ) - Отобразить все доступные веса системных шрифтов на Android при использовании
FontFamily.SansSerif
. При этом внутри API 21–28 будут использоваться резервные имена шрифтов, такие как sans-serif-medium. Это изменение поведения, поскольку ранее API 21–28 поддерживали только веса 400 и 700. ( I380fe , б / 156048036 , б / 226441992 ) - Преподаватели по абзацам и нескольким абзацам изменили порядок позиционных аргументов перед необязательными аргументами. ( Идафаа )
-
AndroidFont
теперь принимает typefaceLoader в качестве параметра конструктора. ( I2c971 )
Версия 1.2.0-альфа07
6 апреля 2022 г.
Выпущен androidx.compose.ui:ui-*:1.2.0-alpha07
. Версия 1.2.0-alpha07 содержит эти коммиты.
Изменения API
- Добавлена новая функция
Snapshot.withoutReadObservation { ... }
. Это позволяет пользователям запускать переданную лямбду без подписки на изменения значений состояния, считываемых во время этого блока. Вы можете найти это полезным в случаях использования, когда вы хотите получить выгоду от потокобезопасной записи/чтения на основе моментальных снимков, но хотите иметь возможность читать значение, не вызывая ненужной рекомпозиции или повторного измерения. ( I9f365 , б/214054486 ) - Свойство расширения
consumeWindowInsets
ComposeView
позволяет разработчикам отключать использование AndroidWindowInsets
. Это позволяет отдельнымComposeViews
в иерархии применятьWindowInsets
, не мешая друг другу. ( I0ef08 , б/220943142 ) - Добавлен
KeyboardType.Decimal
в качестве альтернативыKeyboard.Number
для включения десятичного разделителя в IME. ( Iec4c8 , б/209835363 ) -
PointerEventType.Scroll
иPointerEvent.scrollDelta
теперь являются стабильными API ( I574c5 , b/225669674 ). - Включите взаимодействие вложенной прокрутки между View и Compose для взаимодействия классов View. Это означает, что Compose теперь может отправлять изменения прокрутки (сотрудничающему) родительскому элементу View. ( I5d1ac , б/174348612 )
- Обновлен
FontFamily.Resolver
для интеграции общесистемных настроек доступности полужирного текста ( I6c1e7 ). -
Font(AssetManager, String, ...)
устарел, заменен наFont(String, AssetManager, ...)
. Это экспериментальный API. ( I1c7a4 ) - Добавьте новый дескриптор шрифта
Font(DeviceFontFamilyName)
для дополнительного поиска установленных в системе шрифтов во время цепочек резервных шрифтов. ( I30468 , б / 219754572 ) - Добавлена конфигурация временной совместимости для
includeFontPadding
в TextStyle/ParagraphStyle.includeFontPadding
может быть изменен с помощьюTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Это временная опция конфигурации для включения миграции и будет удален. ( If47be , b/171394808 ) - Добавить
GoogleFont.Provider.isAvailableOnDevice
расширение для отладки справки. ( I64e31 ) - Добавьте конструктор
GoogleFont.Provider
для использования с@ArrayRes
( IC5EE1 , B/225984280 ) -
Compose GoogleFont
теперь называетсяFont(GoogleFont)
, API остается стабильным в противном случае. ( I125f2 )
Исправления ошибок
- Добавлена чека для материала/каркаса, чтобы убедиться, что внутренняя прокладка используется ( IFB111 )
Версия 1.2.0-Alpha06
23 марта 2022 г.
androidx.compose.ui:ui-*:1.2.0-alpha06
выпускается. Версия 1.2.0-Alpha06 содержит эти коммиты.
Изменения API
- Добавлено
RequestFocus
Semantics Action, чтобы запросить фокус на фокусируемой цели. ( I17b71 ) - Обновленное анализ векторных притяжении для поддержки автоматического зеркального зеркала, чтобы перевернуть содержание
VectorPainter
если направление текущего макета составляет RTL. ( I79cd9 , b/185760237 ) Обновленные цвета тени/окружающей среды , чтобы быть параметрами
Modifier.graphicsLayer
.Добавлены реализации по умолчанию в теневой/окружающий цвет на
GraphicsLayerScope
чтобы обеспечить непрерывные изменения APIДобавлено время мероприятия в RSB Events ( IEF8AE )
FocusOrder
в настоящее время объединен вFocusProperties
, аfocusProperties()
теперь обладает всеми возможностямиfocusOrder()
.FocusOrder
иfocusOrder()
установились.focusOrder()
, который принимаетfocusRequester
должен быть заменен модификаторомfocusRequester()
в сочетании сfocusProperties()
. Это позволяет модификаторам иметь более сильное разделение проблем. ( I601b7 )Обновление как
RecyclerView
, так иCompose
теперь приведет к гораздо лучшей производительности прокрутки для переработки с составными видами в качестве детей.Добавить
ViewCompositionStrategy.Default
как средство получения встроенной стратегии по умолчаниюДобавить
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
, которая является новой стратегией по умолчанию и правильно обрабатывает объединение контейнеров, таких как Recyclerview. ( IF7282 )Добавлена поддержка аннотирования классов аннотаций с @preview в качестве первого шага для добавления функции Multipreview. Такие аннотации могут быть использованы для аннотирования композиционных методов или других классов аннотаций, которые затем можно рассматривать как косвенно аннотированные с данным @preview. ( I12EFF )
Справочные устройства, добавленные в список устройств для @preview ( i071c9 )
Исправления ошибок
- Обновленные API -интерфейсы Vector Graphics для использования правильной композиционной аннотации @VectorCompoSable вместо @UIComposable ( i942bc )
- Снимите CrossInline с
AnnotatedString.Builder.withStyle
( IF84D5 )
Внешний вклад
- Compose-UI: Добавить свойства
ambientShadowColor
иspotShadowColor
вGraphicsLayerScope
( I1BA1A , B/160665122 ) - Множество ресурсов теперь поддерживаются с помощью функций
pluralStringResource
. ( IB2F23 , B/191375123 )
Версия 1.2.0-Alpha05
9 марта 2022 г.
androidx.compose.ui:ui-*:1.2.0-alpha05
выпускается. Версия 1.2.0-Alpha05 содержит эти коммиты.
Изменения API
-
TextToolbar
теперь принимает аргументы Lambda вместоActionCallback
. ( IB2EB9 , B/197950089 ) - Обновленная нулясь в Core и AppCompat в соответствии с тирамису DP2 ( I0CB7 )
- Измеренный интерфейс теперь раскрывает свойство ParentData ( i3313f )
-
Modifier.onPlaced
и интерфейсOnPlacedModifier
теперь стабильны. ( IB5482 ) - Ура! Комплекс анимации теперь поддерживает настройку «Шкала продолжительности аниматора» из параметров разработчика. ( I5a4fc , b/161675988 )
- Добавлен локальный модификатор
BeyondBoundsLayout
( IF8B51 , B/184670295 ) - Текст: включать FontPadding теперь отключается по умолчанию. Проблемы с отсечением в результате
includeFontPadding=false
обрабатывается, и для высоких сценариев не должно происходить обрезка. ( I31C84 , B/171394808 )
Исправления ошибок
-
ComposeContentTestRule.setContent
теперь выброситIllegalStateException
, если вы попытаетесь установить контент, когда уже есть контент. ( I888a5 , B/199631334 ) - Исправьте сбой, вызванный контентом буфера обмена во время чтения из буфера обмена на Android. ( I06020 , B/197769306 )
- Улучшить образцы прокрутки RSB. ( I6a596 )
Внешний вклад
- Обновлено для использования Cotlinx Coroutines 1.6.0 ( i3366d )
Версия 1.2.0-Alpha04
23 февраля 2022 г.
androidx.compose.ui:ui-*:1.2.0-alpha04
выпускается. Версия 1.2.0-Alpha04 содержит эти коммиты.
Изменения API
Добавлен
ComposableTarget
,ComposableTargetMarker
иComposableOpenTarget
, которые позволяют отчетность по времени компиляции, когда композиционная функция называется нацеленным на приложение, которое он не предназначен для использования.В большинстве случаев аннотации могут быть выведены с помощью плагина компилятора Compose, поэтому использование этих аннотаций непосредственно должно быть редким. Случаи, которые нельзя вывести, включают создание и использование пользовательских прикладных, абстрактных композиционных функций (таких как методы интерфейса), поля или глобальные переменные, которые являются композиционными лямбдами (выводится локальные переменные и параметры), или при использовании
ComposeNode
или связанных композиционных функций .Для пользовательских приборов композиционные функции, которые вызывает
ComposeNode
илиReusableComposeNode
необходимо добавить аннотациюComposableTarget
для функции и любые типы параметров композиции Lambda. Однако рекомендуется создать аннотацию, которая аннотирована с помощьюComposableTargetMarker
, а затем отмеченная аннотация вместоComposableTarget
напрямую. Компонируемая аннотация, помеченнаяComposableTargetMarker
, эквивалентнаComposbleTarget
с полностью квалифицированным именем класса атрибутов в качестве параметра приложения. Для примера использованияComposableTargetMarker
см.anroidx.compose.ui.UiComposable
. ( I38f11 )Font(resId, ...)
теперь принимает погрузку на стабильный API. ( IEF3D2 )FontLoadingStrategy
теперь стабильный API. ( I1ee35 , b/174162090 )Поддержка Async Prot загрузка в тексте ( i77057 , b/214587005 )
Добавьте мост API для преобразования
FontFamily.Resolver
Font.ResourceLoader
. ( IA0060 )
Исправления ошибок
- При условии, что
FontFamily.Resolver
передается в подкомпозиции, такие как всплывающее окно. - При условии, что
Font.ResourceLoader
передаются в подкомпозиции, такие как Popup. ( I48fa5 )
Версия 1.2.0-Alpha03
9 февраля 2022 г.
androidx.compose.ui:ui-*:1.2.0-alpha03
выпускается. Версия 1.2.0-Alpha03 содержит эти коммиты.
Изменения API
- Методы
notifyFocusedRect
вTextInputSession
иTextInputService
теперь устарели и не будут вызваны. Вместо этого используйтеBringIntoViewRequester
. ( IA4302 , B/192043120 , B/216842427 , B/178211874 ) - Введенный метод
destroyDisplayListData
на классеRenderNode
stub ( i1e659 , b/216660268 ) - Добавлен новый API, который позволяет предотвратить, что дети из
SubcomposeLayout
( I857ea ) Добавлен
movableContentOf
, который преобразует композиционную лямбду в лямбду, которая перемещает его состояние и соответствующие узлы, в любое новое местоположение, которое она называется. Когда предыдущий вызов покидает композицию, состояние временно сохраняется, и если новый вызов Lambda входит в композицию, то штат и связанные узлы перемещаются в место нового вызова. Если новый вызов не добавляется, состояние удаляется навсегда, и помните, что наблюдатели уведомляются.Если в одном и том же композиции называется
movableContentOf
несколько раз, для каждого вызова создается новое состояние и узлы, и, когда вызовы оставляют композицию и новые вызовы вводится, состояние перемещается из первых вызовов на въезды в заказе. они называются. Все государство не заявлено новыми вызовами, удаляется навсегда. ( IB4850 )FontFamilyResolver
теперь доступен черезLocalFontFamilyResolver.current
Добавлены
createFontFamilyResolver(context)
иcreateFontFamilyResolver(context, coroutineScope)
чтобы создать новые резолюры Fontfamily вне сочинения.Абзац и многопокаграф, теперь принимайте
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
теперь содержит резольвер, используемый для этого макета, устаревшийTextLayoutResult.layoutInput.resourceLoader
поскольку он больше не используется. ( ID5A45 , B/174162090 )Поддержка асинхронной и необязательной загрузки шрифта, с запасным поведением. Этот путь используется текстовым и текстовым полем и выявляется через Fontfamilyresolver
Поддержка предварительной загрузки шрифтов через
FontFamilyResolver.preload
FontFamilyResolver.setAsyncLoadContext
позволяет устанавливать глобальный контекст Coroutine, используемый для загрузки асинхронных шрифтов. ( I87Fe8 , B/174162090 )Добавлен
AndroidFont
, новый низкоуровневый API для предоставления новых типов дескрипторов ресурсов Font на Android. Например, загружая шрифты с бэкэнда, специфичного для приложения, необязательно определение предварительно установленных шрифтов на устройстве или загрузка шрифта из ресурса, не предоставленного текущими заводами шрифтов.Расширенный API
Font.ResourceLoaded
для поддержки дополнительной и асинхронной загрузки шрифтов. Не рекомендуется, чтобы разработчики приложений использовали этот API напрямую. Чтобы добавить новые типы шрифтов, см.AndroidFont
.Font.AndroidResourceLoader
Функция расширения позволяет построитьFont.ResourceLoader
, когда он находится за пределами композиции.Добавлен параметр
loadingStrategy
шрифтов на основе ресурсов, чтобы позволить асинхронную загрузку, когда ресурсные шрифты ссылаются на загружаемые шрифты XML. ( IE5AEA , B/174162090 )Конструктор
Typeface(FontFamily)
устарел. Ранее это использовалось для предварительной загрузки шрифтов, что может занять до 10 секунд для загружаемых шрифтов. С загружаемыми шрифтами этот вызов может заблокироваться в течение 10 секунд. Вместо этого используйтеFontFamilyResolver.preload
.fontResource(FontFamily): Typeface
устарел. Ранее это использовалось для предварительной загрузки шрифтов, что может занять до 10 секунд для загружаемых шрифтов. Вместо этого используйтеFontFamilyResolver.preload
( if8e7c , b/174162090 )SubcomposeLayoutState
Constructor, принимающийmaxSlotsToRetainForReuse
в настоящее время устарел. Вместо этого существует новый конструктор, принимающийSubcomposeSlotReusePolicy
- новый интерфейс, позволяющий более детально контролировать, какие слоты должны быть сохранены для будущего повторного использования. ( I52c4d )Обнажает функцию HSV и HSL в
Color
как неэкспериментальный API. Цветовое пространство Оклаба теперь является публичным API. ( I08FB6 , B/180731008 )Умеренный
AndroidComposeTestRule.AndroidComposeStatement
, который не должен был быть в публичном API и все равно ничего не сделал для вас. ( IBC46B )Внутреннее сгенерированное переименование класса KT ( IA0B9E , B/174162090 )
Удаленные
FontLoadingStrategy.values
( i42a9d , b/174162090 )Глобальный погрузчик шрифта теперь называется
FontFamilyResolver
. ( I4f773 , b/174162090 )Используйте новую систему загрузки шрифтов для настольного компьютера. ( I9ce5c , b/174162090 )
FontFamily.Resolver.resolve
возвращаетState<Any>
( i4406c , b/174162090 )
Исправления ошибок
- Textfields теперь будет храниться над клавиатурой, когда они будут сфокусированы, а клавиатура отображается, когда режим мягкого ввода
ADJUST_PAN
. ( I8eaeb , b/190539358 , b/192043120 ) - Настольный компьютер использует композицию локальной для
FontFamily.Resolver
- Настольный
FontLoader
устарел - Новая фабрика
createFontFamilyResolver
на рабочем столе ( I6BBBB , B/174162090 ) - Тип ввода мягкой клавиатуры больше не мерцает при изменении фокуса между текстовыми полей. ( I1bf50 , b/187746439 )
Версия 1.2.0-Alpha02
26 января 2022 г.
androidx.compose.ui:ui-*:1.2.0-alpha02
выпускается. Версия 1.2.0-Alpha02 содержит эти коммиты.
Изменения API
- Добавлен
Modifier.onRotaryScrollEvent()
иModifier.onPreRotaryScrollEvent()
для устройств износа с вращающейся боковой кнопкой ( I18BF5 , B/210748686 ) - Добавить экспериментальный
View.createLifecycleAwareRecomposer
. CreatelifecycleawarereComposer Extension ( i0cde6 )
Внешний вклад
-
PointerEvent.scrollDelta.y
теперь перевернут на Android (теперь он возвращает 1 вместо -1, если мы наклоним колесо мыши вправо) ( IA9811 )
Версия 1.2.0-Alpha01
12 января 2022 г.
androidx.compose.ui:ui-*:1.2.0-alpha01
выпускается. Версия 1.2.0-Alpha01 содержит эти коммиты.
Изменения API
- Умеренная
FontFamily.canLoadSynchronously
. Это свойство не имеет семантического значения. ( ICA5EF ) - Добавлен поле идентификации в
CompositionData
для генерации инвариантных идентификаторов в инспекторе макета. ( IC116E ) - Добавлены идентификаторы идентификации устройств ОС для предварительного просмотра устройств ( I93232 )
Обновления зависимости
- Теперь зависит от Kotlin
1.6.10
.
Версия 1.1
Версия 1.1.1
23 февраля 2022 г.
androidx.compose.ui:ui-*:1.1.1
выпускается. Версия 1.1.1 содержит эти коммиты.
Исправления ошибок
- Исправить
NullPointerException
наandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
( AOSP/1947059 , b/206677462 ) - Исправьте сбой, вызванный контентом буфера обмена во время чтения из буфера обмена на Android. ( I06020 , B/197769306 )
- Фиксированный RTL в
LazyVerticalGrid
( AOSP/1931080 , B/207510535 )
Версия 1.1.0
9 февраля 2022 г.
androidx.compose.ui:ui-*:1.1.0
выпускается. Версия 1.1.0 содержит эти коммиты.
Важные изменения с 1.0.0
- Стабильная поддержка эффекта перепроверчика Android 12
- Улучшения по поводу достижения целевого размера
- Обратите внимание, что в отношении сочинения 1.0 компоненты материала будут расширять место для макета, чтобы соответствовать рекомендациям доступности материала для прикосновения целевого размера . Например, Target Button Touch будет расширяться до минимального размера 48x48DP, даже если вы установите размер кнопки меньше. Это выравнивает материал с тем же поведением компонентов дизайна материала, обеспечивая постоянное поведение, если вы смешиваете виды и сочиняете. Это изменение также гарантирует, что при создании вашего пользовательского интерфейса используется компоненты Compose Material, будут выполнены минимальные требования к доступающей целевой доступности.
- Стабильная поддержка навигационной железной дороги
- Выпускники ряда ранее экспериментальных API до стабильных
- Поддержка новых версий Kotlin
Версия 1.1.0-RC03
26 января 2022 г.
androidx.compose.ui:ui-*:1.1.0-rc03
выпускается. Версия 1.1.0-RC03 содержит эти коммиты.
Исправления ошибок
- Обновлено для поддержки Compose Material 1.1.0-RC03
Версия 1.1.0-RC01
15 декабря 2021 г.
androidx.compose.ui:ui-*:1.1.0-rc01
выпускается. Версия 1.1.0-RC01 содержит эти коммиты.
Исправления ошибок
- Исправлена ошибка, которая вызвала отсутствующие действия прокрутки доступности ( i7cbfb )
-
SemanticsNodeInteraction.captureToImage()
теперь также будет работать, еслиHardwareRenderer.isDrawingEnabled()
являетсяfalse
, позволяя ему на срок вызова ( IDF3D0 )
Версия 1.1.0-бета04
1 декабря 2021 г.
androidx.compose.ui:ui-*:1.1.0-beta04
выпускается. Версия 1.1.0-beta04 содержит эти коммиты.
Новые функции
- Обновлено, чтобы быть совместимым с Kotlin
1.6.0
Изменения API
- Очищенная нулясь в
androidx.core.view
( i7078a , b/204917439 ) - Были добавлены экспериментальные API, которые позволяют пользователям потреблять pointerinputChange в целом или проверять, был ли он потребляется или нет. ( I2e59d )
- Добавляет поддержку событий прокрутки мыши в слое пользовательского интерфейса. ( IA14EB , B/198214718 )
- Добавьте экспериментальные
Modifier.composed
. ( ICE799 , B/205851704 ) -
ComposeNotIdleException
теперь простирается отException
а не непосредственно отThrowable
. Обратите внимание, что это означает, что ловкие пункты, которые улавливалиException
, теперь могут пойматьComposeNotIdleException
S, где они не будут делать это ранее. ( I9c217 )
Исправления ошибок
- Исправьте текстовые ручки, не движущиеся при изменении видимости IME. ( I25f2e )
Версия 1.1.0-BETA03
17 ноября 2021 г.
androidx.compose.ui:ui-*:1.1.0-beta03
выпускается. Версия 1.1.0-beta03 содержит эти коммиты.
Изменения API
- Добавлен новый модификатор модификатора. Согласно для того, чтобы можно было наблюдать изменение размещения. Поэтому дополнительные изменения в смещении модификатора ребенка могут быть внесены на основе наблюдаемого изменения размещения. ( I558fd )
- Удален
InjectionScope.flush()
иInjectionScope.dispose()
. Промывание всех событий и утилизация объема теперь происходит в конце метода CALLER Perform*input (), как ранее. ( I2bed8 ) - Удален
MultiModalInjectionScope.Touch
иMultiModalInjectionScope.Mouse
. Для тогоMultiModalInjectionScope.mouse()
чтобы внедрить события прикосновения и мыши для мультимодальных жестов, теперь вы можете использоватьMultiModalInjectionScope.touch()
. ( Idde18 )
Исправления ошибок
- Значение по умолчанию для
durationMillis
inTouchInjectionScope.swipeWithVelocity
в настоящее время рассчитывается таким образом, что смахивание возможным. ( I19deb )
Версия 1.1.0-бета02
3 ноября 2021 г.
androidx.compose.ui:ui-*:1.1.0-beta02
выпускается. Версия 1.1.0-beta02 содержит эти коммиты.
Изменения API
- Добавлен экспериментальный API ArvingIntoView, который позволяет вам отправлять запрос родителям, чтобы они прокручивали, чтобы представить представление ( IB918D , B/195353459 )
- Новые анимационные API для поддержки инструментов. В частности, они позволяют инструментам осматривать анимации и их конфигурации в переходах. ( I4116e )
Внешний вклад
- Добавлен модификатор.pointerhovericon ( i95f01 )
Версия 1.1.0-бета01
27 октября 2021 г.
androidx.compose.ui:ui-*:1.1.0-beta01
выпускается. Версия 1.1.0-beta01 содержит эти коммиты.
Изменения API
- Добавлен экспериментальный API
BringIntoView
, который позволяет вам отправлять запрос родителям, чтобы они прокручивали, чтобы представить представление ( IB918D , B/195353459 ) - Новые анимационные API для поддержки инструментов. В частности, они позволяют инструментам осматривать анимации и их конфигурации в переходах. ( I4116e )
Версия 1.1.0-Alpha06
13 октября 2021 г.
androidx.compose.ui:ui-*:1.1.0-alpha06
. Версия 1.1.0-Alpha06 содержит эти коммиты.
Изменения API
- Удалить
ExperimentalComposeUiApi
изViewRootForInspector
иLayoutInfo.ownerViewId
( i5c2e3 ) - Была добавлена перегрузка без ребенка для макета, с повышенной эффективностью ( IB0D9A )
- Удален
InternalCompilerApi
из методов композитора, которые необходимо назвать кросс-модулем ( I1AA0B ) -
SemanticsNodeInteraction.performSemanticsAction
теперь возвращаетSemanticsNodeInteraction
, на котором была вызвана функция. ( I9e5db ) - Добавлен локальный iNputModeManager ComposotionLocal для обнаружения TouchMode/NontouchMode. ( I6a83c , b/1758999786 )
- Добавлено
viewConfiguration: ViewConfiguration
toLayoutInfo
чтобы потребители получали правильное значение для таких вещей, как Long Press Timeout. ( I76ca6 )- Добавлено
viewConfiguration: ViewConfiguration
toInjectionScope
, чтобы позволить тестам регулировать входную инъекцию на основе таких вещей, как длительный тайм -аут или сенсорный стол. - Измененная продолжительность по умолчанию длинного нажима и двойного нажатия как для прикосновения, так и для мышиного ввода основывалась на значениях в
InjectionScope.viewConfiguration
.
- Добавлено
- Внедрение EnseposedDropdownMenu на основе EsposedDropdownmenubox с Textfield и Droplownmenu внутри ( IF60B2 )
- DemissonOutsIdeClick был добавлен в PopUppRoperties, заменив увольнение, которая была устарела. Новое свойство получает позицию Click и границы якоря, обеспечивая более тонкий контроль над тем, следует ли вызывать OndismissRequest или нет. Например, это может быть полезно, чтобы предотвратить увольнение якоря для прикосновений на якоре.
- UpdateAndroidwindowmanagerflags был добавлен в PopuppRoperties, предлагая низкоуровневый контроль над флагами, передаваемыми всплывающим окном для Android Windowmanager. Параметр Lambda будут флаги, рассчитанные по значениям PopuppRoperties, которые приводят к флагам Windowmanager: например, фокусируются. Результатом Lambda станут финальные флаги, которые будут переданы Android Windowmanager. По умолчанию UpdateAndroidewindowmanagerflags оставит флаги, рассчитанные по параметрам без изменений. Этот API следует использовать с осторожностью, только в тех случаях, когда всплывающее окно имеет очень конкретные требования к поведению. ( I6e9f9 )
-
Recomposer.state
был устарел и замененRecomposer.currentState
, чтобы изменить свой тип на Stateflow ( IC2AB3 , B/197773820 ) - Добавлено
flush()
иdispose()
кInjectionScope
. Используйте их, когда вы хотите сразу же пропустить все события в очереди и когда вы хотите избавиться от прицела, соответственно. ( IFB73A ) - Добавлены
performScrollToNode(matcher: SemanticsMatcher)
, который прокручивает прокручиваемый контейнер с контентом, который соответствует данному маттеру. ( IC1CB8 ) -
InjectionScope
теперь реализуетDensity
, позволяя вам легко преобразовать между PX и DP вperformTouchInput
и друзьях. ( I8fe1f )
Исправления ошибок
- AndroidView теперь распространяет Locallifecycleowner и LocalsavedStateRegistry, а также на его представление через ViewTreelifeCycleowner и ViewTrereSavedStateRegistryOuner. ( I38F96 , B/179708470 )
- Исправлена Foreos Swipetodismissbox, иногда не обрабатывает Swipes. ( I9387e )
- Время по умолчанию между инъецированными входными событиями было изменено с 10 мс до 16 мс. Это потенциально изменяет результат тестов, которые выполняют входные жесты, например, конкретный удар. ( I829fd )
Версия 1.1.0-Alpha05
29 сентября 2021 г.
androidx.compose.ui:ui-*:1.1.0-alpha05
выпускается. Версия 1.1.0-Alpha05 содержит эти коммиты.
Изменения API
- Добавлена поддержка связи между модификатором ( ID5467 , B/198826874 )
- Добавлены экспериментальные исторические указатели к Pointereventchange. ( IC1FD8 , B/197553056 , B/199921305 )
- Добавлена
density: Density
LayoutInfo
layoutDirection: LayoutDirection
Это позволяет потребителямLayoutInfo
интерпретировать размеры и положение, выявленное вLayoutInfo
. ( I002f1 ) - Добавлена экспериментальная поддержка для инъекции мыши. Используйте
performMouseInput
, чтобы начать отправку событий мыши или отправить события мыши через свойствоMouse
MultiModalInjectionScope
во время многомодального входного жеста с помощьюperformMultiModalInput
. См.MouseInjectionScope
для документации доступного API. ( IAA4A8 , B/190493367 )
Исправления ошибок
- Фиксированная поддержка доступности для прокрутки (как ленивых, так и не ленивых) в отношении прокрутки ( i6CDB0 )
- Улучшение
TouchInjectionScope.swipeWithVelocity
. Теперь он принимает более широкий диапазон входных переменных и будет предлагать изменения в входе, если нельзя создать посреды ( i40fbe , b/182477143 )
Версия 1.1.0-Alpha04
15 сентября 2021 г.
androidx.compose.ui:ui-*:1.1.0-alpha04
выпускается. Версия 1.1.0-Alpha04 содержит эти коммиты.
Изменения API
- У
PointerEvent
теперь естьPointerEventType
для поддержки событий наклонения. ( I091FA ) - Позвольте детям принять ввод указателя за пределами входных границ указателя родителей. Родители могут перехватывать эти вызовы с помощью PropertiinputScope.AlwaysInterceptChildEvents ( i9eae3 , b/192479655 )
- Устаревшие
performGesture
иGestureScope
, которые были заменены наperformTouchInput
иTouchInjectionScope
. ( IA5F3F , B/190493367 ) - Добавлено
touchBoundsInRoot
вSemanticsNode
, который включает в себя минимальный целевой размер сенсорной цели, чтобы разработчики могли убедиться, что целевые показатели соприкосновения соответствуют минимумам доступности. ( I2e14b , b/197751214 ) - Реализация инспекторов ( I927BC , B/191017532 )
- Изменено имя параметра Inspectable для сопоставления составлена ( I3A482 , B/191017532 )
Введен
performTouchInput
иTouchInjectionScope
в качестве замены дляperformTouchInput
иTouchInjectionScope
, прокладывая путь для других методов (например, мышь).TouchInjectionScope
имеет те же методы, что иGestureScope
, за исключениемmovePointerTo
иmovePointerBy
, которые были переименованы вupdatePointerTo
иupdatePointerBy
. Все остальные методы одинаковы.Поведение
TouchInjectionScope
почти идентичноGestureScope
, с двумя мелкими деталями:- При отправке события вниз, в то время как указатели были перемещены без отправки события движения (другими словами, использовалось
updatePointerTo()
, но неmove()
, а затемdown()
называется), предыдущая реализация будет продвигать время события и отправьте событие для хода, прежде чем отправить событие Down. Новая реализация по -прежнему отправляет событие Move, но не продвигает время события в этом конкретном сценарии. - При отправке мероприятия UP, в то время как указатели были перемещены без отправки события Move (аналогично вышеупомянутым), предыдущая реализация продвигает время события и отправила событие Move перед отправкой мероприятия UP. Новая реализация не делает ни одного: новые позиции указателей будут отражены только через событие UP.
Наконец,
TouchInjectionScope
вводит новый методcurrentPosition(pointerId: Int)
чтобы получить текущую позицию данного указателя. ( IF1191 , B/190493367 )- При отправке события вниз, в то время как указатели были перемещены без отправки события движения (другими словами, использовалось
Исправления ошибок
- Позвольте CLIP расширить границы с сенсорными целями за пределы области зажима для минимальных целей Touch Target. ( I43e10 , b/171509422 )
- Поддержка для растяжения Oupercroll была добавлена на устройствах Android 12. ( ICCF3C , B/171682480 )
Версия 1.1.0-Alpha03
1 сентября 2021 г.
androidx.compose.ui:ui-*:1.1.0-alpha03
выпускается. Версия 1.1.0-Alpha03 содержит эти коммиты.
Новые функции
- Обновленная композа
1.1.0-alpha03
чтобы зависеть от Kotlin1.5.30
. ( I74545 )
Изменения API
- Добавлен
Modifier.inspectable
для обертывания других модификаторов. ( I1909B , B/191017532 ) - Добавлены API
BlurredEdgeTreatment
, чтобы упростить варианты использования размытия в более часто используемые комбинации флагов клип. Большинство вариантов использования включают либо разрешение размытого контента, рендеринг за пределами исходных границ контента и размывающих областей вне этих границ с прозрачным черным, или обрезка содержимого, чтобы отбывать на наиболее ближайший край для размытых ядер, которые выходят за рамки границ контента. ( I6b4b7 , b/166927547 ) - Добавлена поддержка RendereFect в Compose Desktop. Введен внедрение, а также модификатор размытия как простой способ ввести визуальные эффекты размытия в часть иерархии композиции. ( I0F6AA , B/166927547 )
- Введен API rendereFect, который можно при желании настроить на
Modifier.graphicsLayer
изменить содержание самого уровня. Это может быть использовано для размытия содержимого композиционных и дочерних композибетов в рамках иерархии композиции. ( I47c4d , b/166927547 ) - AwaitPointerEventScope теперь есть WhistimeOut () и WhistimeOutnull () ( I507F0 , B/179239764 , B/182397793 )
- Добавлен минимальный сенсорный целевой размер для ViewConfiguration для использования в семантике и вводах указателя для обеспечения доступности. ( IE861C )
- Добавьте TileMode.decal поддержку, которая полезна для определения поведения края для размытых рендеринга. ( I7e8ed , b/166927547 )
-
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
иhasScrollToKeyAction
теперь стабильные API ( I142ae , B/178483889 ) - Добавлен метод испытаний, чтобы получить обрезанные границы. ( I6b28e )
Исправления ошибок
- Удаленный испанный метод от BlurrededGetReatment в пользу явной проверки, является ли параметр формы нулевым. ( I85d68 )
Версия 1.1.0-Alpha02
18 августа 2021 г.
androidx.compose.ui:ui-*:1.1.0-alpha02
выпускается. Версия 1.1.0-Alpha02 содержит эти коммиты.
Изменения API
- PointerEvent теперь поддерживает чтение состояния кнопки мыши и состояния модификатора клавиатуры. ( I6310C , B/180075467 )
- Внедренные жесты теперь используют время BeytestClock в качестве источника истины для времени. Текущее время для инъекционных событий в
performGesture
будет инициализировано в текущее время BeantestClock. ( IFB364 , B/192064452 ) - Добавлен
DpRect(DpOffset, DpSize)
Конструктор ( I2CF16 , B/194219828 ) - Добавлен класс dpsize ( i7abb1 , b/194219828 )
Исправления ошибок
- Обновленная векторная графика XML. ( 186915 , б/195668138 )
Версия 1.1.0-Alpha01
4 августа 2021 г.
androidx.compose.ui:ui-*:1.1.0-alpha01
выпускается. Версия 1.1.0-Alpha01 содержит эти коммиты.
Изменения API
-
RelocationRequester.bringIntoView
теперь принимает прямоугольник в качестве параметра, который позволяет нам привлечь часть композиции ( ICE2C5 , B/194330245 ) -
AnimatedImageVector
и связанные с ними API теперь находятся в новомandroidx.compose.animation:animation-graphics
. ( I60873 ) - Добавлен экспериментальный модификатор для обработки запросов на переезд. ( I65A97 , B/178211874 )
Введенный API Brushpainter для поддержки рисования произвольной кисти внутри художника, похожая на Colorpainter
Обновленная щетка API, чтобы иметь параметр внутреннего размера, который запрашивается в Brushpainter ( IA2752 , B/189466433 )
Обновленный метод DrawScope#DrawImage, который потребляет исходные и назначенные прямы для употребления дополнительного параметра фильтры. Это полезно для пиксельного искусства, которое предназначено для пикселя при масштабировании для пиксельного искусства. Обновлено Bitmappainter + Image Composable, чтобы также употреблять дополнительный параметр фильтры ( IE4FB0 , B/180311607 )
Добавлен метод
GestureScope.advanceEventTime
чтобы дать больший контроль над временем событий в жесте ( IBF3E2 )
Исправления ошибок
- Чтобы лучше поддерживать цепочку модификаторов рисунка, убедитесь, что модификатор. Ранее модификатор. Пзит должен был быть листовым узлом в цепочке модификаторов, однако, таким образом, он не позволяет его настраивать на композиционном контейнере (Ex. Box) или добавление дополнительных украшений сверху, таких как
Modifier.paint().border()
. Имея модификатор. Плайтный вызов, конфидент после привлечения содержимого данного художника, мы имеем лучшую согласованность поведения в поведении с модификатором. ( IBB2A7 , B/178201337 , B/186213275 ) - Диалоги теперь следуют поведению размеров платформы. Установите
usePlatformDefaultWidth
на false, чтобы переопределить это поведение. ( Iffaed , B/192682388 ) - Перенос
InfiniteAnimationPolicy
в: Compose: UI ( i5eb09 , b/160602714 ) - Прокрутка с помощью семантики для ленивых списков и регулярных компонентов прокрутки в настоящее время анимирована ( ID9066 , B/190742024 )
Версия 1.0
Версия 1.0.5
3 ноября 2021 г.
androidx.compose.ui:ui-*:1.0.5
выпускается. Версия 1.0.5 содержит эти коммиты.
Исправления ошибок
- Исправлена экземпляры отслеживания аварии. ( AOSP/1792247 )
Версия 1.0.4
13 октября 2021 г.
androidx.compose.ui:ui-*:1.0.4
выпущен. Версия 1.0.4 содержит эти коммиты.
Обновления зависимости
- Обновлено, чтобы зависеть от Kotlin
1.5.31
Версия 1.0.3
29 сентября 2021 г.
androidx.compose.ui:ui-*:1.0.3
выпускается. Версия 1.0.3 содержит эти коммиты.
Обновления зависимости
- Обновлено, чтобы зависеть от Kotlin
1.5.30
Версия 1.0.2
1 сентября 2021 г.
androidx.compose.ui:ui-*:1.0.2
выпущен. Версия 1.0.2 содержит эти коммиты.
Обновлено, чтобы поддержать выпуск Compose 1.0.2
. Compose 1.0.2
по -прежнему совместим с Kotlin 1.5.21
.
Версия 1.0.1
4 августа 2021 г.
androidx.compose.ui:ui-*:1.0.1
выпускается. Версия 1.0.1 содержит эти коммиты.
Обновления зависимости
- Обновлено, чтобы зависеть от Kotlin
1.5.21
.
Версия 1.0.0
28 июля 2021 г.
androidx.compose.ui:ui-*:1.0.0
выпускается. Версия 1.0.0 содержит эти коммиты.
Основные особенности 1.0.0
Это первый стабильный выпуск Compose. Пожалуйста, смотрите официальный блог Compose Release для получения более подробной информации!
Известные проблемы
Если вы используете Android Studio Bumblebee Canary 4 или AGP
7.1.0-alpha04
/7.1.0-alpha05
, вы можете нанести следующий сбой:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Чтобы исправить, временно увеличивайте свой minsdkversion до 24+ в вашем файле
build.gradle
. Эта проблема будет исправлена в следующей версии Android Studio Bumblebee и AGP7.1
. ( б/194289155 )
Версия 1.0.0-RC02
14 июля 2021 г.
androidx.compose.ui:ui-*:1.0.0-rc02
выпускается. Версия 1.0.0-RC02 содержит эти коммиты.
Исправления ошибок
- Диалоги теперь следуют поведению размеров платформы. Установите
usePlatformDefaultWidth
на false, чтобы переопределить это поведение. ( Iffaed , B/192682388 )
Версия 1.0.0-RC01
1 июля 2021 г.
androidx.compose.ui:ui-*:1.0.0-rc01
выпускается. Версия 1.0.0-RC01 содержит эти коммиты.
Новые функции
- Разделение модуля UI-обучения на
ui-tooling
иui-tooling-preview
( IEFA28 , B/190649014 )
Изменения API
- Удален устаревшего экспериментального
FocusManager#moveFocusIn
иFocusManager#moveFocusOut
( I227D7 , B/170154986 , B/186567354 , b/1685103044 ) - Canvas теперь поддерживает параметр ContentDescription для доступности. ( IB547C )
-
useDefaultMaxWidth
вPopupProperties
был переименован вusePlatformDefaultWidth
. ( I05710 ) - Диалоги теперь могут использовать всю ширину экрана. ( 183929 , б/190810877 )
- Добавлена экспериментальная поддержка для представлений HSV и HSL. ( Id7cf8 , b/180731008 )
Изменения поведения
- Compose
@Preview
теперь предоставляетLocalActivityResultRegistryOwner
Houlder, который позволяет вам предварительно просмотреть композиции, которые используют API, такие какrememberLauncherForActivityResult()
, которые зависят от этого владельца. ( IB13D1 , B/185693006 ) - Compose
@Preview
теперь предоставляетLocalOnBackPressedDispatcherOwner
, который позволяет вам предварительно просмотреть композиции, которые используют API, такие какBackHandler
, которые зависят от этого владельца. ( IA1C05 , B/185693006 )
Исправления ошибок
- Перенос
InfiniteAnimationPolicy
наandroidx.compose.ui:ui
( i5eb09 , b/160602714 ) - AnimatedImageVector был временно удален, чтобы изменить структуру модуля. ( I41906 , B/160602714 )
Версия 1.0.0-бета09
16 июня 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta09
выпускается. Версия 1.0.0-BETA09 содержит эти коммиты.
Изменения API
- Изменить роли Enum и LiVereGionMode в встроенные классы с частным конструктором ( ID1890 )
- Клавиатура преобразуется в встроенный класс. ( Id5a1c )
- Изменить HapticFeedBackType на встроенный класс. ( I255ec )
- MODIFIER.POINTERINTEROPFILTER IS @EXPERIMELACTCOPECOPEUIAPI. ( Iede6c )
- Textalign, Fontsynthesis и Text -Fulerection теперь являются встроенными классами. ( I212fe )
- TextOverflow изменяется на встроенный класс. ( I433af )
- Fontstyle теперь встроенный класс. ( I9e48b )
Исправления ошибок
- Ключевые константы сейчас @ExperimentalCopeUiapi. Потребляющий код может объявлять частные константы до стабилизации. ( IA5D48 )
- Составные тесты теперь можно запускать на Robolectric. До сих пор были определены следующие ограничения:
- Там нет собственной растровой карты, поэтому
ImageBitmap()
приводит к нулевой точке. - Там нет рисунка, поэтому
captureToImage()
бесконечно ожидает следующего прохода Draw (то есть он тупик). - Там нет загруженного шрифта, поэтому любой текст будет измерен неправильно. Все символы имеют фиксированную высоту около 20 пикселей и ширину 1px.
-
ComposeTestRule.waitUntil {}
не запускает основной поток, пока он ожидает, что делает его эффективно таким же, как иComposeTestRule.mainClock.advanceTimeUntil {}
ожидается, что в будущем будут определены больше ограничений. ( I284fa )
- Там нет собственной растровой карты, поэтому
Добавлены правила профиля
Этот релиз добавляет правила профиля к следующим модулям Compose ( i14ed6 ):
- Androidx.compose.animation
- Androidx.compect.animation-Core
- Androidx.compose.foundation
- Androidx.compose.foundation-layout
- Androidx.compes.material
- Androidx.compes.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
или эквивалент. Файл указывает правило на строку, где правило в этом случае является шаблоном для сопоставления методов или классов в библиотеке. Синтаксис для этих правил является суперсетом формата профиля искусства, читаемого на человеку, который используется при использованииadb shell profman --dump-classes-and-methods ...
Эти правила принимают одну из двух форм для нацеливания на методы или классы.Правило метода будет иметь следующую шаблон:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
И правило класса будет иметь следующий шаблон:
<CLASS_DESCRIPTOR>
Здесь
<FLAGS>
это один или несколько символовH
,S
иP
, чтобы указать, следует ли пометить этот метод как «горячий», «стартап» или «Post Startup».<CLASS_DESCRIPTOR>
является дескриптором для класса, которому принадлежит целевой метод. Например, классandroidx.compose.runtime.SlotTable
будет иметь дескрипторLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
является подписью метода и включает имя, типы параметров и типы возврата метода. Например, методfun isPlaced(): Boolean
наLayoutNode
имеет подписьisPlaced()Z
.Эти шаблоны могут иметь подстановочные знаки (
**
,*
и?
), Чтобы иметь единое правило, охватывать несколько методов или классов.
Что делают правила?
Метод, который имеет флаг
H
указывает, что этот метод является «горячим» методом и должен быть скомпилирован заранее.Метод, который имеет флаг
S
указывает на то, что это метод, который вызывается при запуске, и должен быть скомпилирован заранее, чтобы избежать стоимости компиляции и интерпретации метода во время запуска.Метод, который имеет флаг
P
указывает, что это метод, который называется после запуска.Класс, который присутствует в этом файле, указывает на то, что он используется во время запуска и должен быть предварительно выделен в куче, чтобы избежать стоимости загрузки класса.
Как это работает?
- Библиотеки могут определить эти правила, которые будут упакованы в артефакты AAR. Когда приложение затем строится, которое включает эти артефакты, эти правила объединяются вместе, и объединенные правила используются для создания компактного бинарного профиля искусства, характерного для приложения. Искусство может затем использовать этот профиль, когда приложение установлено на устройствах, чтобы заранее собрать конкретное подмножество приложения для повышения производительности приложения, особенно первого запуска. Обратите внимание, что это не повлияет на отказываемые приложения.
Версия 1.0.0-бета08
2 июня 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta08
выпускается. Версия 1.0.0-BETA08 содержит эти коммиты.
Изменения API
-
NestedScrollSource
enum заменяется встроенным классом. ( IE321B , B/187055290 ) -
FocusManager.clearFocus(forcedClear = true)
переименован вFocusManager.clearFocus(force = true)
( ia0c41 ) - Рефакторированные использование перечисления в входные классы, чтобы избежать проблем с исчерпывающими, когда добавляются новые значения перечисления. ( I2b5eb )
- Удалить
@ExperimentalComposeUiApi
изPopupProperties
. ( I01fa6 ) -
PointerType
был изменен с перечисления на встроенный класс ( IF5058 ) - Свойства ContentDescription и Text Semantics больше не являются отдельными значениями, а списками. Это позволяет объединять их, как и в случае сознания. Also provided better testing APIs to utilize these changes ( Ica6bf , b/184825850 )
-
Modifier.focusModifier()
is deprecated and replaced byModifier.focusTarget()
( I6c860 ) -
Modifier.onSizeChanged()
andModifier.onGloballyPositioned()
are not inlined functions anymore ( I727f6 , b/186109675 ) -
KeyboardType
enum is replaced by an inline class. ( I73045 , b/187055290 ) - Replaced
FocusState
enum with aFocusState
interface ( Iccc1a , b/187055290 ) - ImeAction enum is replaced by an inline class. ( I18be5 , b/187055290 )
-
PlaceholderVerticalAlign
is converted into an inline class. ( If6290 ) - TextUnitType is an inline class now. ( I4cba9 )
-
AnnotatedString.withAnnotation
functions are now ExperimentalTextApi instead of ExperimentalComposeApi. ( I0cd0a )- TextUnit constructor with TextUnitType is now ExperimentalTextApi instead of ExperimentalComposeApi.
Исправления ошибок
- Fixed the bug introduced in beta07 where LazyColumn/Row items were displayed partially after the scroll ( I8c9ac , b/188566058 )
- Now
detectDragGesures
,detectVerticalGestures
, anddetectHorizontalGestures
will consume the position change automatically, no need to call change.consumePositionChange in the onDrag callbacks ( I42fc4 , b/185096350 , b/187320697 ) - LayoutModifiers providing alignment lines was fixed. A bug causing the parent not being remeasured when the alignment lines of the children were changing was fixed. ( I4401f , b/174315652 )
-
Modifier.onGloballyPositioned()
was changed to report the coordinates of this modifier in the modifier chain, not the layout coordinates after applying all the modifiers. This means that now the ordering of modifiers is affecting what coordinates would be reported. ( Ieb67d , b/177926591 )
Version 1.0.0-beta07
18 мая 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta07
is released. Version 1.0.0-beta07 contains these commits.
Изменения API
- Added
ViewRootForInspector
interface for use in inspector ( Ib70df ) -
SubcomposeLayoutState
now supports setting count of reusable slots. The layout will keep up to this count slots active instead of disposing them in order to reuse the slot next time we need a new one ( Ieb981 ) - KeyEventType enum is replaced by an inline class. ( Id670a , b/187055290 )
-
FocusDirection
enum is replaced by an inline class. ( Ib6d03 , b/187055290 , b/184086802 ) - Introduces ability to hoist the SubcomposeLayout state which allows you to precompose the content into a requires slotId which would make the next measure pass faster as once we try to subcompose with the given slotId next time there will be no composition needed. ( I42580 , b/184940225 )
- Added Clip Selection Handle ( Iff80d , b/183408447 )
- Removed unused APIs related to LayoutInspector support. ( I2ac78 )
Исправления ошибок
- LazyColumn/Row will now keep up to 2 previously visible items active (not disposed) even when they are scrolled out already. This allows the component to reuse the active subcompositions when we will need to compose a new item which improves the scrolling performance. ( Ie5555 )
-
TextGeomerticTransform
andTextDecoration
onAnnotatedString
will be applied as given. ( I61900 , b/184760917 )
Version 1.0.0-beta06
5 мая 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta06
is released. Version 1.0.0-beta06 contains these commits.
Изменения API
- Solve Conflict with Navigation Gesture ( I1145e )
-
@ComposeCompilerApi
no longer@RequiresOptIn
( Iab690 ) - Added CollectionInfo and CollectionItemInfo accessibility APIs that allows to mark collection and its items for accessibility services ( Id54ef , b/180479017 )
- Added
SemanticsActions.ScrollToIndex
to scroll a list with indexed items to the item with a certain index, andSemanticsProperties.IndexForKey
to get the index of an item in a list with keyed items. Both actions are implemented by LazyList.- Added
SemanticsNodeInteraction.performScrollToIndex
that scrolls a list to the given index, andSemanticsNodeInteraction.performScrollToKey
that scrolls a list to the item with the given key. ( I4fe63 , b/178483889 , b/161584524 )
- Added
- Added ownerViewId to GraphicLayerInfo ( I19f62 )
- Added Font() overloads to load fonts from assets, File and FileDescriptor ( I5d382 )
- Added accessibility API
error
that allows to mark a node that contains invalid input ( I12997 , b/180584804 , b/182142737 ) - Added
Font()
overloads to load fonts from assets, File and FileDescriptor ( I43007 ) - AnnotatedString save support to
TextFieldValue.Saver
. AddedaddTtsAnnotation
and withAnnotation utility functions toAnnotatedString.Builder
( I8cbdc , b/178446304 ) - Added TextUnit constructor function
TextUnit(value: Float, type: TextUnitType)
( I7ecce , b/178446304 )
Version 1.0.0-beta05
21 апреля 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta05
is released. Version 1.0.0-beta05 contains these commits.
Изменения API
- Added experimental
FocusManager.moveFocus(In)
andFocusManager.moveFocus(Out)
( Ic5534 , b/183746743 ) - Added experimental
performTextInputSelection
API ( I2dcbb , b/178510628 ) -
InputEventCallback
interface is deprecated. It was not possible to use the interface in any public API; and there was no usage of it in the code. ( I34a02 , b/184003208 ) - Deprecated
TextLayoutResult/createTextLayoutResult
function. It is an unused public function which was added for testing. The function does not do anything usable for Compose text APIs. The function is now deprecated and will be removed later. ( I80413 )
Исправления ошибок
- Fixed
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
andaccessibilityActionScrollDown
accessibility scroll actions. Instead of scrolling to the end of the scrollable, it will now scroll by one screen in the given direction. ( Ieccb0 ) - The AndroidManifest files from ui-test-manifest and ui-tooling-data are now compatible with Android 12 ( I6f9de , b/184718994 )
Version 1.0.0-beta04
7 апреля 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta04
is released. Version 1.0.0-beta04 contains these commits.
Изменения API
- Rename
hideSoftwareKeyboard
andshowSoftwareKeyboard
onSoftwareKeyboardController
tohide()
andshow()
respectively.- Provide the full CompositionLocal interface for LocalSoftwareKeyboardController, allowing it to be set (especially useful in tests) ( I579a6 )
- LiveRegion accessibility API is added. If node is marked as a live region, the accessibility services will automatically notify the user about its changes ( Idcf6f , b/172590946 )
- TextOverflow.Visible is introduced. ( Ic8f89 )
Исправления ошибок
- Fixed the issue when items of
LazyColumn
/LazyRow
located on the edges were incorrectly positioned after fast fling ( Ie4d13 , b/183877420 ) -
AndroidViewBinding
now properly removes fragments inflated viaFragmentContainerView
when theAndroidViewBinding
is removed from the compose hierarchy. ( Ib0248 , b/179915946 ) -
AndroidViewBinding
now correctly nests fragments inflated viaFragmentContainerView
when yourComposeView
is within aFragment
, fixing issues with saving and restoring the state of those fragments. ( I70eb0 , b/179915946 ) - Compose ViewBinding now depends on Fragment
1.3.2
and now consistently shows fragments inflated viaFragmentContainerView
after configuration changes. ( I0743d , b/179915946 )
Version 1.0.0-beta03
24 марта 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta03
is released. Version 1.0.0-beta03 contains these commits.
Изменения API
- Deferred check for ViewTree dependencies of ComposeView ( I8dbbf , b/182466548 )
- Added optional
startX
/endX
andstartY
/endY
parameters toswipeUp
/swipeDown
/swipeLeft
/swipeRight
functions inGestureScope
. ( I49e2d , b/182063305 )
Version 1.0.0-beta02
10 марта 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta02
is released. Version 1.0.0-beta02 contains these commits.
Изменения API
- Added new
LocalSoftwareKeyboardController
composition local API to replace previous SoftwareKeyboardController interface on TextField. ( I5951e , b/168778053 ) - Added new
LocalSoftwareKeyboardController
composition local API to replace previous SoftwareKeyboardController interface on TextField. ( I84472 , b/168778053 ) - Removed the following
SemanticsMatcher
s:-
hasWidth(width, tolerance)
-
hasHeight(height, tolerance)
-
hasLeftPosition(left, tolerance)
-
hasTopPosition(top, tolerance)
-
hasRightPosition(right, tolerance)
-
hasBottomPosition(bottom, tolerance)
( If16bd )
-
- Marked the following
SemanticsMatchers
as @ExperimentalTestApi:-
hasWidth(width, tolerance)
-
hasHeight(height, tolerance)
-
hasLeftPosition(left, tolerance)
-
hasTopPosition(top, tolerance)
-
hasRightPosition(right, tolerance)
-
hasBottomPosition(bottom, tolerance)
( Ia600c )
-
- Added the following
SemanticsMatcher
s:-
hasWidth(width, tolerance)
-
hasHeight(height, tolerance)
-
hasLeftPosition(left, tolerance)
-
hasTopPosition(top, tolerance)
-
hasRightPosition(right, tolerance)
-
hasBottomPosition(bottom, tolerance)
( I2f502 )
-
Исправления ошибок
- Enforce restrictions on public usage of experimental APIs ( I6aa29 , b/174531520 )
-
androidx.compose.ui:ui
no longer depends on AppCompat or Fragment. If you are using a ComposeView in your application, and you are using Fragment and/or AppCompat, make sure that you are using AppCompat 1.3+ / Fragment 1.3+ - these versions are needed to correctly set lifecycle and saved state owners required for ComposeView. ( I1d6fa , b/161814404 ) - Fix for broken
rememberSaveable { mutableStateOf(0) }
when used inside a destination of navigation-compose. ( I1312b , b/180042685 , b/180701630 ) - Added new
LocalSoftwareKeyboardController
composition local API to replace previous SoftwareKeyboardController interface on TextField. ( I658b6 , b/168778053 ) - Fixed rare NoSuchElementException in
ComposeRootRegistry
'stearDownRegistry()
( Iddce1 )
Version 1.0.0-beta01
24 февраля 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta01
is released. Version 1.0.0-beta01 contains these commits.
This is the first release of Compose 1.0.0 Beta.
Изменения API
- onStart callback has been added to
detectDragGestures
( I67269 , b/179995594 ) - Modifiers for sizing to intrinsics are no longer experimental. ( I15744 )
- MeasureBlocks was renamed to MeasurePolicy which became a fun interface. Layout APIs were updated / simplified to use MeasurePolicy. ( Icab48 , b/167662468 , b/156751158 )
-
InteractionState
has been replaced with[Mutable]InteractionSource
- Interfaces are responsible for emitting / collecting Interaction events.
- Instead of passing
interactionState = remember { InteractionState() }
to components such asButton
andModifier.clickable()
, useinteractionSource = remember { MutableInteractionSource() }
. - Instead of:
Interaction.Pressed in interactionState
you should instead use the extension functions on InteractionSource, such as InteractionSource.collectIsPressedAsState(). - For complex use cases you can use InteractionSource.interactions to observe the stream of Interactions. See the InteractionSource documentation and samples for more information.
- ( I85965 , b/152525426 , b/171913923 , b/171710801 , b/174852378 )
- Add AccessibilityMananger interface and LocalAccessibilityMananger in CompositionLocals ( I53520 )
- Removed deprecated LayoutCoordinates methods, use function instead of the property for positionInParent and boundsInParent ( I580ed , b/169874631 , b/175142755 )
- Typealiases replaced by underlying types:
-
ColorStop
is nowPair<Float, Color>
-
SpanStyleRange
is now `AnnotatedString.Range -
ParagraphStyleRange
is nowAnnotatedString.Range<ParagraphStyle>
-
StringAnnotation
is nowAnnotatedString.Range<String>
- ( I8dd1a )
-
- Created new TextInputSession for input sessions from low level text components such as CoreTextField. ( I8817f , b/177662148 )
- Placeable now exposes measuredSize, representing the size which the child layout actually measured to. This size might not respect the measurement constraints. ( Ib2729 , b/172560206 , b/172338608 )
- Add selectionGroup modifier that allows to mark collection of Tabs or RadioButtons for accessibility purposes ( Ie5c29 )
The
defaultFactory
forcompositionLocalOf
andstaticCompositionLocalOf
is now required instead of optional.This changes removes a potential type error for non-nullable types where no default factory was provided. Previously this would provide a null reference for a non-nullable type.
For nullable types consider supplying
{ null }
as the default factory.We do not recommend using locals with non-nullable types unless a sensible default can be provided. If no sensible default exists, the
defaultFactory
lambda should throw an exception. However throwing an exception means that consumers of the local will have an implicit dependency on it being provided that is not enforced by the type system. ( Ifbd2a )Deprecated methods from ui modules were removed ( I646f6 )
Size modifiers were renamed. Modifier.width/height/size were renamed to requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize were renamed to width/height/size. ( I5b414 )
Modifier.tapGestureFilter
has been removed. UseModifier.pointerInput { detectTapGestures(...) }
instead. ( I266ed , b/175294473 )partial consumption was removed from pointer input system. The recommended way of coordinating partial consumtion is Modifier.nestedScroll. ( Ie9c9b )
Orientation has been moved to foundation package. VelocirtTracker moved from ui.gesture to ui.input.pointer. ( Iff4a8 , b/175294473 )
imageResource and vectorResource are now extension functions on ImageBitmap and ImageVector companions respectively.
load{Image,Vector,Font}Resource
functions have been deleted. ( I89130 )AnimationClockObservable and subclasses have been removed. AnimatedFloat has been removed. ( Icde52 , b/177457083 )
Providers has been renamed to CompositionLocalProvider
- The Composition constructor no longer accepts a key parameter, and has been deprecated.
- currentCompositeKeyHash has been turned into a composable top level property instead of a composable top level function.
- CompositionData and CompositionGroup have been moved to the androidx.compose.runtime.tooling namespace
- ComposableLambda has been made an interface instead of a concrete class, and no longer has type parameters.
- ComposableLambdaN has been made an interface instead of a concrete class, and no longer has type parameters.
- The snapshotFlow function has been moved to the androidx.compose.runtime namespace
- the merge method of SnapshotMutationPolicy is no longer experimental
- The @TestOnly top level clearRoots function has been removed. В этом больше нет необходимости.
- keySourceInfoOf and resetSourceInfo functions have been removed. They are no longer necessary.
- Composer.collectKeySourceInformation has been removed. В этом больше нет необходимости.
- isJoinedKey, joinedKeyLeft, and joinedKeyRight methods have been removed. They are no longer necessary.
- Various top level APIs have been moved and reorganized into different files. Due to Kotlin's file class semantics, this will break binary compatibility but not source compatibility, so should not be an issue for most users.
- ( I99b7d , b/177245490 )
ComponentActivity.setContent()
was removed from compose:ui. Use the one fromandroidx.activity:activity-compose:1.3.0-alpha01
.viewModel()
andLocalViewModelStoreOwner
were removed from compose:ui. Use the ones fromandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
( I6f36b )Modifier.scrollable has been reworked. Now it uses Scrollable interface instead of ScrollableController class ( I4f5a5 , b/174485541 , b/175294473 )
CustomEvens support from PointerInputModifier has been removed ( I02707 , b/175294473 )
SnapshotStateObserver is not Experimental anymore ( Id2e6a )
Deleted some previously deprecated APIs ( Ice5da , b/178633932 )
longPressGestureFilter and doubleClickGestureFilter have been removed. use Modifier.pointerInput with helper functions eg detectTapGestures ( I2fedf , b/175294473 )
Removed String.format API refactored usages in various toString methods to not leverage String.format internally. ( Id1290 )
Removed dp assertions ( I798d2 )
Removed androidx.compose.runtime:runtime-dispatch ( I55feb )
Text actions now check focus automatically ( I13777 , b/179648629 )
Removed
runBlockingWithManualClock
( I15cdc , b/179664814 )Scroll position in Modifier.verticalScroll()/horizontalScroll() is represented with Ints now ( I81298 )
FlingConfig has been renamed to FlingBehavior now allows for customization of suspend animation rather than predefined Decays. ( I02b86 , b/175294473 )
Added a helper function that is helpful to set the same action for all ImeAction callbacks ( I63447 , b/179226323 )
Removed SoftwareKeyboardController callback from all text fields to be replaced by a new API shortly. ( Iae869 , b/168778053 )
FontSpan and FontWeigthStyleSpan are no longer used and removed. ( Ie5b56 , b/177423444 )
Made the following Material API changes:
- Added contentPadding parameter to Top/BottomAppBar to allow customizing the default padding.
- Reordered parameters in BackdropScaffold to follow API guidelines for required parameters being before optional parameters.
- Moved
icon
parameter in BottomNavigationItem to be afterselected
andonClick
. - Renamed
alwaysShowLabels
parameter in BottomNavigationItem toalwaysShowLabel
. - Renamed
bodyContent
parameters in a few components to justcontent
. - Reordered parameters in
ButtonDefaults.buttonColors()
. Please note that because the type of the parameters have not changed, this will not cause an error in your code - please ensure you are either using named parameters or update the ordering manually, otherwise your code will not work the same as previously. - Added
secondaryVariant
parameter todarkColors()
. This color is typically the same assecondary
in dark theme, but adding for consistency and further customization. - Removed ElevationDefaults and animateElevation() from the public API surface since they were not commonly used / useful.
- Renamed
onValueChangeEnd
inSlider
toonValueChangeFinished
and made it nullable. - Renamed
text
parameter inSnackbar
tocontent
for consistency. - Added
contentPadding
parameter toDropdownMenuItem
to allow customizing the default padding and madecontent
be an extension onRowScope
. - Renamed
ModalDrawerLayout
toModalDrawer
. - Renamed
BottomDrawerLayout
toBottomDrawer
. - ( I1cc66 )
Исправления ошибок
- Added API to use AnimatedVectorDrawable resources in Compose. Use animatedVectorResource to load an
<animated-vector>
XML as an AnimatedImageVector and animate it with painterFor ( I8ea91 ) - Added new LocalSoftwareKeyboardController composition local API to replace previous SoftwareKeyboardController interface on TextField. ( I658b6 , b/168778053 )
Version 1.0.0-alpha12
10 февраля 2021 г.
androidx.compose.ui:ui-*:1.0.0-alpha12
is released. Version 1.0.0-alpha12 contains these commits.
Изменения API
- Support for ViewGroups was removed from UiApplier. The Deprecated emitView composables were removed. ( Ifb214 )
- Modifier.pointerInput now requires remember keys to indicate when the pointer input detection coroutine should restart for new dependencies. ( I849cd )
- CompositionReference renamed to CompositionContext ( I53fcb )
- Bounds has been renamed to DpRect ( I4b32a )
- Testing update: hasText() will check for both input and label/hint/placeholder texts in the text field ( Iab803 )
- viewModel() composable and LocalViewModelStoreOwner were moved to androidx.lifecycle.viewmodel.compose. You will now need to add a separate dependency androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 in order to use it. ( I7a374 )
- Allow nullable action in AccessibilityAction, change action label in AccessibilityAction and CustomAccessibilityAction from CharSequence to String ( I0dc82 )
- In order to better match naming conventions with ImageBitmap and ImageVector, ImagePainter has been renamed to BitmapPainter to parallel VectorPainter. ( Iba381 , b/174565889 )
- Better substring test APIs with substring now as an argument ( Icbe78 )
- Added an
Modifier.focusOrder()
that accepts a FocusRequester without specifying a custom focus order a lambda. This is useful when we only need to specify a reference but not a custom focus order for a composable ( I4f52a , b/179180978 ) - ComponentActivity.setContent has moved to androidx.activity.compose.setContent in the androidx.activity:activity-compose module. ( Icf416 )
- Destructuring and copy() methods have been removed from several classes where they were rarely used. ( I26702 , b/178659281 )
- Moved Popup to be platform specific. AndroidPopupProperties has been renamed to PopupProperties, and
isFocusable
has been moved to afocusable
parameter inPopupProperties
( Ieeea5 ) - Moved Dialog to be platform specific. Renamed AndroidDialogProperties to DialogProperties. ( I4ef69 , b/179138130 )
- Made LayoutNode internal ( I8a7b1 , b/175103944 )
- Constraints.enforce was replaced with Constraints.constrain. ( I8b8ea )
- loadFontResource is deprecated. Use fontResource instead. imageResource, loadImageResource, vectorResource, and loadVectorResource are deprecated. Use painterResource instead. ( I6b809 )
- For performance reasons, ScrollAxisRange semantics now takes lambdas returning Floats instead of direct Float values. ( If4a35 , b/178657186 )
- Added EditableText semantics to mark editable input text of the text field for accessibility and corresponding test methods to check the semantics ( I8e07a )
- Made OwnerLayer/OwnerScope/OwnerSnapshotObserver internal ( I4ffaf , b/175103944 )
- toIntPx() was renamed to roundToPx(). ( I9b7e4 , b/173502290 )
- IntBounds was renamed to IntRect and the API was improved. ( I1f6ff )
- Snapshot API was updated to be more consistent with API guideline as well as hiding internal implementation classes from the public API. ( Id9e32 )
- Added expand and collapse semantics actions. Added expand and halfExpand in ModalBottomSheetState ( Ib5064 )
- Modifier.dragGestureFilter has been deprecated. Use
Modifier.pointerInput { detectDragGestures (...)}
instead. Alternatively, use Modifier.draggable for one axis drags ( I0ba93 , b/175294473 ) - Renamed Ambients to match the Ambient -> CompositionLocal rename. Ambients used to be named AmbientFoo, now CompositionLocals are named LocalFoo. ( I2d55d )
- The deprecated BaseTextField is now removed. Use BasicTextField instead. ( I71368 )
- Selection was moved to foundation. ( I7892b )
- Similarly to how we previously removed
state { 0 }
composable and now promote usage likeremember { mutableStateOf(0) }
we are going to removesavedInstanceState { 0 }
composable. You should userememberSaveable { mutableStateOf(0) }
instead and it will save and restore automatically if the type used inside the MutableState can be stored in the Bundle. If previously you were passing a custom saver object now you need to use a new overload of rememberSaveable which hasstateSaver
parameter. The usage will look like this:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
( Ib4c26 , b/177338004 ) - Added password semantics for accessibility ( I231ce )
- Added ProgressBarRangeInfo.Indeterminate to mark indeterminate progress bars for accessibility ( I6fe05 )
-
emptyContent()
and(@Composable () -> Unit).orEmpty()
utilities have been deprecated as they no longer have any positive performance impact or value ( I0484d ) -
snapshotFlow
andwithMutableSnapshot
are no longer experimental ( I6a45f ) - Recomposers can now be closed. Closed recomposers will continue recomposition until composition child coroutines complete. Recomposer.shutDown renamed to cancel to contrast with close. ( Ib6d76 )
- UiSavedStateRegistry was renamed to SaveableStateRegistry, AmbientUiSavedStateRegistry was renamed to AmbientSaveableStateRegistry and both moved to androidx.compose.runtime.saveable package. ( I30224 )
- Artefact androidx:compose:runtime:runtime-saved-instance-state was renamed to androidx:compose:runtime:runtime-saveable ( I6dcac )
- Many longstanding deprecated APIs in the ui package are deleted. ( I2f2dc )
- The compose:runtime-dispatch artifact is now deprecated. MonotonicFrameClock can now be found in compose:runtime and AndroidUiDispatcher can be found in compose:ui. ( Ib5c36 )
- Outline.* classes are not data classes anymore ( I4879e , b/178001427 )
- Removed
view.captureToImage()
without any replacement. ( I7fcd2 ) - Introduced ColorMatrix API used to modify rgb values of source content Refactored ColorFilter API to be an interface and match the implementation of PathEffect. ( Ica1e8 )
- Add layoutDirection param to Shape's createOutline. This allows to create layout direction aware shapes. ( I57c20 , b/152756983 )
- onImeActionPerformed is deprecated. use KeyboardActions instead ( If0bbd , b/179071523 )
- Introduced an
InfiniteAnimationPolicy
coroutine context element that will be applied in infinite animations. By default no policy is installed, except when running tests withComposeTestRule
. ( I50ec4 , b/151940543 ) - canDrag has been removed from the Modifier.scrollable. ( Id66e7 , b/175294473 )
- Renamed LayoutCoordinates.parentCoordinates to LayoutCoordinates.parentLayoutCoordinates to allow for a new parentCoordinates property. The parentCoordinates property now offers the parent modifier's LayoutCoordintes. This will make for more complete use cases for onSizeChanged() and onGloballyPositioned() ( Idfbfd , b/177926591 )
- tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter and pressIndicaitonGestureFilter have been deprecated. Use Modifier.clickable or Modifier.pointerInput with detectTapGestures function instead. ( I6baf9 , b/175294473 )
- SaveableStateRegistry's unregisterProvider was removed. Instead registerProvider() now returns SaveableStateRegistry.Entry object which you can use to unregister ( Ic4274 , b/178583739 )
- rememberSavedInstanceState() was renamed to rememberSaveable() and moved to androidx.compose.runtime.saveable package. ( I1366e , b/177338004 )
- Removed CoreText and CoreTextField from public API
- Removed deprecated SelectionContainer overload
- ( I99c19 )
- Tests in which Compose is used in hierarchies that are added/removed directly to the WindowManager are now more stable. ( Ie81ed , b/175765614 )
- Removed Recomposer.current(). [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. Recomposition and withFrameNanos-based animation ticks are paused while the host Lifecycle is stopped. ( I38e11 )
- Recomposer.runningRecomposers now offers a global StateFlow of read-only RecomposerInfo for observing ongoing composition state in the process. Prefer this API to Recomposer.current(), which is now deprecated. ( If8ebe )
- Saver, listSaver(), mapSaver(), autoSaver was moved from androidx.compose.runtime.savedinstancestate to androidx.compose.runtime.saveable ( I77fe6 )
- EditCommands accept AnnotatedString. However this is an API only change and multi-style text editing is not implemented yet. ( I4c3ea )
- Uptime and Duration have been removed. ( Ib9bf4 , b/177420019 )
- CompositionData.asTree() and related APIs moved to separate ui-tooling-data module and marked as experimental ( Ic95b8 )
- Parameters on RounderCornerShape, CutCornerShape and CornerBasedShape were renamed from left/right to start/end in order to support the shape's auto mirroring in the rtl direction. AbsoluteRounderCornerShape and AbsoluteCutCornerShape were introduced for the cases when auto-mirroring is not desired. ( I61040 , b/152756983 )
The API the Compose compiler plugin targets has been refactored to use an interface instead of a concrete class. The interface also no longer uses a type parameter.
This is an internal change that should not effect source code compatibility but is a binary breaking change. ( I3b922 , b/169406779 )
Remove unintentionally public StringBuilder.deleteAt function ( Id6ed9 )
Исправления ошибок
- ComposeViews placed in view hierarchies that are children of another composition now host child compositions of their ancestors ( I92883 )
- Updated compose's imageFromResource API to reuse the resource drawable cache when loading ImageBitmap objects. ( If3627 , b/178751994 )
Version 1.0.0-alpha11
28 января 2021 г.
androidx.compose.ui:ui-*:1.0.0-alpha11
is released. Version 1.0.0-alpha11 contains these commits.
Изменения API
- WithConstraints was reworked as BoxWithConstraints and moved to foundation.layout. ( I9420b , b/173387208 )
- Key.DPadUp is deprecated. Use Key.DirectionUp instead. ( Iab335 , b/177954892 )
- Owner interface from now on internal. ( If8e35 )
- Added FocusManager.moveFocus() API to move focus programmatically. ( I045cb , b/177681839 )
- Changes PopupPositionProvider to use window-relative coordinates, not global coordinates. Renames parentGlobalBounds to anchorBounds, and changes windowGlobalBounds to be windowSize: IntSize ( I2994a )
- Duration and Uptime will be replace with Long milliseconds, and this step removes the dependency of pointer input on those classes. ( Ia33b2 , b/175142755 , b/177420019 )
- AmbientSavedStateRegistryOwner was added similarly to already existing AmbientLifecycleOwner and AmbientViewModelStoreOwner ( I9a3e8 , b/176756365 )
- Updated vector graphics API to support parsing of tinting applied to the root of vector graphics. ( Id9d53 , b/177210509 )
- Added toolType to PointerInputChange to differentiate devices ( Iac787 , b/175142755 )
- AmbientWindowManager is renamed to AmbientWindowInfo ( I2686a , b/177084714 , b/177084983 )
- Deprecated global coordinates methods and made new window-based coordinates methods. ( Iee284 )
- Added Modifier.toolingGraphicsLayer which adds a graphics layer modifier when inspection is turned on. ( I315df )
- FocusRequester.createRefs is now marked as experimental as it might change. ( I2d898 , b/177000821 )
- SemanticsPropertyReceiver.hidden was renamed to invisibleToUser and marked @ExperimentalComposeUiApi. AccessibilityRangeInfo was renamed to ProgressBarRangeInfo. stateDescriptionRange was renamed to progressBarRangeInfo. AccessibilityScrollState was renamed to ScrollAxisRange. horizontalAccessibilityScrollState was renamed to horizontalScrollAxisRange. verticalAccessibilityScrollState was renamed to verticalScrollAxisRange. ( Id3148 )
- Removed PointerInputData and modified PointerInputChange to give it all of PointerInputData's fields. Made PointerInputEvent and PointerInputEventData internal because they aren't used in any public API. ( Ifff97 , b/175142755 )
- Updated GraphicsLayerScope implement density to support conversions of dp into raw pixels. ( Ied528 , b/176819695 )
- Updated matrix API to follow row major ordering and provide index constants to assist with conversions between different matrix representations to match framework conversion logic between SkMatrix and Matrix4 internally. ( I432e6 )
- Removed experimental monotonicFrameAnimationClockOf methods ( Ib753f , b/170708374 )
- Move String.fintPrecedingBreak and String.fingFollowingBreak to InternalTextApi. ( I657c4 )
- androidx.compose.ui.util.isSurrogatePair has been removed from public API. ( Ia9494 )
- Renamed TransformedText.transformedText to TransformedText.text
- TransformedText is no longer a data class ( Ie672a )
- Removed
data class
from the following classes:- InlineTextContent
- LocaleList ( I605c7 )
- The following classes are not data classes anymore:
- AnnotatedString
- Стиль абзаца
- SpanStyle
- ТекстСтиль
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput ( Iaff99 )
- Changed VisualTransformation to be a functional interface ( I3bba4 )
- Added a function reference parameter type ( I5e1bd )
- Add transformed bounds to InspectorNode ( Ice42f )
Исправления ошибок
- onCommit, onDispose, and onActive have been deprecated in favor of SideEffect and DisposableEffect APIs ( If760e )
Changes to factory functions for Font/FontFamily/Typeface
- Added factory functions that start with capital letter
- Deprecated previous factory functions with lowercase first letters
- New factory functions return the FontFamily instead of subclasses
- Hid constructors of the subclasses, so that they can only be constructed via factory functions.
- Renamed Font.asFontFamily to Font.toFontFamily ( I42aa7 )
Introduced
ComposeContentTestRule
, which extendsComposeTestRule
and definessetContent
, which has been removed fromComposeTestRule
. Added a factory methodcreateEmptyComposeRule()
that returns aComposeTestRule
and does not launch an Activity for you. Use this when you want to launch your Activity during your test, eg usingActivityScenario.launch
( I9d782 , b/174472899 )animateAsState is now animateFooAsState, where Foo is the type of the variable being animated. eg Float, Dp, Offset, etc ( Ie7e25 )
Content description parameter has been added to the Image and Icon. It is used to provide description to the accessibility services ( I2ac4c )
Remove displaySize as it should be avoided. Typically it is better to use size of onRoot() or window size at least. ( I62db4 )
OnSizeChanged was reporting the size of the layout's contents. It now reports the size at its position within the modifier chain. ( I36b78 , b/177562900 )
The emit() API and all overloads have been deprecated and renamed to ComposeNode. The APIs are identical, just a different name in order to follow the naming conventions of Compose ( I4137b )
TextFieldValue accepts AnnotatedString. However this is an API only change and multi-style text editing is not implemented yet.
- Removed
initial
from EditingBuffer constructor parameters. ( I326d5 )
- Removed
invalidate and compositionReference() are now deprecated in favor of currentRecomposeScope and rememberCompositionReference respectively. ( I583a8 )
AnnotatedString is changed to extend from kotlin.CharSequence. Therefore length and subSequence are now instance functions, and extension functions are removed. ( Iaf429 )
RememberObserver replaces CompositionLifecycleObserver and CompositionLifecycleObserver is now deprecated.
RememberObserver
is a replacement forCompositionLifecycleObserver
with modified semantics and renamed methods. Changing to the new API can be done mechanically for objects that are only remembered once which is, and continues to be, the recommended practice. However, if a reference was remembered more than once in a compositiononRemembered
is called for each reference whereonEnter
is only called once.onEnter
was called multiple time if the object was used in subcompositions, such asWithConstraints
andScaffold
making the singleonEnter
call guarantee unreliable and it was removed forRememberObserver
.RememberObserver
addsonAbandoned
which is called if theRememberObserver
instance is returned from the callback passed toremember
but was not remembered in the composition state and, therefore, will never haveonRemembered
called. This can occur if an exception terminates composition before completing or the composition is discarded because the state is was producing a composition for is no longer current or otherwise is no longer needed. If the instance ofRememberObserver
following the single reference recommendation above is tracking an external resource bothonForgotten
andonAbandoned
each indicate that the resource is no longer needed. If the object is tracking work started or resources allocated inonRemembered
,onAbandoned
can be ignored as it will not be called ifonRemembered
is called. ( I02c36 )Deprecated arithmetic operations between 2 or more TextUnits. Deprecated TextUnit.Sp and TextUnit.Em functions in preference to the extension functions such as Int.sp and Int.em. ( I48369 )
Resources in libraries with no explicitly declared public resources (ex. via public.xml) are now private by default. ( Ia1dcc , b/170882230 )
ScrollableColumn/Row were deprecated. Using ScrollableColumn is less efficient compared to LazyColumn when you have a large scrolling content because with LazyColumn we can only compose/measure/draw visible elements. To prevent users from going the inefficient way we decided to deprecate ScrollableColumn and ScrollableRow and promote usages of LazyColumn and LazyRow instead. Users can still decide they don't need the lazy behaviour and use the modifiers directly like this: Column(Modifier.verticalScroll(rememberScrollState())) ( Ib976b , b/170468083 )
New
items(count: Int)
factory method for scope of LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
anditemsIndexed(items: List)
are now extension functions so you have to manually import them when used. New extension overloads for Arrays:items(items: Array)
anditemsIndexed(Array)
( I803fc , b/175562574 )Please use ImeAction.None instead of ImeAction.NoAction
- Please use ImeAction.Default instead of ImeAction.Unspecified ( Ie1bcc )
Leverage TestCoroutineDispatcher in testing ( I532b6 )
Renamed TextInputService.onStateUpdated as updateState ( Id4853 )
TransitionDefinition-based Transition has been deprecated ( I0ac57 )
TextUnitType.Inherit is removed. Please use TextUnitType.Unspecified instead. ( I9ff64 )
Version 1.0.0-alpha10
13 января 2021 г.
androidx.compose.ui:ui-*:1.0.0-alpha10
is released. Version 1.0.0-alpha10 contains these commits.
Breaking Change
Restructuring of the internal compiler API allows batching changes to the nodes generated as a result of composition into the "apply changes" phase of composition, after all
@Composable
functions have completed.This is a behavioral breaking change that might affect application code as nodes are no longer available from internal and experimental APIs until after changes have been applied. This can usually be worked around by surrounding code with such dependencies in a
SideEffect
composable to defer execution of the code until after the nodes have been created and initialized. ( I018da )
Изменения API
- Added Modifier.focusOrder() that can be used to specify a custom focus traversal order ( I90cf5 , b/175899543 , b/170155556 , b/170155429 )
- Removed deprecated focusObserver use onFocusChanged or onFocusEvent instead ( I3ecb9 , b/175156387 )
- EditOperations API Changes
- Renamed EditOperation as EditCommand
- Added Command suffix for EditOperation concrete implementations
- EditCommand's are no longer data classes
- Renamed EditOperation.process function to applyTo
- Renamed InputEventListener to InputEventCallback
- ( I0a366 )
- Removed unused PxSquared, PxCubed, PxInverse. Changed Size.center() to be a property. ( I973f7 )
- ui-test module will now be able to configure the creation of Recomposers for UIs under test ( Ibebd8 )
- Modified Velocity to have component parts and mathematical operations. ( Ib0447 )
- Renamed
@ExperimentalTesting
to@ExperimentalTestApi
to be consistent with similar experimental api annotations ( Ia4502 , b/171464963 ) - Renamed Color.useOrElse() to Color.takeOrElse() ( Ifdcf5 )
- Removed unused DpInverse, DpSquared, and DpCubed classes. ( I4d62b )
- Constraints#satisfiedBy was renamed to isSatisfiedBy. ( I9cf5c )
- Add a callback to notify Owner when layoutnode bounds change. ( I72fd1 )
- Added isSpecified, isUnspecified, and useOrElse for inline classes with an Unspecified constant. ( I93f7b , b/174310811 )
Expand [Abstract]ComposeView APIs to allow recycling Compose-based views, disposing their composition to recreate again later. Add APIs for installing and discovering window-scoped Recomposers and CompositionReferences for creating child compositions.
Add ViewCompositionStrategy for configuring the composition disposal strategy of [Abstract]ComposeViews; default behavior is dispose on window detach. ( I860ab )
Removed Any.identityHashCode() public api ( I025d7 )
Removed toStringAsFixed API in favor of using String.format instead directly. ( Iaba6b )
Add Toggle to foundation Strings.kt ( I4a5b7 , b/172366489 )
Moved nativeClass to ui module and made it internal. Updated usages of nativeClass in equals implementations to use 'is MyClass' instead. ( I4f734 )
Modifier.focus() and Modifier.focusRequester() are deprecated. Use Modifier.focusModifier() and Modifier.focusReference() instead. ( I75a48 , b/175160751 , b/175160532 , b/175077829 )
Introduced SelectionRegistrar.notifySelectableChange to notify Selectable updates to SelectionManager. ( I6ff30 , b/173215242 )
Introduced Outline.bounds property to obtain the bounding rect for various outline implementations. ( I16e74 , b/175093504 )
Deprecated TestUiDispatcher. Use Dispatchers.Main instead ( Ic171f , b/175385255 )
ImeOptions and KeyboardOptions are no more a data class ( I3c898 , b/168684531 )
VisualTransformation API Changes
- Renamed OffsetMap to OffsetMapping
- Renamed OffsetMapping.identityOffsetMap to OffsetMapping.Identity
- PasswordTransformation is no longer data-class
- Moved OffsetMapping to its own file
- ( I0bdf3 )
Renamed Position to DpOffset and removed getDistance() ( Ib2dfd )
Changed fun Dp.isFinite() to a val Dp.isFinite ( I50e00 )
Исправления ошибок
- Recomposer now exposes a Flow of its current state, allowing monitoring its activity and the activity of associated effects. ( Ifb2b9 )
- The native keyEvent can now be accessed through keyEvent.nativeKeyEvent ( I87c57 , b/173086397 )
-
animate()
is now replaced withanimateAsState()
, which returns aState<T>
instead ofT
. This allows better performance, as the invalidation scope can be narrowed down to where the State value is read. ( Ib179e ) - Add Semantics role API and add Role as a parameter to clickable, selectable and toggleable SemanticsModifier. Changed Modifier.progressSemantics so that Slider can also use it. ( I216cd )
- New coroutine-based API
Animatable
that ensures mutual exclusiveness among its animations.- New DecayAnimationSpec to support multi-dimensional decay animation
- ( I820f2 , b/168014930 )
Version 1.0.0-alpha09
16 декабря 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha09
is released. Version 1.0.0-alpha09 contains these commits.
Изменения API
- Deprecated KeyEvent.Alt is now removed. Use KeyEvent.isAltPressed instead. ( Idd695 )
- Modifier.keyInputFilter and Modifier.previewKeyInputFilter are deprecated use Modifier.onKeyEvent and Modifier.onPreviewKeyEvent instead ( Idbf1b , b/175156384 )
- Modifier.focusObserver is deprecated. Use Modifier.onFocusChanged or Modifier.onFocusEvent instead ( I30f17 , b/168511863 , b/168511484 )
- For suspending pointer input APIs, renamed HandlePointerInputScope to AwaitPointerEventScope and handlePointerInput() to awaitPointerEventScope(). ( Idf0a1 , b/175142755 )
- Autofill API is now experimental API and requires opt-in ( I0a1ec )
- Adding destructuring declarations to create FocuSRequester instances ( I35d84 , b/174817008 )
- accessibilityLabel has been renamed to contentDescription. accessibilityValue has been renamed to stateDescription. ( I250f2 )
- Custom events were removed from suspending pointer input API ( Ia54d5 , b/175142755 )
- Introduced several new functions in SelectionRegistrar and also renamed onPositionChange to notifyPositionChange. ( Ifbaf7 )
- More members of LayoutNode we marked as internal ( I443c6 )
- LayoutInfo was introduced to be used by tooling and testing ( I9b190 )
- AndroidOwner made internal ( Ibcad0 , b/170296980 )
- Removed ExperimentalPointerInput annotation ( Ia7a24 )
- Nested scroll system added. Refer to Modifier.nestedScroll for more details ( I36e15 , b/162408885 )
- subcomposeInto(LayoutNode) was made internal ( Id724a )
The
Applier
interface has changed to simplify building trees bottom-up instead of top-down.The
insert()
method has been renamed toinsertTopDown()
.A new method,
insertBottomUp()
, was added.An applier either inserts nodes into the tree it is editing using
insertTopDown()
orinsertBottomUp()
depending on which performs better.Some trees, such as
LayoutNode
andView
, are much more efficient to build bottom-up than top-down. Prior to this change, a stack of inserts was required to implement bottom-up which needed to be copied to every applier which needed bottom-up construction for performance. With this change anApplier
overridesinsertBottomUp()
to build a tree bottom-up andinsertTopDown()
to build the tree top-down. ( Icbdc2 )Added dismissOnBackPress and dismissOnClickOutside properties to AndroidDialogProperties. These allow configuring when the dialog's onDismissRequest lambda will be invoked. ( If5e17 )
Added painterResource API to handle opaquely loading Painter objects from either rasterized asset formats (like PNGs) or VectorDrawables. Consumers no longer have to determine the type of asset in advance and can call this method to get a Painter object to use in Image composables or painter modifiers. ( I2c703 , b/173818471 )
Added Modifier.clearAndSetSemantics to clear descendants' semantics and set new ones. ( I277ca )
Moved ContentDrawScope to ui-graphics module to be with DrawScope. ( Iee043 , b/173832789 )
Introduced PathEffect graphics API to provide different patterns to stroked shapes. Deprecated usage of NativePathEffect in favor of expect/actual implementation of PathEffect. ( I5e976 , b/171072166 )
Added IdlingResource interfaces to Compose, as a Compose supported variant of Espresso's idling resources. They can be registered and unregistered through the ComposeTestRule ( I433f3 )
Removed global (un)registration of ComposeIdlingResource and global (un)registration of clocks into ComposeIdlingResource ( I32660 )
Исправления ошибок
- Lambdas in offset modifiers now return IntOffset rather than Float. ( Ic9ee5 , b/174137212 , b/174146755 )
Removed SlotTable, SlotReader and SlotWriter from the public API. These were marked as InternalComposeAPI previously. Now they are internal to the compose module.
CompositionData and CompositionGroup were added as a replacement for the ui-tooling API to use to extract composition information. These are public but are not intended for use outside the ui-tooling API as they provide the raw information the ui-tooling API interprets ( I31a9c )
Refactored ShaderBrush to lazily create a shader instance when sizing information of the drawing environment is available. This is useful to define gradients that occupy the full drawing bounds of a composable at composition time, without having to implement custom DrawModifier implementations.
Deprecated gradient function constructor APIs in favor of factory methods on a Gradient object. ( I511fc , b/173066799 )
Deprecate LazyColumnFor, LazyRowFor, LazyColumnForIndexed and LazyRowForIndexed. Use LazyColumn and LazyRow instead ( I5b48c )
Deprecated BuildCompat.isAtLeastR ( Idb37e )
Added buildAnnotatedString factory function in order to build an AnnotatedString. Deprecated annotatedString builder function. ( Idfe0b )
Removed extension methods on Float and Double to convert values to radians. Moved to be a private function within the implementation PathParser which was the only place where it was used ( I25f52 )
Version 1.0.0-alpha08
2 декабря 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha08
is released. Version 1.0.0-alpha08 contains these commits.
Изменения API
- Add semantics action Dismiss ( I2b706 )
- Moved DrawModifier APIs from the androidx.compose.ui package to the androidx.compose.ui.draw package. Created DrawModifierDeprecated.kt file to include typealiases/helper methods to assist with the migration from the deprecated to the current APIs. ( Id6044 , b/173834241 )
- Renamed Modifier.drawLayer to Modifier.graphicsLayer Also updated related classes to GraphicsLayer as per API feedback. ( I0bd29 , b/173834241 )
- New methods placeable.placeWithLayer() and placeable.placeRelativeWithLayer() were added which allows custom layouts and layout modifiers to place a child with introducing a graphics layer for their drawing. Having that we can first optimize redrawings, so when we need to move a child we don't have to redraw its content, second we can apply draw transformations for a child ( Ibd8f6 , b/170296989 , b/171493718 , b/173030831 )
-
<T>
was removed from SubcomposeLayout declaration. You can use it without specifying a type now. ( Ib60c8 ) - Added Modifier.scale/rotate APIs as conveniences for drawLayer.
- Renamed
Modifier.drawOpacity
toModifier.alpha
- Renamed
Modifier.drawShadow
toModifier.shadow
( I264ca , b/173208140 )
- Renamed
- Made PointerInputData's uptime and position fields non-nullable. ( Id468a )
- MaterialTheme now sets the correct colors for selection handles and selection background. Non-Material apps can manually use AmbientTextSelectionColors to customize the colors used for selection. ( I1e6f4 , b/139320372 , b/139320907 )
- Added WindowManager.isWindowFocused to check if the host window is in focus, and a WindowFocusObserver that provides an onWindowFocusChanged callback. ( I53b2a , b/170932874 )
- Updated TransformOrigin API to have destructuring syntax to return
pivotFractionX
andpivotFractionY
ascomponent1
andcomponent2
( If43c4 , b/173586560 ) - Added lint check for composable lambda parameter naming and position, to check for consistency with Compose guidelines. Also migrated some APIs using
children
as the name for their trailing lambda tocontent
, according to the lint check and guidance. ( Iec48e ) - Added API to check if Alt, Ctrl, Meta or Shift modifier keys were pressed when a keyevent was dispatched. ( I50ed9 )
- Added a new
Modifier.drawLayer()
overload. It takes a lambda block on a new GraphicsLayerScope where you define the layer parameters in a way which allows to skip recomposition and relayout when the state change happens. DrawLayerModifier is now internal in preparation to migrating its logic into placeable.placeWithLayer() method of LayoutModifier ( I15e9f , b/173030831 ) - Deprecated Ambients named with
Ambient
as their suffix, and replaced them with new properties prefixed with Ambient, following other Ambients and Compose API guidelines. ( I33440 ) - Moved
androidx.compose.ui.text.Typeface
toandroidx.compose.ui.text.font.Typeface
( Ic2b81 ) - Semantics argument mergeAllDescendants was renamed to mergeDescendants. ( Ib6250 )
- New drag gesture detector suspending pointer input API, including orientation locking. ( Icef25 )
- Renamed VectorAsset to ImageVector Moved and renamed VectorAsset to Builder to be an inner class of ImageVector as per API guidelines. Added typealias of VectorAssetBuilder to link to ImageVector.Builder for compat. ( Icfdc8 )
- Renamed ImageAsset and related methods to ImageBitmap. ( Ia2d99 )
- Add zIndex param for the PlacementScope's place() so Modifier.zIndex() now works as a LayoutModifier and any custom layout can set zIndexes for their children right in the placement block ( I711f7 , b/171493718 )
- Moved foundation semantics properties to ui ( I6f05c )
- Deprecate place(Offset) and placeRelative(Offset). Use overloads with int offsets instead ( I4c5e7 )
- Previously Deprecated APIs were removed: Modifier.onPositioned was removed, use Modifier.onGloballyPositioned. Modifier.onDraw was removed, use Modifier.onDrawBehind. Modifier.plus was removed, use Modifier.then. Color.Unset was removed, use Color.Unspecified. PxBounds class was removed, use Rect instead. ( Ie9d02 , b/172562222 )
- The Alignment interface was updated and made functional. ( I46a07 , b/172311734 )
- Gesture detector for tap, double-tap, long press, and press indication were added using the new suspending pointer input. A few utilities were added as well, making it easier for developers to write their own gesture detectors. ( I00807 )
-
id
was renamed tolayoutId
forLayoutIdParentData
.Measurable.id
was renamed toMeasurable.layoutId
. ( Iadbcb , b/172449643 ) - New multitouch gesture detector, including helpers for detecting rotation, zoom, and panning. ( Ic459d )
- Introduced SweepGradientShader and SweepGradientBrush APIs. ( Ia22c1 )
- Time control in tests (TestAnimationClock and its usages) is now experimental ( I6ef86 , b/171378521 )
Add coroutine-based scrolling APIs:
Adds LazyListState.snapToItem and LazyListState.smoothScrollBy, as well as lower-level APIs for scroll control. These APIs provide a suspend interface to control scrolling that waits until the scroll is finished before returning. ( Ie5642 )
Modifier.focusable has need added in foundation. Use this to add focusable behavior to a component, with correct semantics and accessibility. ( I41eb9 , b/152525426 , b/162865824 )
Provide default implementations of methods and properties in AnimationClockTestRule that can be delegated to its
clock
( I7ea3d , b/173399709 )AndroidComposeTestRule can now accept custom activity launchers ( Ib8288 , b/153623653 , b/154135019 )
TextLayoutResult.getLineVisibleEnd is deprecated. As a replacement TextLayoutResult.getLineEnd now has a new parameter visibleEnd. ( I73282 )
Updated TextFieldValue API
- made TextFieldValue.composition readonly
- removed exception thrown for invalid selection range ( I4a675 , b/172239032 )
Support TtsAnnotation for text to speech engine. ( I54cc6 )
New APIs for running animations in coroutines ( Ied662 )
Исправления ошибок
- The alignment parameter of Box was renamed to contentAlignment. ( I2c957 )
- offsetPx modifiers were renamed to offset. They are now taking lambda parameters instead of State. ( Ic3021 , b/173594846 )
- Added resetInput parameter to TextInputService#onStateUpdated ( I3e8f5 , b/172239032 , b/171860947 )
- Added lint check for Modifier parameters in Composable functions. This lint check checks the naming, return type, default value, and order of the parameter for consistency with Compose guidelines. ( If493b )
- Temporarily added option to let the TestAnimationClock be driven by the MonotonicFrameClock ( I1403b , b/173402197 )
- Added Android Typeface wrapper. You can load an Android Typeface via
typeface
function ietypeface(Typeface.DEFAULT)
. Also renamedtypefaceFromFontFamily()
totypeface()
( I52ab7 ) - Added lint check to check that Modifier factory functions are defined as extensions on Modifier, so they can be fluently chained together. ( I07981 )
- Remove old ui-test module and its stubs ( I3a7cb )
- Recomposer no longer accepts an EmbeddingContext; required scheduling dependencies are obtained from the effectCoroutineContext. FrameManager is deprecated; platform integrations should initialize their own global snapshot handling. ( I02369 )
- Pass style information to accessibility node. ( If5e8d )
- TextUnit.Inherit is renamed to TextUnit.Unspecified for consistency with other units. ( Ifce19 )
Compose UI Version 1.0.0-alpha07
11 ноября 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha07
is released. Version 1.0.0-alpha07 contains these commits.
Изменения API
- Introduced ScaleFactor inline class to represent scale factors for the horizontal and vertical axes independent of one another in order to support non-uniform scaling use cases.
- Added computeScaleFactor method to ContentScale
- Added ContentScale.FillBounds to perform non-uniform scaling to stretch the src bounds to fully occupy the destination.
- Added operator methods to compute ScaleFactor parameters with Size parameters.
- ( Ic96a6 , b/172291582 )
- The BiasAlignment and BiasAbsoluteAlignment factories for creating Alignments were added. ( Iac836 , b/169406772 )
- Allow a developer to forcefully clear focus. ( I90372 )
- A bug causing elevation not being drawn for Views inside Compose was fixed. ( If7782 )
- Created onDrawBehind API within ContentDrawScope to match naming convention with Modifier.drawBehind. ( I4fc3a , b/171955269 )
- Add support for camera distance to complement 3d transformations rotationX/rotationY on layer APIs. ( I40213 , b/171492100 )
- Added SelectionContainer without the callback ( Ibfadb )
- ExperimentalSubcomposeLayoutApi annotation was removed. SubcomposeLayout can now be used without adding @OptIn ( I708ad )
- FirstBaseline and LastBaseline were moved to androidx.compose.ui.layout package ( Ied2e7 )
- Removed opacity from drawShadow() modifier as it was confusing. ( I82c62 , b/171624638 )
- MeasureResult was moved out of MeasureScope. ( Ibf96d , b/171184002 )
- Several layout related symbols were moved from androidx.compose.ui to androidx.compose.layout.ui. ( I0fa98 , b/170475424 )
- Removed Deprecated FocusState2 ( I686cb , b/168686446 )
- ZIndexModifier is now internal ( I1808b , b/171493718 )
- Updated return type of lerp method on Size parameters to return a non-null Size to avoid unnecessary boxing. ( Ib0044 )
- Added TestMonotonicFrameClock for testing code that relies on Compose's MonotonicFrameClock for awaiting composition frame events using kotlinx-coroutines-test's runBlockingTest ( I4402f )
- Removed GestureScope.localToGlobal ( I15299 , b/171462785 )
- Added
onAllNodesWithSubstring
finder ( I81dd7 , b/171462889 ) - androidx.ui.test module deprecated. Please migrate to androidx.compose.ui.test and androidx.compose.ui.test.junit4 ( I452e8 )
Исправления ошибок
- captureToBitmap moved to captureToImage. ( I86385 )
- foundation.Text has been deprecated and replaced with material.Text. For a basic, unopinionated text API that does not consume values from a theme, see androidx.compose.foundation.BasicText. ( If64cb )
- Update TextFields to accept KeyboardOptions ( Ida7f3 )
- Rename KeyboardOptions as ImeOptions ( I82f36 )
- Moved KeyboardType and ImeAction into KeyboardOptions ( I910ce )
- provideDefault was added as an alternative for providing ambients, and it can be used to specify ambient values that will only be set when there is no ambient value already provided. ( Id6635 , b/171024925 )
- BaseTextField has been deprecated. Use BasicTextField instead. ( I896eb )
- Introduce ui-test-junit4 module ( Ib91f8 )
-
relativePaddingFrom
was renamed topaddingFrom
. ThepaddingFromBaseline
modifier was added, as convenience for specifying distances from layout bounds to text baselines. ( I0440a , b/170633813 ) - LaunchedTask was renamed to LaunchedEffect for consistency with the SideEffect and DisposableEffect APIs. LaunchedEffect with no subject params is not permitted in order to encourage best practices. ( Ifd3d4 )
- Introduced resources composable that recomposes when the configuration updates. ( I6387c , b/167352819 )
- Recomposer now requires a CoroutineContext at construction ( Ic4610 )
- Sum
zIndex
values when multipleModifier.zIndex()
applied. Previously the first one was winning. ( Ic514c , b/170623936 ) - Changes to the internal SlotTable implementation which should not affect the public API. ( If9828 )
- Added Keyboard auto correct IME Option ( I57b8d )
- androidx.ui.test moved to androidx.compose.ui.test ( I9ffdb )
- Removed KeyboardOptions.toImeOptions from public API. ( Ic2e45 )
External Contribution
- Disabled publication of internal artifact androidx.compose.ui:ui-text-android ( Ib93fa )
Version 1.0.0-alpha06
28 октября 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha06
is released. Version 1.0.0-alpha06 contains these commits.
Изменения API
- Recomposer is now a CompositionReference and a valid composition parent. Explicit Recomposer is now required in fewer places. ( I4036f )
- Deprecate VectorPainter in favor of rememberVectorPainter to better indicate that the composable API internally leverages 'remember' to persist data across compositions. ( Ifda43 )
- Updated Modifier.drawWithCache API to expose ContentDrawScope as a receiver scope instead of DrawScope in order to provide implementations the ability to re-order drawing commands. This is useful for blending/ tinting use cases in which content pixels must be rendered first in order for the corresponding blend mode algorithm to be applied properly. ( Ie7ec8 )
- Move SimpleContainer into PopupTestUtils.kt ( I78c57 )
- ConsumedData is no longer a data class. See https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 for details ( I1737f )
- Fix Rtl Handle Position. ( I6e1e0 )
- Refactored DrawScope and ContentDrawScope to be interfaces instead of abstract classes
- Created CanvasDrawScope implementation of DrawScope
- Refactored implementations of DrawScope to use CanvasScope instead
- Created DrawContext to wrap dependencies for DrawScope
- Removed deprecated methods on DrawScope ( I56f5e )
- Breaking change: removed the return value from
PointerInputFilter.onPointerEvent(...)
given that the only value that should be able to be changed in pointer events is consumption data. Instead of returning data fromPointerInputFilter.onPointerEvent(...)
, now you can just mutate the consumption data of the PointerEvents passed in. ( I6acd0 ) - MeasureScope and IntrinsicMeasureScope were made interfaces. ( I1a087 , b/170461665 )
- The merge function for AlignmentLine was hidden. ( I9da1a , b/170612900 , b/170611568 )
- Add ability to specify inspector info in composed modifier ( Idee08 , b/163494569 )
- Added SelectAll option into selection menu ( Ief02b )
- Updated DrawTransform.rotate to take a default pivot parameter of center to match the documentation.
- Updated DrawScope.rotateRad to consume an Offset for the pivot point to match other transformation methods.
- Deprecated DrawScope.rotateRad overload that consumed floats for the x and y coordinate of the pivot.
- ( Iffcbb , b/170434992 )
Исправления ошибок
- API lint check for MissingGetterMatchingBuilder is enabled for androidx ( I4bbea , b/138602561 )
- Add test. ( I6b8ae )
- Enable transitions in ComposeTestRule; remove option to enable the blinking cursor from ComposeTestRule. ( If0de3 )
- Added KeyboardCapitalization IME Option ( I8ac38 )
- Added single line keyboard option to CoreTextField ( I72e6d )
- Move SimpleContainer into PopupTestUtils.kt ( I65c3e )
- Renamed Radius API to CornerRadius to better express how it is used throughout Compose. Updated documentation to indicate that negative corner radii are clamped to zero. ( I130c7 , b/168762961 )
- Improved Android interop by continuing to send MotionEvents to child Android Views that return false for onTouchEvent for all actions except
ACTION_DOWN
( I94c5a , b/170320973 ) - Box was made an inline function. ( Ibce0c , b/155056091 )
External Contribution
- Support different locales for
AnnotatedString.capitalize
andAnnotatedString.decapitalize
( I4aa7f )
Version 1.0.0-alpha05
14 октября 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha05
is released. Version 1.0.0-alpha05 contains these commits.
Изменения API
- Add a DSL for specifying inspector information ( Ic9a22 )
- Move LongPress into Text. ( Iff2bc )
- Experimental Modifier.pointerInput suspending input modifier ( Ia77d2 )
- Added Copy/Paste/Cut accessibility actions ( I6db4f )
- Public constructor for AndroidOwner was removed ( Iacaef )
- Popups and dialogs now inherit FLAG_SECURE from parent Window. Also added option to configure this explicitly ( I64966 , b/143778148 , b/143778149 )
Consumption data is now mutable. Also calls to extension functions that do consumption now no longer return a new PointerInputChange, but instead mutate the provided PointerInputChange.
This is the first step in a 2 step process to make PointerEvent data mutable such that other pointer data cannot be edited by user code. The second step will be to remove the
List<PointerInputChange>
return type fromPointerInputFilter.onPointerEvent(...)
. ( Id067e )Disable Selection in Text, and a Demo. ( Ie7e97 )
Made onGloballyPositioned an inline function ( I15830 )
OnPositionedModifier is renamed to OnGloballyPositionedModifier and onPositioned() is renamed to onGloballyPositioned(). ( I587e8 , b/169083903 )
The hasPendingMeasureOrLayout property was added to Owner, telling whether the Owner has any pending layout work. ( I3d9f8 , b/169038599 )
Added API to programmatically clear focus ( Ie1dc2 , b/161487952 )
Removed
PointerInputFilter.onPointerInput(...)
.PointerInputFilter.onPointerEvent(...)
should be used in its place. ( I6f04a )Changes to Size
- Removed Size.getFlipped
- Removed Size.rem
- Removed Size.truncDiv ( Ief44d , b/169790720 )
As part of the standardization of sentinel values for inline classes, rename Color.Unset to Color.Unspecified for consistency with other inline classes ( I97611 , b/169797763 )
TextOverflow.None is introduced. When overflow is None, Text won't handle overflow anymore, and it will report its actual size to LayoutNode. ( I175c9 , b/158830170 )
The scope parameter within AnnotatedString.Builder.addStringAnnotation is renamed to tag for API consistency. ( I7c8cb )
Исправления ошибок
- The scrolling performance of LazyColumn/Row is improved by doing less work in subcomposition on every scroll. The new hasInvalidations() method was added for Composition class. hasPendingChanges() method from Recomposer was renamed to hasInvalidations() ( Ib2f32 , b/168293643 , b/167972292 , b/165028371 )
- Updated Size.Unspecified parameters to be Float.NaN instead of Float.POSITIVE_INFINITY. Updated Painter implementations to check against Size.Unspecified as well as non-finite Sizes. ( I95a7e )
- The order of place() calls in custom Layouts now defines the drawing order for the children ( Ibc9f6 )
- Support AnnotatedString to SpannableString conversion for accessibility. ( Ief907 )
- Added stubs for android classes that are on older platforms to avoid use of reflection when possible. ( Ia1790 )
- Fixed bug: If the software keyboard showing caused the app to translate, pointer input coordinates would become incorrect. ( Ic4cec , b/163077821 )
Version 1.0.0-alpha04
1 октября 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha04
is released. Version 1.0.0-alpha04 contains these commits.
Изменения API
- Added OwnerScope to allow collection of layout and drawing observation scopes once they are no longer valid. ( Ic4cf8 )
- Added OnRemeasuredModifier and onSizeChanged() to receive a callback when content layout has been remeasured and the size has changed, respectively. ( I657cf , b/154108792 )
- Add long click semantics action ( I6281b , b/156468846 )
- Made FocusManager private. ( I7872f )
Updated implementation to create a dedicated DrawCacheModifier implementation instead of adding optional properties on DrawModifier.
Updated documentation for various methods ( Ibd166 )
Make TextRange inline to avoid object creation. ( Id034b )
PlacementScope#parentWidth and PlacementScope#parentLayoutDirection can no longer be read from the placement block of a custom layout. ( Icc1ae , b/168295623 )
add AccessibilityScrollState to semantics properties. ( Ifeda9 )
Introduced Modifier.drawWithCache to support creating a drawing object that conditionally recreates dependencies that depend on size/state information ( I376dc )
ParagraphConstraints is removed. Width is directly passed to Paragraph now. ( Ica712 )
Исправления ошибок
- Updated many Graphics APIs
- Updated scale and rotation transformation APIs to consume a single Offset parameter to represent the pivot coordinate instead of separate float parameters for the x/y coordinates in DrawScope and DrawTransform
- Removed Rect.expandToInclude and Rect.join methods
- Updated Radius documentation to say oval in addition to elliptical
- Added documentation to indicate the public constructor for the inline Radius class is not to be called directly but instead Radius objects should be instantiated through their function constructors
- Removed RoundRect APIs to query topRight, bottomRight, bottomCenter, etc.
- Deprecated Rect.shift in favor of Rect.translate
- Removed RoundRect.grow and Rect.shrink APIs
- Renamed RoundRect.outerRect to Rect.boundingRect
- Removed RoundRect.middleRect/tallMiddleRect/wideMiddleRect and Rect.isStadium methods
- Renamed RoundRect.longestSide to RoundRect.maxDimension
- Renamed RoundRect.shortestSide to RoundRect.minDimension
- Changed RoundRect.center to be a property instead of a function
- Updated RoundRect constructor to consume Radius properties instead of individual parameters for x/y radius values
- Removed Size APIs that assumed it was a Rectangle with origin at 0,0
- Added a destructing API to Radius
- Migrated various RoundRect extension functions to be properties instead
- ( I8f5c7 , b/168762961 )
- foundation.Box was deprecated. Please use foundation.layout.Box instead. ( Ie5950 , b/167680279 )
- Stack was renamed to Box. The previously existing Box will be deprecated in favor of the new Box in compose.foundation.layout. The behavior of the new Box is to stack children one on top of another when it has multiple children - this is different from the previous Box, which was behaving similar to a Column. ( I94893 , b/167680279 )
- Box decoration parameters have been deprecated. If you want to have decorations/padding on your box, use Modifiers instead (Modifier.background, Modifier.border, Modifier.padding) ( Ibae92 , b/167680279 )
- Updated many Graphics APIs
- Updated DrawScope APIs with scoped transformation methods to indicate that the transformation is only applied within the callback and removed after the callback is invoked
- Updated clipPath documentation to refer to Path instead of rounded rectangle
- Fixed spacing in documentation for right parameter in clipPath
- Renamed DrawScope.drawCanvas to drawIntoCanvas and removed size parameter
- Renamed dx/dy parameters in inset method to horizontal and vertical
- Added inset overload that provides the same inset value to all 4 bounds
- Removed documentation on inset method indicating that inset would be applied to all 4 sides
- Updated documentation for Rect class
- Updated comments on Rect parameters to match kdoc style
- Removed Rect.join and Rect.expandToInclude
- Created overload for Rect.translate(offset) and deprecated Rect.shift
- ( If086a , b/167737376 )
- Annotated rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled and textInputServiceFactory with @VisibleForTesting, make them internal API and hide their kdoc ( I554eb , b/168308412 )
- Remove SelectionContainer from the Top to disable default selection and avoid unexpected behavior. One can specifically use a SelectionContainer to wrap the content that needs to be selectable instead. ( I8dfe0 , b/158459594 )
Version 1.0.0-alpha03
16 сентября 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha03
is released. Version 1.0.0-alpha03 contains these commits.
Изменения API
- Remove scroll forward/backward semantics actions. Added steps in AccessibilityRangeInfo. ( Ia47b0 )
- Removed
onInvalidate()
fromOwner
--OwnedLayer
handles invalidation. ( Ica72b , b/162061312 ) Removed operator methods on Size API that consume Offset parameters. The result of these operations is unclear and the type of result is unexpected for these. Бывший. should size - offset return an offset or a size result with the difference?
Also removed deprecated methods on Size class. ( Iec902 , b/166514214 )
Исправления ошибок
- Fix for items of LazyColumn being incorrectly drawn sometimes, this was also causing crashes in some conditions. ( Ibcf17 , b/163066980 , b/165921895 )
- DpConstraints and APIs using it were deprecated. ( I90cdb , b/167389835 )
- Moved
createAndroidComposeRule
andAndroidInputDispatcher
fromandroidx.ui.test.android
toandroidx.ui.test
( Idef08 , b/164060572 ) - Usages of gravity were consistently renamed to align or alignment in layout APIs. ( I2421a , b/164077038 )
- Added onNode and other global methods on ComposeTestRule as the current global ones are going to be deprecated. ( Ieae36 )
Version 1.0.0-alpha02
2 сентября 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha02
is released. Version 1.0.0-alpha02 contains these commits.
Изменения API
- remove callback to notify Owner when layoutnode bounds change. ( If654e , b/166106882 )
- Added support for filltype parameters on vector graphics paths to support cutouts of shapes according to evenOdd or NonZero path fill rules. ( I43dd2 )
- Uptime and Velocity are now inline classes ( I48f4a )
- Duration is now an inline class ( I565eb )
- Add a callback to notify Owner when layoutnode bounds change. ( Ic40b3 )
Fixed issue where Rect function constructor with Offset and radius would create the Rect in the order of left, right, top, bottom instead of left, top, right, bottom.
Removed deprecated companion methods on Rect in favor of function constructors.
Added tests to verify methods in Rect.kt ( I08460 , b/165822356 )
Исправления ошибок
- Added MutableRect, a rectangle that can be modified. ( I71bd2 , b/160140398 )
- Matrix4 was replaced with Matrix. All other parts of vectormath package have been removed. ( Ibd665 , b/160140398 )
The calling convention for composable functions has changed. This is a binary breaking change. All libraries must be recompiled to work with this version of the compose compiler plugin.
This change does not create a source level breaking change as the only APIs that have changed are compiler APIs that have an explicit opt in. ( I7afd2 , b/158123185 )
Fixed crash that could occur when dispatch to a PointerInputFilter could cause the PointerInputFilter to be synchronously removed. ( I58f25 )
Version 1.0.0-alpha01
26 августа 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha01
is released. Version 1.0.0-alpha01 contains these commits.
Version 0.1.0-dev
Version 0.1.0-dev17
19 августа 2020 г.
androidx.compose.ui:ui-*:0.1.0-dev17
is released. Version 0.1.0-dev17 contains these commits.
Изменения API
-
emitView
was deprecated. UseAndroidView
instead if possible for emitting Views inside Compose. Note that composing Views and ViewGroups directly will not be supported in the future unless these are leaves in the composition tree, case when this can be achieved using AndroidView. ( I29b1e , b/163871221 ) -
FocusState2
is deprecated and replaced byFocusState
( Ia8b79 , b/160822876 , b/160923332 ) - The deprecated AndroidView overloads were removed. ( I946b9 , b/163802393 )
- Custom emits can now declare that one or more of its setters can be skipped and recomposed independently of the emit. ( Ibbd13 )
Changed Vector classes to no longer be data classes as the same object instance is used for composition.
Added mutableStateOf flag for VectorPainter to conditionally re-draw if contents of the vector change.
Refactored VectorComponent instance to be part of VectorPainter as it is re-used across compositions.
Updated GroupComponent and PathComponent to have their name fields be mutable ( Ieae45 , b/151378808 )
Removed
onChildPositioned
andOnChildPositionedModifier
. Developers should useonPositioned
andOnPositionedModifier
on the child layout instead. ( I4522e , b/162109766 )Offset has become an inline class ( Iaec70 )
Added a modifier param to SelectionContainer ( I4aada , b/161487952 )
Removed deprecated FocusModifier ( I0b4ba , b/160922116 , b/160821157 , b/162441435 , b/160822875 , b/160921940 )
Added
mergePolicy
lambda toSemanticsPropertyKey
. This can be used to define a custom policy for mergeAllDescendants semantics merging. The default policy is to use the parent value if already present, otherwise the child value. ( Iaf6c4 , b/161979921 )Constraints is now an inline class ( I88736 )
Added FocusManager that moves common focus logic out of AndroidComposeView ( I528ef , b/161487952 , b/162206799 )
Updated PointerEventPass names for Alpha release. ( Ifda6f )
IntOffset is now an inline class ( Iac0bf )
IntSize is now an inline class ( I2bf42 )
PlacementScope.placeAbsolute()
was renamed toPlacementScope.place()
, and the previousPlacementScope.place()
was renamed toPlacementScope.placeRelative()
. As a result, thePlacementScope.place()
method will not automatically mirror the position in right-to-left contexts anymore. If this is desired, usePlacementScope.placeRelative()
instead. ( I873ac , b/162916675 )AlertDialog now uses FlowRow for buttons ( I00ec1 , b/161809319 , b/143682374 )
Made some test utilities non public because they are not where they belong. Will be made public in the future. ( I32ab1 )
Refactored organization of pointer input code. ( Ie3f45 )
Deprecated PxBounds in favor of Rect. Updated all usages of PxBounds with rect and added proper deprecate/replace with annotations to assist with the migration. ( I37038 , b/162627058 )
Removed Deprecated KeyEvent2. Use KeyEvent instead. ( Ied2d0 , b/162097587 )
KeyEvent has a unicode property that can be used to get the unicode character generated by the specified key and meta key state combination ( If3afc )
Made the DelayUp custom event and related classes an opt in API as it is very likely going to be changed. ( I56d6f )
Removed 2 PointerEventPasses that are no longer needed. ( I3dd9d )
Add parameter color, shadow and TextDecoration to Paragraph.paint This function is useful to avoid unnecessary Paragraph recreation. ( I81689 )
Исправления ошибок
- Removed onFocusChanged callbacks from TextField. Use Modifier.focusObserver instead. ( I51089 , b/161297615 )
- Modifier.drawBorder has been deprecated. Use Modifier.border instead. Border data class has been replaced by BorderStroke ( I4257d , b/158160576 )
Removed deprecated FrameManager calls.
Internal compose APIs have been changed to reduce the amount of overhead to track state objects such as
mutableStateof()
( I80ba6 )VerticalScroller and HorizontalScroller have been removed. Use ScrollableColumn/Row instead. Modifier.drawBackground has been removed. Use Modifier.background ( I73b0d , b/163019183 )
Crash when something which saves the state was used inside the for loop is fixed. Now having the same key in savedInstanceState() is allowed, api of UiSavedStateRegistry is now adjusted to this new requirement ( I4ab76 , b/160042650 , b/156853976 , b/159026663 , b/154920561 )
The
state { ... }
composable is now deprecated in favor of explicit calls toremember { mutableStateOf(...) }
for clarity. This reduces the overall API surface and number of concepts for state management, and matches theby mutableStateOf()
pattern for class property delegation. ( Ia5727 )Renamed RRect to RoundRect to better fit compose naming patterns Created similar function constructors to RRect and deprecated RRect function constructors ( I5d325 )
Version 0.1.0-dev16
5 августа 2020 г.
androidx.compose.ui:ui-*:0.1.0-dev16
is released. Version 0.1.0-dev16 contains these commits.
Изменения API
- OnChildPositioned has been deprecated. Use OnPositioned on the child instead. ( I87f95 , b/162109766 )
- setViewContent was deprecated. setContent should be used instead. ( I7e497 , b/160335130 )
- Added the AndroidViewBinding API for inflating and composing layout resources, based on ViewBinding. ( I081c6 )
- KeyEvent2 is replaced by KeyEvent ( I2d770 , b/162097585 )
- Added support for Alt hardware key ( I9036b )
- FocusManager is Deprecated. Use Modifier.focus(), Modifier.focusObserver() and Modifier.focusRequester() instead. ( I74ae4 , b/162211322 )
- loadVectorResource supports trimPath attributes ( I808fe )
- Move dialog to ui ( I47fa6 )
- Removed 2 PointerEventPasses that are no longer needed. ( I33ca7 )
- Implemented PointerInteropModifier which provides the ability to receive MotionEvents and interact with Compose as if you are an implementation of an Android View. ( Ieb08c )
- Removed the deprecated tag modifier. Please use layoutId instead. ( Idaa05 , b/162023919 )
- The APIs for right-to-left support has been updated. LayoutDirectionAmbient has been added, which can be used to read and change the layout direction. Modifier.rtl and Modifier.ltr have been removed. ( I080b3 )
- Support path trimming in vector graphics ( Ie16c9 , b/158188351 )
- Added Modifier.layout() that allows to create a custom layout modifier conveniently ( I73b69 , b/161355194 )
- Added a new AndroidView API and deprecated the existing ones. ( I5bcfd )
- Modifier.plus has been deprecated, use Modifier.then instead. 'Then' has a stronger signal of ordering, while also prohibits to type
Modifier.padding().background() + anotherModifier
, which breaks the chain and harder to read ( Iedd58 , b/161529964 ) - Add [Abstract]ComposeView View subclasses for hosting Compose content in a View hierarchy. ( I46357 )
-
Row
andColumn
are now inline function significantly reducing the overhead of using them. ( I75c10 ) - SubcomposeLayout is added. It is a low level primitive which allows to compose the children during the measuring if we want to use some values available only later during the measure for the subtree composition. For example WithConstraints is not implemented using SubcomposeLayout. ( I25cc8 )
- Added
SemanticsNode.positionInRoot
to get the position of a SemanticsNode relative to the root of the Compose hierarchy ( Icdf26 , b/161336532 ) - MotionEvents passed all the way through from Android, into Compose, and back into Android. ( I14be8 , b/158034713 )
- Removed dropdownPopup. ( I00430 )
- Fixed popup position on cut-out displays. ( Idd7dd )
- Add accessibility action to get TextLayoutResult ( I9d6e6 )
- RemeasurementModifier added. it allows to synchronously remeasure the layout. In general you never need it as remeasure/relayout is happening automatically, but we use it inside LazyColumnItems during the scroll. ( I5f331 , b/160791058 )
- Remove getLineEllipsisOffset/getLineEllipsisCount. Use getLineVisibleEnd/getLineEnd/isLineEllipsized instead. ( I85aa2 )
- Add some Marks/Annotations for best practice reason. ( I66b20 )
- expose more line APIs in TextLayoutResult. ( I79bd2 )
- Built-in vector converters to convert built-in units are now accessible via Foo.VectorConverter. eg Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter, etc ( I3e273 )
Исправления ошибок
- Address broad API fixes ( I077bc )
- Remove unused OffsetBase interface
- Align Offset and IntOffset classes to have a consistent API surface
- Rename IntOffset.Origin to IntOffset.Zero to be consistent with Offset API
- Moved nativeCanvas method off of Canvas interface to support consumers to create their own Canvas instances
- Created stub EmptyCanvas class to refactor DrawScope to be a non-null parameter instead of lateinit and ensure non-nullability of the field
- Renamed ClipOp enums to be Pascal Case
- Renamed FilterQuality enums to be Pascal Case
- Renamed StrokeJoin enums to be Pascal Case
- Renamed PointMode enums to be Pascal Case
- Renamed PaintingStyle enums to be Pascal Case
- Renamed PathFillType enums to be Pascal Case
- Renamed StrokeCap enums to be Pascal Case
- Updated DrawCache implementation to no longer use lateinit params
- Updated DrawScope to no longer use lazy delegation for fillPaint and strokePaint internal parameters
- Updated Image composable to avoid Box usage for less overhead
- Updated Outline class to have @Immutable annotations
- Updated PathNode to have @Immutable annotations for each path instruction
- Updated Vector subcomposition to remove redundant conditional checks for equality as compose already handles them
- Deprecated Rect companion constructor methods in favor of function constructors
- Updated Brush classes and function constructors with @Immutable and @Stable APIs
- Updated VertexMode enum to be PascalCase
- Updated DrawScope selectPaint method to conditionally overwrite stroke parameters on the paint if they have changed
- Updated Size to add destructuring API, rename UnspecifiedSize to Unspecified and removed unused methods
- Updated compose BlendMode API consumption to properly map between Android framework BlendModes and PorterDuff modes depending on API level. Introduced BlendMode#isSupported API to act as a capability query to determine if the BlendMode is supported on the device before it is used. ( I0ef42 )
- LazyItemScope was added for itemContent param of Lazy lists. It provides modifiers to fill the parent max size which solves the use case when the item should fill the viewport and the regular Modifier.fillMaxSize() doesn't work as the item is measured with infinity constraints. ( Ibd3b2 , b/162248854 )
- Removed
SemanticsNodeInteraction.performPartialGesture
. UseSemanticsNodeInteraction.performGesture
instead. ( Id9b62 ) -
LazyColumnItems
was renamed toLazyColumnFor
.LazyRowItems
was renamed toLazyRowFor
( I84f84 ) -
foundation.shape.corner
package was flattened tofoundation.share
( I46491 , b/161887429 ) - Renamed
AndroidComposeTestRule
tocreateAndroidComposeRule
. ( I70aaf ) - Added more APIs to
TextLayoutResult
. ( Id7e04 ) - Material
FilledTextField
was renamed toTextField
and foundationalTextField
was renamed toBaseTextField
to make simplest desired API easy to discover and use ( Ia6242 , b/155482676 ) - Modifier.drawBackground has been renamed to Modifier.background ( I13677 )
Version 0.1.0-dev15
22 июля 2020 г.
androidx.compose.ui:ui-*:0.1.0-dev15
is released. Version 0.1.0-dev15 contains these commits.
Dependencies Update
- To use the
0.1.0-dev15
version of Compose, you will need to update your dependencies according to the new code snippets shown above in Declaring dependencies .
Изменения API
- FocusModifier is deprecated in favor of Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState and FocusDetailedState are deprecated in favor of FocusState2 ( I46919 , b/160822875 , b/160922136 )
- Added a modifier to observe focus state change. ( I05866 , b/160924455 , b/160923326 )
- Added a modifier to request focus changes ( I8dd73 , b/161182057 , b/160924778 )
- Ajdust the Toolbar Menu to show copy, cut, paste properly. ( Id3955 )
- Single-value semantics properties now use a calling style. For example, 'semantics { hidden = true }' is now written as:
semantics { hidden() }
. ( Ic1afd , b/145951226 , b/145955412 ) - Added Modifier.focus which replaces FocusModifier. ( Ib852a , b/160924778 )
- Add FloatingToolbar for TextField Selection. ( Ie8b07 )
- Added an experimental api annotation for key input related API ( I53c0a )
- Added an experimental api annotation for all Focus-related API ( I53b24 , b/160903352 )
- Added FocusState2 which will replace FocusDetailedState ( I0a3ba , b/160822595 )
- Added ExperimentalFocus which is an @OptIn annotation for Focus API. ( I1544b , b/160820961 )
- An IntBounds unit class has been added, representing integer pixel bounds from layout. The API of PopupPositionProvider has been updated to use it. ( I0d8d0 , b/159596546 )
- Applier now requires a clear() method for disposing compositions ( Ibe697 )
- KeyEvent is deprecated and replaced by KeyEvent2 ( I68730 )
- A new optional flag useUnmergedTree was added to test finders. ( I2ce48 )
- Made LayoutNode experimental API ( I4f2e9 )
Added copy methods to various inline class types including:
- Компенсировать
- Размер
- Радиус
- Движение
TransformOrigin
Deprecated Size.copy companion object method favor of instance copy method ( Ife290 , b/159905651 )
Popups, Dialogs and Menus are now inheriting the contextual MaterialTheme ( Ia3665 , b/156527485 )
TextDirection is renamed as ResolvedTextDirection ( I3ff38 )
Removed layout direction parameter from the measure block of the Layout() function. Layout direction is however available inside the callback through the measure scope object ( Ic7d9d )
Refactor SelectionHandles for reusing. ( I420e0 )
Clickable was removed. Use Modifier.clickable ( I84bdf )
TestTag and Semantics have been deleted. Use Modifier.testTag and Modifier.semantics instead ( I15ff0 , b/158841414 )
Prior to this change, the compose compiler plugin would non-trivially intercept calls to constructors inside of a @Composable function if there was an ( I5205a , b/158123804 )
Modifier.tag was renamed to Modifier.layoutId, to avoid confusion with Modifier.testTag. ( I995f0 )
Alignment line Int positions returned from Placeable#get(AlignmentLine) are now non-null. If the queried alignment line is missing, AlignmentLine.Unspecified will be returned. ( I896c5 , b/158134875 )
The AndroidView composable was added a modifier parameter. ( I48a88 , b/158746303 )
Semantics() is deprecated. Use Modifier.semantics() instead. ( I72407 , b/158841414 )
Add viewModel() composable which allows to create or get already created ViewModel similarly to how it works in Activity or Fragment ( I5fdd1 )
Replaced usage of IntPx with Int. Replaced IntPxPosition with IntOffset. Replaced IntPxSize with IntSize. ( Ib7b44 )
In order to consolidate the number of classes used to represent sizing information, standardize on usage of the Size class instead of PxSize. This provides the benefits of an inline class to leverage a long to pack 2 float values to represent width and height represented as floats. ( Ic0191 )
In order to consolidate the number of classes used to represent positioning information, standardize on usage of the Offset class instead of PxPosition. This provides the benefits of an inline class to leverage a long to pack 2 float values to represent x and y offsets represented as floats. ( I3ad98 )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters. Deleted Px class in its entirety ( I3ff33 )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( I086f4 )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( Id3434 )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( I97a5a )
TestTag is now deprecated. Use Modifier.testTag instead. ( If5110 , b/157173105 )
The default, no-op, implementation of ParentDataModifier#modifyParentData has been removed - it was equivalent to not implementing the interface in the first place. ( I0deaa )
Previously deprecated ScaleFit as removed. Use ContentScale instead. ( Ifbc5b )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( I19d02 )
Added the DropdownMenu component in ui-material, a Material Design menu implementation. ( I9bb3d )
Removed deprecated LayoutTag(), please use Modifier.tag() instead. Removed deprecated Modifier.matchParent(), please use Modifier.matchParentSize() instead. ( If8044 )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( I57bff )
Modifier.semantics has been undeprecated to allow usages for high level components. ( I4cfdc )
Consolidated CanvasScope implementations so there is now just DrawScope and ContentDrawScope Renamed CanvasScope to DrawScope. Updated DrawScope to implement Density interface and provide LayoutDirection Deleted DrawScope subclass in ContentDrawScope Painter and PainterModifier have been updated to no longer maintain an RTL property themselves as DrawScope provides this already without manually providing it ( I1798e )
DoubleTapGestureFilter now disambiguates SingleTapGestureFilter across the tree. ( If92b1 )
Updated Alignment API and added support for absolute alignment (which does not auto-mirror in Rtl context) ( I38cd3 )
DrawLayer modifiers api has been changed: outlineShape renamed to shape and has the RectangleShape default value and now non-nullable; clipToOutline renamed to clip; clipToBounds removed as it is the same as clip == true with RectangleShape ( I7ef11 , b/155075735 )
Updated higher level compose APIs that expose a Canvas to expose CanvasScope instead. This removes the need for consumers to maintain their own Paint objects. For consumers that still require access to a Canvas they can use the drawCanvas extension method which provides a callback to issue drawing commands with the underlying Canvas. ( I80afd )
WithConstraints trailing lambda API has been changed. Now instead of two params it has a receiver scope which in addition to constraints and layoutDirection provides minWidth, maxWidth, minHeight and maxHeight properties in Dp ( I91b9a , b/149979702 )
Renamed LayoutModifier2 to LayoutModifier. ( Id29f3 )
Removed deprecated LayoutModifier interface. ( I2a9d6 )
Intrinsic measurements functions in Layout and LayoutModifier2 have an IntrinsicMeasureScope receiver now which provides intrinsics query API with implicitly propagated layout direction. ( Id9945 )
Layout and LayoutModifier children can be measured with a different layout direction. ( Ibd731 )
New Modifier.zIndex() is added to control the drawing order of the children within the same parent layout. elevation property on DrawLayerModifier is renamed to shadowElevation and doesn't control the drawing order anymore. The params order fo DrawShadow is changed: elevation is now the first one and the shape is the second one with a RectangleShape default. ( I20150 , b/152417501 )
Removed onSizeChange and onPositionChange in Owner. ( I5c718 )
Added Constraints2, a copy of Constraints that does only supports Int connstraints values rather than IntPx. IntPx will be removed and all integer constraints will be assumed to be pixels like Android.
- Added IntSize as well, which will eventually replace IntPxSize. ( I4b43a )
Made Alignment instantiable with arbitrary values. Added 1D Alignments. ( Ia0c05 )
alignToSiblings now accepts a Measured instead of Placeable. ( I5788d )
( I45f09 , b/152842521 )
- Renamed ScaleFit to ContentScale
- Moved ContentScale from ui-graphics to ui-core module to live in the same module as the Alignment API.
- Renamed FillMaxDimension to Crop
- Renamed FillMinDimension to Fit
- Renamed Fit to Inside to better match
- ImageView.ScaleType equivalents
- Added documentation indicating that the combination of Crop and Alignment.Center achieves the same result as ImageView.ScaleType.CENTER_CROP and Fit used with Alignment.Center achieves the same result as ImageView.ScaleType.FIT_CENTER Inside used with Alignment.Center achieves the same result as ImageView.ScaleType.CENTER_INSIDE
Rtl support for draw modifiers. ( I0aaf9 )
Released API for inflating Android Views from XML. See ViewInCompose demo for more details. ( I42916 )
Improve DrawModifier API:
- Made the receiver scope for draw() ContentDrawScope
- Removed all parameters on draw()
- DrawScope has same interface as former CanvasScope
- ContentDrawScope has drawContent() method ( Ibaced , b/152919067 )
Added positionInParent and boundsInParent for LayoutCoordinates. ( Icacdd , b/152735784 )
DrawLayerModifier and drawLayer() now default clipToBounds and clipToOutline to false. ( I0eb8b , b/152810850 )
Renamed LayoutResult to MeasureResult. ( Id8c68 )
Added LayoutModifier2, a new API for defining layout modifiers; deprecated LayoutModifier ( If32ac )
Replaced Modifier plus operator with factory extension functions ( I225e4 )
Added translationX/Y properties to support offseting the display list of drawing commands for a given Layer. This is useful to move content in response to animations or touch events. ( I8641c )
Added pivotX, pivotY parameters to Layer APIs to support rotation and scaling around a particular point on a layer ( Icf7c3 )
Add OnPositionedModifier and OnChildPositionedModifier to replace OnPositioned and OnChildPositioned composable functions. ( I2ec8f )
Added LayerModifier, a modifier that allows adding a RenderNode for a Layout. It allows setting clipping, opacity, rotation, scaling, and shadows. This will replace RepaintBoundary. ( I7100d , b/150774014 )
Made the layout direction be propagated from parent layout node to children. Added layout direction modifier. ( I3d955 )
Stack component supports right-to-left directionality ( Ic9e00 )
Initial support for Rtl in Compose layout ( Ia5519 )
Density and DensityScope were merged into one interface. Instead of ambientDensity() you can now use DensityAmbient.current. Instead of withDensity(density) just with(density) ( I11cb1 )
Changed LayoutCoordinates to make providedAlignmentLines a Set instead of a Map and have LayoutCoordinates implement the get() operator instead for retrieving a value. This makes it easier for modifiers to modify one or more value of the set without creating a new collection for each modifier. ( I0245a )
LayoutCoordinates no longer has a position property. The position property does not make sense when considering LayoutModifiers, rotation, or scaling. Instead, developers should use parentCoordinates and childToLocal() to calculate the transform from one LayoutCoordinate to another.
LayoutCoordinates uses IntPxSize for the size property instead of PxSize. Layouts use integer pixel sizes for layouts, so all layout sizes should use integers and not floating point values. ( I9367b )
Improvements to the API surface of Constraints ( I0fd15 )
Created CanvasScope API that wraps a Canvas object to expose a stateless, declarative drawing API surface. Transformations are contained within their own receiver scope and sizing information is also scoped to corresponding inset bounds. It does not require a consumer to maintain its own Paint state object for configuring drawing operations.
- Added CanvasScopeSample as well as updated the demo app to include a declarative graphics demo ( Ifd86d )
Removed unused MaskFilter API as it has limited usage and is not optimized for hardware acceleration in most use cases ( I54f76 )
RectangleShape moved from androidx.ui.foundation.shape.* to androidx.ui.graphics.* ( Ia74d5 , b/154507984 )
Replaced all nullable Color uses in API with non-nullable and use Color.Unset instead of null ( Iabaa7 )
Introduce additional optional rect parameter to ImagePainter to support drawing a subsection of underlying ImageAsset ( I0ea9e )
Added Unset Color to represent an unset value without boxing Colors. ( If901a )
Added Canvas.rotate and Canvas.scale extension methods to consume optional pivot coordinates for transformations. These default to the top left corner of the current canvas translation.
Also moved Canvas.rotateRad to be an extension method for consistency ( Ibaca6 )
Created PixelMap API to support querying pixel information from an ImageAsset. ( I69ad6 )
Renamed toFrameworkRect/toFrameworkRectF to toAndroidRect/toAndroidRectF to match naming convention for object conversions between compose and the Android framework APIs they are built on top of. Also updated docs on these APIs ( I86337 )
Added VectorPainter API to replace existing subcomposition API for vector graphics. Result of subcomposition is a VectorPainter object instead of a DrawModifier. Deprecated previous DrawVector composables in favor of VectorPainter.
Renamed Image(Painter) API to PaintBox(Painter) Created Vector composable that behaves like the Image composable except with a VectorAsset instead of an ImageAsset ( I9af9a , b/149030271 )
Renamed Image to ImageAsset to better differentiate the difference between the Image data and the upcoming Image composable used to participate in layout and draw content. _Body:Created extension method on android.graphics.Bitmap, Bitmap.asImageAsset(), to create an instance of an ImageAsset useful for combining traditional Android application development with the compose framework ( Id5bbd )
Added TextDirection.Content ( I48f36 )
Added TextDecoration.plus operator ( I0ad1a )
Force
is removed from TextDirectionAlgorithm enum values ( Icc944 )TextDirectionAlgorithm is renamed as TextDirection ( I75ce8 )
Implements LongPressAndDrag for TextField Selection. ( I17919 )
Added AnnotatedString.getStringAnnotations that returns all annotations within the range. ( I1fa00 )
Changed the package name for Locale and LocaleList from androidx.ui.text to androidx.ui.intl ( I8132c )
TextField's cursor has a blinking animation ( Id10a7 )
API change: AnnotatedString(builder: Builder) is renamed to annotatedString(builder: Builder). ( Ia6377 )
API change: AnnotatedString.Item is renamed to AnnotatedString.Range. ( I2d44d )
Rename AnnotatedString.Builder.addAnnotationString to addStringAnnotation. ( I5059e )
Now it is possible to hide/show software keyboard by using SoftwareKeyboardController which is delivered by onTextInputStarted callback ( I8dc44 , b/151860051 )
Added plus operator for (Text/Paragraph/Span)Style which delegates to merge() function. ( Ia1add )
FontWeight.lerp does not snap anymore. It is still a data class. ( I521c2 )
FontWeight constructor is now public, it is not data class anymore. ( Id6b1f )
Add getLineStart, getLineEnd, getEllipsisOffset and getEllipsisCount to TextLayoutResult ( Ibc801 )
ui-text module is renamed as ui-text-core ( I57dec )
Removed unused Size class as there is a duplicate Size class in the ui-geometry module that is being consumed. ( I1b602 )
Added AdapterList, a scrolling list component that only composes and lays out the visible items. Currently known issues include that it is vertical-only and does not fully handle all cases of changes to its children. ( Ib351b )
Add paddings, border, shape and background param to Box ( I05027 , b/148147281 )
Исправления ошибок
- onFocusChange callback in text fields renamed to onFocusChanged ( Ida4a1 )
- VerticalScroller and HoriziontalScroller have been deprecated. Use ScrollableColumn and ScrollableRow for build-in experience with Column/Row behaviour and parameters, or Modifier.verticalScroll and Modifier.horizontalScroll on your own element. Similarly, ScrollerPosition has been deprecated in favor of ScrollState' ( I400ce , b/157225838 , b/149460415 , b/154105299 )
-
runOnIdleCompose
renamed torunOnIdle
( I83607 ) - Several testing APIs were renamed to be more intuitive. All findXYZ APIs were renamed to onNodeXYZ. All doXYZ APIs were renamed to performXYZ. ( I7f164 )
- Compose UI can now be composed inside ViewGroups without requiring a new composition. See ViewInteropDemo for an example. ( I9ab0b , b/160455080 )
- Added sortWith and removeRange to MutableVector ( Icccf7 )
- Implement Drag Selection Handles to change selection for TextField. ( I27032 )
- Removed Shader inline class that wrapped the NativeShader expect class Renamed NativeShader to Shader. The wrapped Shader inline class did not add anything valuable to the API surface and was an inline class, so use the NativeShader class directly. ( I25e4d )
Refactored PainterModifier to no longer provide scaling based on the given constraints and ContentScale parameter. Implementations of Painter are to scale their drawing content themselves based on the given size of the DrawScope they are drawing into.
Fixed issue where VectorPainter's cache bitmap was sized to its default size instead of the given size to draw into.
Updated ImagePainter to scale its content instead of relying on PainterModifier to do so on its behalf. ( I6ba90 )
add top-level withFrameNanos function for animation timing ( Ie34c5 )
@Untracked annotation has been deprecated. Replace with @ComposableContract(tracked=false) ( Id211e )
androidx.ui.foundation.TextFieldValue and androidx.ui.input.EditorValue is deprecated. TextField, FilledTextField and CoreTextField composables that uses that type is also deprecated. Please use androidx.ui.input.TextFieldValue instead ( I4066d , b/155211005 )
Fixed issue where pointer input dispatch would cause a crash if PointerInputFilters were removed via subcomposition during disptach. Теперь это исправлено. ( I1f48b , b/157998762 )
Fixed issue where pointer input dispatch would cause a crash if PointerInputFilters were removed via subcomposition during disptach. Теперь это исправлено. ( Iab398 , b/157998762 )
Refactored Radius class to be an inline class. Removed companion creation methods in favor of function constructor with default parameter to have the radius along the y-axis match that of the mandatory x-axis radius parameter.
Updated DrawScope.drawRoundRect to consume a single Radius parameter instead of 2 separate float values for the radius along the x and y axis ( I46d1b )
The Recompose composable is no longer a useful abstraction. Most recomposition should happen as a result of MutableState assignments. For anything beyond that, it is recommended that you use the
invalidate
function to trigger a recomposition of the current scope. ( Ifc992 )Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( Iede0b )
Changes the code generation strategy of Compose's compiler. Prior to the change, the compose compiler would transform calls to composable functions. With this change, we now transform the body of a composable function and leave the callsite unaltered (mostly).
This means that most of the logic communicating with the compose runtime happens at the start of the function body, instead of at the callsite.
This should be a source-compatible change for all usage of compose. Most users of compose should not have to update any code as a result of this change.
In order to support this work, the JVM signature of all composable functions has changed. A Composable function accepting a single parameter is transformed into a function accepting 3 parameters, the additional parameters are the Composer, a 'key' integer. a bitmask integer used to propagate metadata through calls.
Compose now also transforms default arguments to a composable function. It does this without introducing an additional synthetic default overload of the function itself, so this change will result in fewer functions being defined.
Known intentional behavioral changes resulting from this:
- Some calls will skip where they wouldn't have previously
- Composable expressions in default argument expressions are now correctly subscribed to and handled
This work included some optimizations: 1. The result of comparisons of parameters are propagated through the call graph to other composable functions. This will result in fewer comparisons at runtime, reduces the slot table size, as well as more skipping of composable functions that were previously not skipped 2. Paremeters which are determined to be “static” at compile time are no longer compared or stored in the время выполнения. This reduces the number of comparisons and reduces slot table size. 3. Control flow structure of the body of functions is used to minimize the number of groups that are generated. This reduces slot table size and results in less work for the runtime 4. Unused dispatch and receiver parameters to functions are not included in determining skippability of the function if they are not used inside of the body of the function.
Most breaking changes were for APIs that the compiler targets directly, and typical use of compose will not be affected: 1. Composer::startExpr was removed 2. Composer::endExpr was removed 3. Composer::call was deprecated 4. The non-varargs overloads of
key
have been removed. Use thevararg
version going forward. 5. The Pivotal annotation was deprecated. Usekey
as a replacement. 6. ScopeUpdateScope::updateScope was changed to expect a Function3 instead of Function1 7. restartableFunction and restartableFunctionN were updated to include additional compile time parameters ( I60756 , b/143464846 )Removed deprecated LayoutAlign modifiers. ( I10877 )
Removed RepaintBoundary in favor of DrawLayerModifier ( I00aa4 )
Button, FloatingActionButton and Clickable now have a separate
enabled
param. Some of the params on Button were renamed or reordered. ( I54b5a )Replaced ButtonStyle with distinct functions and removed text (string) overload. See updated samples for usage information. ( If63ab , b/146478620 , b/146482131 )
Breaking changes to the ambients API. See log and
Ambient<T>
documentation for details ( I4c7ee , b/143769776 )Changed the behavior of default TextDirection to be determined by LayoutDirection. ie If LayoutDirection is RTL, default TextDirection will be RTL. Previously it was TextDirection.ContentOrLtr/Rtl ( I4e803 )
Bug fix: When font weight and font style are nested on an AnnotatedString, text is not rendered correctly. ( I77a9d )
Adds commonly used parameters to Text(). If you are currently creating a local text style to pass a small number of these parameters, such as Text(style = TextStyle(textAlign = TextAlign.Center)), you can now just provide the parameters directly: Text(textAlign = TextAlign.Center) ( I82768 )
ui-android-text module is renamed as ui-text-android ( I68cbe )
Создать интерфейс
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
( See the API reference docs for all compose packages )
Последнее обновление | Стабильный выпуск | Release Candidate | Бета-версия | Alpha Release |
---|---|---|---|---|
18 сентября 2024 г. | 1.7.2 | - | - | 1.8.0-альфа02 |
Структура
Compose is combination of 7 Maven Group Ids within androidx
. Each Group contains a targeted subset of functionality, each with its own set of release notes.
This table explains the groups and links to each set of release notes.
Группа | Описание |
---|---|
compose.animation | Build animations in their Jetpack Compose applications to enrich the user experience. |
compose.compiler | Transform @Composable functions and enable optimizations with a Kotlin compiler plugin. |
compose.foundation | Write Jetpack Compose applications with ready to use building blocks and extend foundation to build your own design system pieces. |
compose.material | Build Jetpack Compose UIs with ready to use Material Design Components. This is the higher level entry point of Compose, designed to provide components that match those described at www.material.io. |
compose.material3 | Build Jetpack Compose UIs with Material Design 3 Components, the next evolution of Material Design. Material 3 includes updated theming and components and Material You personalization features like dynamic color, and is designed to be cohesive with the new Android 12 visual style and system UI. |
compose.runtime | Fundamental building blocks of Compose's programming model and state management, and core runtime for the Compose Compiler Plugin to target. |
Compose.ui | Fundamental components of compose UI needed to interact with the device, including layout, drawing, and input. |
Declaring dependencies
To add a dependency on Compose, you must add the Google Maven repository to your project. Read Google's Maven repository for more information.
Add the dependencies for the artifacts you need in the build.gradle
file for your app or module:
классный
dependencies { implementation "androidx.compose.ui:ui:1.7.2" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Котлин
dependencies { implementation("androidx.compose.ui:ui:1.7.2") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
For more information about dependencies, see Add build dependencies .
Обратная связь
Your feedback helps make Jetpack better. Let us know if you discover new issues or have ideas for improving this library. Please take a look at the existing issues in this library before you create a new one. You can add your vote to an existing issue by clicking the star button.
See the Issue Tracker documentation for more information.
Версия 1.8
Версия 1.8.0-альфа02
18 сентября 2024 г.
Выпущен androidx.compose.ui:ui-*:1.8.0-alpha02
. Версия 1.8.0-alpha02 содержит эти коммиты .
Изменения API
-
TextOverflow.StartEllipsis
иTextOverflow.MiddleEllipsis
теперь доступны, что позволяет размещать многоточие в начале или середине строки однострочного текста. ( I38913 , б / 185418980 )
Исправления ошибок
- Исправление Далога
dismissOnClickoutside
( 39a3d , b/364508685 ) - Не обрезать тени содержимого диалога ( e8e2f , b/363027803 )
- Исправление ошибочного поведения при перемещении фокуса поиска между созданием и представлением ( 58377 , b/350534714 ).
External Contribution
-
Map
AlignmentLines
теперь принимает конкретные типыVerticalAlignmentLine
илиHorizontalAlignmentLine
. ( I02912 ) - Новый общий метод
ByteArray.decodeToImageBitmap(): ImageBitmap
. ( I83c21 )
Версия 1.8.0-альфа01
4 сентября 2024 г.
Выпущен androidx.compose.ui:ui-*:1.8.0-alpha01
. Версия 1.8.0-alpha01 содержит эти коммиты .
Version 1.7
Версия 1.7.2
18 сентября 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.2
. Версия 1.7.2 содержит эти коммиты .
Исправления ошибок
- Повышена производительность информации об узле доступности и событий семантики за счет удаления подробной трассировки. ( I89156 , б / 362530618 )
-
ComposeView
больше не будет аварийно завершать работу при передаче исключительно большого размера измерения ( da5db , b/347036173 ). - Исправлена проблема с программой чтения с экрана специальных возможностей, из-за которой объявления
LiveRegion
на кнопках не отображались. ( ф66фа7 , б/348590026 )
Версия 1.7.1
10 сентября 2024 г.
- Никаких изменений в артефактах Android. Артефакты
-desktop
были удалены и добавлены артефакты-jvmStubs
и-linuxx64Stubs
. Ни одна из этих целей не предназначена для использования, они являются заполнителями, помогающими Jetbrains Compose.
Версия 1.7.0
4 сентября 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0
.
Важные изменения с версии 1.6.0
Важные изменения в версии 1.7.0 описаны в этом блоге .
Версия 1.7.0-rc01
21 августа 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-rc01
. Версия 1.7.0-rc01 содержит эти коммиты .
Заметные изменения
- Модуль ui:ui теперь требует, чтобы минимальная версия Foundation:found была не ниже 1.7.0-rc01 или новее. Это необходимо для устранения несовместимости поведения между пользовательским интерфейсом и основой в отношении изменений
NestedScrollSource
, которые произошли в начале версии 1.7.0-alpha01.
Версия 1.7.0-beta07
7 августа 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-beta07
. Версия 1.7.0-beta07 содержит эти коммиты .
Исправления ошибок
- Функции
SemanticsNodeInteraction
связанные с вводом текста,performTextReplacement
,performTextInput
иperformTextClearance
теперь будут выдавать ошибки утверждения, когда они вызываются дляTextFields
только для чтения. ( I4ae8f )
Версия 1.7.0-beta06
24 июля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-beta06
. Версия 1.7.0-beta06 содержит эти коммиты .
Версия 1.7.0-бета05
10 июля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-beta05
. Версия 1.7.0-beta05 содержит эти коммиты .
Исправления ошибок
- Исправлена ошибка, из-за которой при смене программной клавиатуры
TextField
не принимал вводимые данные с новой клавиатуры до тех пор, пока фокус не был потерян и не восстановлен. - Исправлена проблема, из-за которой попытки сохранить содержимое слоя приводили к непредвиденным побочным эффектам при рендеринге с использованием содержимого
SurfaceView
.
Версия 1.7.0-beta04
26 июня 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-beta04
. Версия 1.7.0-beta04 содержит эти коммиты .
Исправления ошибок
- Избегайте сбоев при измерении очень больших текстовых строк (например, 10 тыс. символов) ( 8157ab ).
- Отключите поддержку программного рендеринга для API
GraphicsLayer
. ( 35ддд8 ) - Исправлен сбой в логике сохранения слоев. ( 70б13е )
- Оптимизация повторного использования объектов слоя была отменена, поскольку это вызывало проблемы с рендерингом. ( 70б13е )
Версия 1.7.0-бета03
12 июня 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-beta03
. Версия 1.7.0-beta03 содержит эти коммиты .
Версия 1.7.0-бета02
29 мая 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-beta02
. Версия 1.7.0-beta02 содержит эти коммиты .
Изменения API
-
SemanticsProperties.Editable
переименован вIsEditable
и замененSemanticsPropertyReceiver.editable
на значениеisEditable
. Свойство теперь является логическим и всегда указывается в текстовых полях. ( I8acd8 ) - Переименуйте параметр теста доступности. ( I3d440 )
- Обновлен API для стилизации ссылок:
TextLinkStyles
теперь является частью конструктораLinkAnnotation
и методаAnnotatedString.fromHtml
( I90b2b ). Также удаленыTextDefaults
из материала ( I5477b ).
Исправления ошибок
-
LayoutCoordinates.introducesFrameOfReference
переименован вLayoutCoordinates.introducesMotionFrameOfReference
чтобы лучше отражать его назначение. Связанная функция переименована для расчета координат на основе этого флага. ( I3a330 )
Версия 1.7.0-бета01
14 мая 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-beta01
. Версия 1.7.0-beta01 содержит эти коммиты .
Изменения API
-
performCustomAccessibilityActionLabelled
переименована вperformCustomAccessibilityActionWithLabel
иperformCustomAccessibilityActionWhere
вperformCustomAccessibilityActionWithLabelMatching
. ( I5387f ) -
AnnotatedString.hasEqualsAnnotations
теперь имеетhasEqualAnnotations
( I685c0 ). - Обновлен API для получения тематических ссылок Material в тексте. В частности, из
TextDefaults
удалены методы для создания тематическихLinkAnnotations
и анализа HTML с тематическими ссылками. Вместо этого добавлен классTextLinkStyles
, который позволяет стилизовать ссылки в качестве параметра составного текста. ( I31b93 )
Исправления ошибок
- Исправляет дополнительные случаи использования при динамическом добавлении модификаторов ввода указателя во время событий 63e1504.
Версия 1.7.0-альфа08
1 мая 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-alpha08
. Версия 1.7.0-alpha08 содержит эти коммиты .
Изменения API
- Добавляет поддержку изменяемых реализаций фигур.
Shape#createOutline
теперь наблюдается внутри графических слоев, поэтому чтение значений состояния внутри приведет к недействительности при изменении состояния, что позволяет создавать более производительную анимацию фигур. ( Id1629 , б/326070216 ) - Переименован
isPositionedByParentWithDirectManipulation
, чтобыintroducesFrameOfReference
. Обратите внимание, что теперь это имеет обратный эффект: по умолчанию большинствоLayoutCoordinates
вводят систему отсчета, и только при прямом манипулировании свойство будет иметь значение false. Чтобы запросить позицию только тех, которые вводят систему отсчета, используйтеpositionInLocalFrameOfReference(...)
. ИлиpositionInLocalLookaheadFrameOfReference
изLookaheadScope
. ( Ifc5f7 ) - API-интерфейсы
LookaheadScope
стали стабильными ( I21507 ). - Измените лямбду действия для
getScrollViewportLength
в соответствии с отзывами совета API. ( Ibc74a ) - Обновлены API-интерфейсы структуры
GraphicsLayer
для использования параметров с плавающей запятой вместо int. Удалены дозорные значенияUnsetOffset/UnsetSize IntSize
в пользу уже существующих констант Unspecified во встроенных классах Offset и Size на основе плавающей точки ( I2fb03 , b/333863462 ). - При вводе ввода мыши во время тестов
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
,MouseInjectionScope.longClick()
теперь принимают параметрbutton: MouseButton
чтобы сделать их более универсально применимыми. Значением по умолчанию для всех методов являетсяMouseButton.Primary
. ( I31a23 , б / 190493367 , б / 261439695 ) - Переименован
onClicked
вonClick
внутриLinkInteractionListener
. ( Iaa35c ) - Переименуйте
TextInclusionStrategy.isInside
вisIncluded
. Сделайте тип возвращаемого значенияParagraph/MultiParagraph#getRangeForRect()
не допускающим значения NULL. ( I51f26 )
Исправления ошибок
- Исправлен длинный снимок экрана для прокручиваемых контейнеров с
reverseScrolling=true
. ( I7c59c )
External Contribution
- Добавлена поддержка предварительной выборки элементов во вложенных
LazyLists
(например,LazyColumn
который отображает вложенныеLazyRows
). Ожидается, что это изменение уменьшит выпадение кадров во время прокрутки для этихLazyLists
. По умолчанию реализация выполняет предварительную выборку первых двух вложенных элементов, однако этим поведением можно управлять с помощью новых APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
иLazyListPrefetchStrategy#onNestedPrefetch
. ( I51952 )
Версия 1.7.0-альфа07
17 апреля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-alpha07
. Версия 1.7.0-alpha07 содержит эти коммиты .
Изменения API
-
ClickableText
помечен как устаревший. Чтобы добавить ссылки в текст, создайтеAnnotatedString
сLinkAnnotation
соответствующим вашей ссылке, и передайте этуAnnotatedString
в составной элемент Text. ( I34d4b , б/323346994 ) - Представьте
ViewConfiguration.HandwritingGestureLineMargin
для жестов рукописного ввода. Поддержка жестаJoinOrSplit
дляBasicTextField
( Ie6e13 , b/325660505 ) -
FocusProperties.enter
иFocusProperties.exit
больше не являются экспериментальными.FocusDirection.Enter
иFocusDirection.Exit
больше не являются экспериментальными.FocusRequester.Cancel
больше не является экспериментальным ( I461a1 , b/261564106 ). - При запросе координат макета теперь вы можете использовать аргумент
excludeDirectManipulationOffset
, чтобы исключить смещение, установленное родительскими макетами, которые разместили своих дочерних элементов с помощьюPlaceable.PlacementScope.withDirectManipulationPlacement
. Аналогично, макет, который часто меняет положение своих дочерних элементов, теперь может размещать их с помощьюwithDirectManipulationPlacement
(например, Scroll, реализованного по умолчанию). Это помогает анимации, основанной наapproachLayout
стать более интуитивно понятными, поскольку теперь у вас есть возможность различать, какое смещение нужно анимировать, а что применять непосредственно при принятии решения о анимации их подхода. ( I60ec7 ) - Флаг функции для длинных снимков экрана был удален. ( I28648 , б/329128246 )
-
LazyColumn
теперь правильно отображает прикрепленные заголовки на длинных скриншотах. ( I8d239 , б/329296635 ) - Источники
NestedScroll
Drag и Fling заменяютсяUserInput
иSideEffect
чтобы учесть расширенное определение этих источников, которые теперь включают анимацию (Side Effect) и колесо мыши и клавиатуру (UserInput
). ( I40579 ) -
ApproachLayoutModifierNode
иModifier.approachLayout
теперь стабильны, а новыеisMeasurementApproachInProgress()
иisPlacementApproachInProgress()
заменяют старыеisMeasurementApproachComplete()
иisPlacementApproachComplete()
соответственно. - Удален устаревший модификатор
intermediateLayout
. ( I3e91c ) - Переименуйте
GraphicsLayer#buildLayer
для записи, чтобы отразить методы Begin/EndRecording API, поддерживаемых Displaylist, таких какRenderNode
и Picture. - Обновлен
rememberGraphicsLayer
для использованияrememberObserver
. ( I312c1 , б / 288494724 , б / 330758155 ) -
UrlAnnotation
устарел, используйте вместо негоLinkAnnotation.Url
. Если вы используете тему Material, используйте объектTextDefaults
для создания аннотации с примененной к ней темой Material ( I8d180 , b/323346545 ). - Текстовые ссылки получили опцию стиля нажатого состояния в дополнение к обычному стилю, наведению курсора и фокусу ( I5f864 , b/139312671 ).
-
String.parseAsHtml
переименован вAnnotatedString.Companion.fromHtml
. ( I43dcd ) - В метод
parseAsHtml
добавлены аргументы стиля (linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) и прослушиватель взаимодействия ссылок. При анализе строки с HTML-тегом с помощью тегов<a>
метод создаетLinkAnnotation.Url
для каждого такого тега и передает объекты стиля и прослушиватель взаимодействия ссылок в каждую аннотацию. ( I7c977 ) -
LinkAnnotation
теперь принимает аргументы стиля на основе состояния иLinkInteractionListener
. Добавьте эту аннотацию вAnnotatedString
чтобы получить гиперссылку. ПередаваяfocusedState
и/илиhoveredState
вы можете определить визуальнуюconfiguration
ссылок, когда они находятся в фокусе и/или наведены. ( I81ce4 , б/139312671 ) -
ImeOptions.hintLocales
больше не имеет значения NULL. Если вы хотите передать пустой список локалей, используйтеLocaleList.Empty
. ( Ic5bc4 )
Исправления ошибок
- Грамотно обрабатывает неправильные/поврежденные исторические данные входных событий (игнорирует неправильные данные смещения).
- Исправляет непредвиденные события указателя, когда модификатор ввода указателя добавляется динамически перед другим модификатором ввода указателя во время активного потока событий ввода указателя (например, между вводом при наведении и выходом при наведении [мышь/стилус]).
Версия 1.7.0-альфа06
3 апреля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-alpha06
. Версия 1.7.0-alpha06 содержит эти коммиты .
New Features
- Добавлен метод
parseAsHtml
для стилизованных строк: он позволяет конвертировать строку, помеченную HTML-тегами, вAnnotatedString
. Обратите внимание, что не все теги поддерживаются, например, вы пока не сможете отображать маркированные списки. ( I84d3d , I30626 , б/139326648 ) - Реализована экспериментальная поддержка длинных снимков экрана в контейнерах прокрутки Compose с использованием официального API Android (
ScrollCaptureCallback
). Эта функция является экспериментальной и в настоящее время может обрабатывать не все случаи правильно. По этой причине в настоящее время он отключен по умолчанию. Чтобы принять участие, установите для флагаComposeFeatureFlag_LongScreenshotsEnabled
значение true. ( I2b055 , б/329296471 )
Изменения API
-
fun ClipEntry.getMetadata()
заменено наval ClipEntry.clipMetadata
. ( I50155 ) - Удалены функции
ClipboardManager.getClipMetadata
иClipboardManager.hasClip
. ИспользуйтеclipEntry.getMetadata()
для чтения метаданных текущей записи клипа. Также проверьте результатClipboardManager.getClip
, если он равен нулю или нет, чтобы понять, есть ли в буфере обмена текущий клип. ( I50498 ) - Теперь вы можете передавать объекты
GraphicsLayer
в функцииplaceable.placeWithLayer()
( I1b22f ). -
ClipboardManager.setClip
теперь принимает значение null, чтобы иметь возможность очистить буфер обмена. ( I7d2e9 ) - Добавлены идентификаторы ресурсов для помощи в сокрытии представлений, используемых в качестве деталей реализации в инструментах сборки ( I99531 ).
- Добавлен метод приостановки
GraphicsLayer#toImageBitmap
для поддержки рендеринга содержимого растрового изображения вGraphicsLayer
. Это операция рендеринга с аппаратным ускорением на уровне API 22+ (включительно), которая поддерживает более 99% всех устройств Android. На уровне Android API 21 это возвращается к программному рендерингу. ( I9e114 ) - Вспомогательный метод для преобразования Android
RectF
вComposeRect
( I39925 , b/325660505 ) - Все параметры
KeyboardOptions
теперь по умолчанию имеют неопределенное значение. Добавлен методKeyboardOptions.merge
. -
KeyboardOptions.autoCorrect
переименован вautoCorrectEnabled
и сделал его допускающим значение NULL, где значение NULL означает, что значение не было указано. ( Ia8ba0 , б/295951492 ) - Вариант
BasicTextField(state)
иBasicSecureTextField
теперь используютKeyboardActionHandler
вместоKeyboardActions
для обработки действий, выполняемых программной клавиатурой. ( I58dda )
Версия 1.7.0-альфа05
20 марта 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-alpha05
. Версия 1.7.0-alpha05 содержит эти коммиты .
New Features
- Внедрите новый API
GraphicsLayer
для записи команд рисования в список отображения, а также дополнительных свойств, влияющих на отрисовку списка отображения. Это обеспечивает границу изоляции, позволяющую разделить сложную сцену на более мелкие части, которые можно обновлять индивидуально друг от друга, не пересоздавая всю сцену. Преобразования, выполненные вGraphicsLayer
можно выполнить без перезаписи списка отображения. В отличие отModifier.graphicsLayer
,GraphicsLayer
позволяет отображать составной контент в другом месте и полезен в случаях использования анимации, когда ожидается, что контент будет отображаться в разных сценах.
Изменения API
-
GraphicsLayer.draw(Canvas)
больше не является общедоступным API. Вместо этого используйте функцию расширенияDrawScope.drawLayer(GraphicsLayer)
для рисования слоя. ( I7a7c0 ) - Разделите
restrictedConstraints()
на два метода:fitPrioritizingWidth()
иfitPrioritizingHeight()
( I6d7fd ). - Представлена заглушка
HardwareCanvas
для использования Android L ( I1c3b5 , b/288494724 ). - Обновите структуру Compose, чтобы предоставить локальную композицию
GraphicsContext
, а также обновить реализации модификаторов Owner,DelegateableNode
иdrawWithCache
чтобы предоставить доступ кGraphicsContext
для ограниченного доступа, который будет автоматически очищать экземплярыGraphicsLayer
при удалении модификаторов. ( I64a2f , б / 288494724 ) - Представлен
InterceptPlatformTextInput
для помощи в написании низкоуровневых тестов, связанных с IME, и других низкоуровневых вариантов использования IME.PlatformTextInputTestOverride
устарел. ( I862ed , б/322680547 ) - Добавлена функция расширения
GraphicsLayer.setOutline(Outline)
. ( Ib81f4 ) - Представьте конструктор функции
GraphicsContext
для создания фабрики для создания экземпляровGraphicsLayer
( Ib98d6 , b/288494724 ). - Открытый API
GraphicsLayer
, обеспечивающий определенную разработчиком гибкость при захвате команд рисования, которые можно использовать для рисования в другом месте, а также применения различных визуальных эффектов к конечному результату. ( I80245 , б / 288494724 ) - Представьте
Paragraph#getRangeForRect
, который возвращает диапазон текста, охватываемый заданной областью прямоугольника. ( Iee516 , б/325660505 ) - Удалено экспериментальное переопределение
BasicText
с аргументомonLinkClicked
. В будущем появится замена API для поддержки гиперссылок. ( I107d5 )
Исправления ошибок
- Добавлено определение ожидаемого/фактического API
GraphicsLayer
для поддержки захвата и воспроизведения команд рисования с дополнительными визуальными эффектами и преобразованиями композиции. Представьте интерфейсGraphicsContext
для хранения графических зависимостей, включая создание экземпляровGraphicsLayer
и управление ими. ( I4a8d6 , б/288494724 ) - Исправлена проблема взаимодействия с одномерным поиском фокуса, из-за которой фокус застревал внутри
ComposeView
, встроенного среди других представлений. ( I08fd4 )
External Contribution
-
LocalLifecycleOwner
перешел от пользовательского интерфейса Compose кlifecycle-runtime-compose
, чтобы его вспомогательные API на основе Compose можно было использовать за пределами пользовательского интерфейса Compose. Спасибо Джейку Уортону за вклад. ( I6c41b , б/328263448 ) - Последовательно раскрывайте свойства смещения с плавающей запятой для всех подтипов выравнивания на основе смещения. ( I69f0f , б/328088992 )
Версия 1.7.0-альфа04
6 марта 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-alpha04
. Версия 1.7.0-alpha04 содержит эти коммиты .
Изменения API
- Поддержка функции рукописного ввода стилусом для BasicTextField2 на устройствах после Android U. ( I002e4 )
- В этом CL мы добавляем семантическое действие
GetScrollViewportLength
, чтобы мы могли передавать информацию о компонентах, прокручиваемых в композиции, в систему a11y. Этот CL также применяет использование указанного свойства в прокручиваемых списках Foundation. ( Ic5fa2 ) -
FocusRequester.createRefs
теперь стабилен ( I4d92c , b/261436820 ) - Введен
DelegatableNode.requireView()
позволяющий узлам-модификаторам получать текущееView
Android без чтения локальной композиции. ( I40768 ) - Новый API
Path.reverse()
для изменения направления пути ( I36348 ). - В
KeyboardOptions
добавленыhintLocales
, чтобы предоставитьTextFields
возможность указывать IME с определенными языковыми стандартами для установки предпочтительного языка. - Предоставьте свойство
platformLocale
изLocale
, которое возвращает базовый объект платформы, напримерjava.util.Locale
. ( I921c6 )
Версия 1.7.0-альфа03
21 февраля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-alpha03
. Версия 1.7.0-alpha03 содержит эти коммиты.
Изменения API
- Представляем
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 , б / 293577082 ) - Добавьте семантическое свойство
maxTextLength
, которое должно быть установлено в текстовых полях, которые фильтруют максимально допустимое количество символов. ( I24d9f , б / 170648072 ) - Обертка
Modifier.inspectable
устарела. Этот API создаст больше недействительных модификаторов, чем необходимо, поэтому его использование теперь не рекомендуется. Разработчикам рекомендуется реализовать методinspectableProperties()
вModifierNodeElement
если они хотят предоставить свойства модификатора инструментам. ( Ib3236 ) - Новый конструктор
PopupProperties
, который позволяет полностью контролировать флагиWindowManager.LayoutParams
. ( Ibb33e , b/312485503 ) - Представлен
DelegatableNode.requireLayoutCoordinates()
как способ получить текущиеLayoutCoordinates
Modifier.Node
без необходимости переопределятьonPlaced
и самостоятельно сохранять координаты в свойстве. ( Ia8657 ) - Представлен
DelegatableNode.currentLayoutCoordinates
как способ получить текущиеLayoutCoordinates
Modifier.Node
без необходимости переопределятьonPlaced
и самостоятельно сохранять координаты в свойстве. ( Иаэбаа ) -
BasicTextField2
и связанные API из пакетаandroidx.compose.foundation.text2
перемещены вandroidx.compose.foundation.text
. ( I9f635 ) - Добавлен новый API
ApproachLayoutModifierNode
для поддержки создания пользовательской логики подхода в явном узле модификатора. Также добавлен новый экспериментальный APIDeferredTargetAnimation
для анимаций, цель которых неизвестна при создании экземпляра. ( I60745 ) - Новые API-интерфейсы
Path
для запроса направления Path и извлечения контуров изPath
. ( I63d04 ) - Добавлены
PathHitTest
иPath.contains(Offset)
чтобы проверить, содержит лиPath
определенную точку. ( I3b218 ) -
TextLayoutResult
теперь предоставляет методgetLineBaseline(lineIndex)
. Это позволяет читать базовую линию произвольной строки текста в дополнение к существующим удобным свойствамfirstBaseline
иlastBaseline
. ( Ide4e8 , б/237428541 ) - Добавлен метод для сравнения только аннотаций двух
AnnotatedStrings
. ( I32659 )
Исправления ошибок
- Исправлена проблема обратной совместимости с
SemanticsPropertyReceiver.performImeAction
иSemanticsActions.PerformImeAction
. ( Ид0528 , б/322269946 )
Версия 1.7.0-альфа02
7 февраля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-alpha02
. Версия 1.7.0-alpha02 содержит эти коммиты.
Изменения API
- Исправлена проблема двоичной совместимости с
SemanticsPropertyReceiver.performImeAction
. ( I65865 , б/322269946 ) - Конструктор
PopupProperties
, принимающий параметрusePlatformDefaultWidth
больше не является экспериментальным. ( I8f8d2 ) - Добавлена перегрузка
ComposeTestRule.waitUntil
, которая принимает строковое описание условия для включения в сообщение о тайм-ауте. ( I9413e ) - Новый семантический API
unset()
для удаления свойств семантики, добавленных в ту же цепочку модификаторов. Новое семантическое свойствоisOpaque
. ( I8c583 , б / 317966058 , б / 246056649 ) - Удален
originalEventPosition
из метода копирования в общедоступном APIPointerInputChange
. ( I7бус )
Исправления ошибок
- Исправлена ошибка a11y, из-за которой при выборе можно было нажимать кнопки без вкладок и переключателей. ( I2181c )
-
VelocityTracker
теперь будет иметь исправление для добавления точек по умолчанию. Исправление по-прежнему можно отключить, установив дляVelocityTrackerAddPointsFix
значение false, если возникнут какие-либо проблемы. ( Ib3877 , б / 269487059 ) - Исправлена обратная двоичная несовместимость в
TextStyle
иParagraphStyle
. ( I179f0 , б/320819734 )
External Contribution
- Добавлен новый конструктор
DialogProperties
без параметров, специфичных для платформы. ( I45829 ) - Добавлен новый конструктор
PopupProperties
без параметров, специфичных для платформы. ( I9a038 )
Версия 1.7.0-альфа01
24 января 2024 г.
Выпущен androidx.compose.ui:ui-*:1.7.0-alpha01
. Версия 1.7.0-alpha01 содержит эти коммиты.
Изменения API
- Расширен
ClipboardManager
за счет добавленияClipEntry
иClipMetadata
для поддержки произвольного содержимого, например изображений. - Добавляет API
DeviceConfigurationOverride
вui-test
, позволяющий локально переопределять поведение тестируемого содержимого, например указывать доступный размер, локаль, направление макета, масштаб шрифта или тему.
Version 1.6
Версия 1.6.8
12 июня 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.8
. Версия 1.6.8 содержит эти коммиты .
Исправления ошибок
- Исправлены несоответствия в масштабировании шрифта, когда масштаб шрифта меньше минимального заданного в таблице. В этом случае мы теперь интерполируем между линейным масштабом 1x и наименьшей определенной таблицей, так что размер шрифта монотонно увеличивается по мере увеличения масштаба. ( Икбе3 )
Версия 1.6.7
1 мая 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.7
. Версия 1.6.7 содержит эти коммиты .
Версия 1.6.6
17 апреля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.6
. Версия 1.6.6 содержит эти коммиты .
Исправления ошибок
- Исправлен редкий сбой
BasicTextField
.
Версия 1.6.5
3 апреля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.5
. Версия 1.6.5 содержит эти коммиты .
Версия 1.6.4
20 марта 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.4
. Версия 1.6.4 содержит эти коммиты .
Версия 1.6.3
6 марта 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.3
. Версия 1.6.3 содержит эти коммиты .
Версия 1.6.2
21 февраля 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.2
. Версия 1.6.2 содержит эти коммиты.
Версия 1.6.1
7 февраля 2024 г. выпущен androidx.compose.ui:ui-*:1.6.1
. Версия 1.6.1 содержит эти коммиты.
Исправления ошибок
- Исправлена проблема обратной совместимости с
SemanticsPropertyReceiver.performImeAction
иSemanticsActions.PerformImeAction
. ( Ie0bb2 , б/322269946 ) - Макеты теперь выдают ошибку при измерении, если возвращается аномально большой размер. Ошибка такого типа обычно возникает, когда при измерении напрямую используются максимальные ограничения без проверки
Constraints.Infinity
. Проверка поможет разработчикам найти проблемы с макетом, имеющим неправильный размер, а не с макетом, который его содержит. ( I339a9 )
Версия 1.6.0
24 января 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.0
. Версия 1.6.0 содержит эти коммиты.
Версия 1.6.0-rc01
10 января 2024 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-rc01
. Версия 1.6.0-rc01 содержит эти коммиты.
Исправления ошибок
- Оптимизированная реализация векторной графики для повышения производительности за счет минимизации дополнительных рекомпозиций.
Версия 1.6.0-бета03
13 декабря 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-beta03
. Версия 1.6.0-beta03 содержит эти коммиты.
New Features
- Теперь возможно отсоединение
LayoutCoordinates
без отсоединения узла. Остерегайтесь этого в инспекторе компоновки ( If693 ).
Исправления ошибок
-
PlatformImeOptions
теперь представляет собой конкретный класс, а не интерфейс. ( Если40а4 ) - Исправлены дополнительные рекомпозиции в нисходящем направлении, вызванные тем, что
LocalSoftwareKeyboardController
иLocalTextInputService
предоставляли новые значения каждый раз, когда корень перекомпоновывался. ( I42190 , б/310510985 )
Версия 1.6.0-бета02
29 ноября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-beta02
. Версия 1.6.0-beta02 содержит эти коммиты.
Версия 1.6.0-бета01
15 ноября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-beta01
. Версия 1.6.0-beta01 содержит эти коммиты.
Изменения API
- Модификатор
DragAndDropTarget
теперь явно принимает принимающийDragAndDropTarget
и имеет лямбда-выражение для включения сеанса перетаскивания. Теперь дляDragAndDropModifierNode
есть две фабричные функции. Один для приема переводов и один для передачи данных ( I69481 ) - Updated
maximumFlingVelocity
to be represented as Float. Обновлена документация, чтобы более четко объяснить единствоmaximumFlingVelocity
. ( I8adc7 ) -
onDragAndDropStart
в фабрикеDragAndDropModifierNode
был переименован вacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
был добавлен в модификаторdragAndDropTarget
для принятия из сеанса перетаскивания. Эта лямбда возвращает жизнеспособныйDragAndDropTarget
, если заинтересован в сеансе перетаскивания. Другие лямбды для обработки событий перетаскивания были заменены на это. добавлена фабричная функцияDragAndDropTarget
для получения данных из сеансов перетаскивания ( Iebf3a ) Удален
DragAndDropInfo
как тип.DragAndDropModifierNode.drag
теперь принимает параметры дляtransferData
, размера оформления и оформления перетаскиванияDrawScope
лямбда.DragAndDropTarget
имеет методы для определенных событий перетаскивания, а не один абстрактный метод.onDragAndDropEvent
в заводской функции дляDragAndDropModifierNode
был переименован вonDragAndDropStart
чтобы лучше сообщить, что предоставленныйDragAndDropTarget
действителен только для данного сеанса перетаскивания.DragAndDropEventType
был удален ( I645b1 ).PlatformTextInputModifierNode.runTextInputSession
переименован вestablishTextInputSession
. ( I03cd0 )Улучшает имена API проходимых узлов, делая их более понятными. ( Я4474 )
Замените
OriginalText
наTextSubstitution
. ( Ифа5а8 )PlatformTextInputModifierNode.textInputSession
переименован вrunTextInputSession
. ( Ie9c6b )Дочерние элементы
SubcomposeLayout
(и макеты, подобныеLazyColumn
на его основе), которые сохраняются для повторного использования в будущем, считаются деактивированными. Для тестирования таких узлов был представлен новый тестовый APIassertIsDeactivated()
. Остальные тестовые API по умолчанию будут отфильтровывать деактивированные узлы. ( I2ef84 , б/187188981 )Удалены
FocusDirection.In
иFocusDirection.Out
вместо этого используйтеFocusDirection.Enter
иFocusDirection.Exit
( I2f660 ).API материала
SwipeToReveal
(для карт и чипов) теперь используют API на основе слотов (как рекомендовано Compose), а не экземпляры на основе классов данных для создания этих слотов. Это критическое изменение. Примеры использования нового API см. в демо-версии и образце кода. ( Ia8943 )Конструктор
FontStyle(int)
устарел, вместо него используйтеFontStyle.Normal
илиFontStyle.Italic
. ( I66610 )Интерфейс
FontScalable
переименован вFontScaling
( Ie804a ).
Исправления ошибок
-
SoftwareKeyboardController.show()
больше не будет отображать программную клавиатуру, если ни один текстовый редактор не находится в фокусе. ( I2165a , б/301477279 ) - Hardware key Up events for keys that haven't received a Down event in the same Compose View will now be ignored. ( Ib37b4 , b/305518328 )
- Добавьте поддержку средства визуализации для Sweep Gradient в
ArcLine
. ( I4d5bb ) - Реализуйте равенство и хеш-код для
PageSize.Fixed
. ( Ие3еде , б/300134276 ) - Исправлена проблема двоичной совместимости с изменением вставки окна ( Iee695 ).
- Удалите основной слой материала для чипа/кнопки Material3, поскольку без него микротесты показывают лучшую производительность. ( I55555 )
-
TestDispatcher
, переданный в качествеeffectContext
в тесты Compose, теперь будет использоваться для создания часов теста и кадров. ( Ia7178 )
Версия 1.6.0-альфа08
18 октября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-alpha08
. Версия 1.6.0-alpha08 содержит эти коммиты.
Изменения API
- В
Modifier.dragAndDrawSource
лямбдаonDrawDragShadow
переименована вdrawDragDecoration
, аDragAndDropInfo
параметр размера переименован вdragDecorationSize
. ( Id0e30 , б/303904810 ) - Введите
SemanticsNodeInteraction.isDisplayed()
иSemanticsNodeInteraction.isNotDisplayed()
, чтобы проверить, виден или нет соответствующий узел, не проверяя его. ( I2c196 , б/302100809 ) - Введено специальное значение
Unspecified
для полейTextAlign
,TextDirection
,Hyphens
иLineBreak
ParagraphTextStyle
для заменыnull
. Поскольку эти классы являются встроенными классами, заменяя значение nullable на Unspecified, мы избегаем упаковки примитивных типов. Конструкторы, геттеры и другие методы в стиляхTextStyle
и Paragraph были обновлены, чтобы принимать упомянутые параметры как ненулевые типы. ( I4197e , б / 299490814 ) - Добавьте перегрузку
GoogleFont
для чтенияGoogleFont
из XML. ( Если8f59 ) -
LoremIpsum
PreviewParameterProvider
сделал открытым классом. ( I41bf5 , б / 266918816 , б / 300116360 )
Исправления ошибок
-
FontFamilyResolver
теперь используетDispatchers.Main
для сопрограмм управления кэшем. ( Ie8dd9 ) -
AndroidViewBinding
теперь синхронно удаляет экземплярыFragment
, раздутые путем включенияFragmentContainerView
в ваш макет как часть егоonRelease
, используяcommitNow
(вместоcommit
которую он использовал ранее), тем самым устраняя проблемы с методом Live Edit с заменой композиции при изменениях. ( I58fbf )
Версия 1.6.0-альфа07
4 октября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-alpha07
. Версия 1.6.0-alpha07 содержит эти коммиты.
Изменения API
- Представлен
PlatformTextInputMethodTestOverride
для написания тестов для пользовательских текстовых редакторов. ( Id159b ) - Добавляет модификатор
dragAndDropSource
для запуска сеансов перетаскивания и модификаторdragAndDropTarget
для получения данных из сеансов перетаскивания. ( Ib7828 , б / 286038936 ) - Добавлены коллекции
ColorList
иColorSet
позволяющие избежать выделения. ( I744bd ) - Добавлен временный флаг
DisableNonLinearFontScalingInCompose
для отключения нелинейного масштабирования шрифта. УстановитеDisableNonLinearFontScalingInCompose = true
в своих тестах, если вам нужно время на их очистку. Этот флаг будет удален в Compose 1.6.0-beta01. ( Ic9486 )
Исправления ошибок
- Оптимизирован синтаксический анализ векторных изображений XML. ( Ибб015 )
Версия 1.6.0-альфа06
20 сентября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-alpha06
. Версия 1.6.0-alpha06 содержит эти коммиты.
Изменения API
- Дополнительная оптимизация значков материалов. ( I3e08d )
- Добавляет возможность перемещаться по дереву модификаторов вверх/вниз для поиска похожих узлов. ( I2d234 )
- Добавлен обратный вызов
onRestoreFailed()
к модификаторуfocusRestorer()
( Ie1d43 ). - Добавлены аннотации androidx к различным графическим API для указания
ColorInt
,FloatRange
,IntRange
,Size
и т. д. ( Id65c8 , б/290950582 ) - Добавьте
showSystemUi=true
в определениеPreviewScreenSizes
( Ib61d3 ).
Изменения поведения
- Compose теперь использует нелинейное масштабирование шрифтов для лучшей читаемости и доступности. Если в системных настройках масштаб шрифта > 100%, мелкий текст будет увеличиваться в размерах как обычно, а уже крупный текст увеличится лишь немного. Кроме того, высота строк, определенная в SP, будет автоматически корректироваться, чтобы оставаться пропорциональной предполагаемой высоте 100% масштаба. Дополнительные сведения см. в разделе «Рекомендации по масштабированию шрифтов» . ( I11518 )
Версия 1.6.0-альфа05
6 сентября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-alpha05
. Версия 1.6.0-alpha05 содержит эти коммиты.
Изменения API
- Включите захват контента в
AndroidComposeViewAccessibilityDelegateCompat
. ( Ib2969 ) - Скорость броска в компонентах View, таких как
ScrollView
иRecyclerView
ограниченаViewConfiguration.ScaledMaximumFlingVelocity
. Compose теперь содержит собственную версиюmaximumFlingVelocity
, которая теперь применяется кDraggable
. ( Ibf974 ) - Добавляет начальные каркасы для поддержки API-интерфейсов перетаскивания платформы. ( Если84ce )
- Добавьте
deviceId
вRotaryScrollEvent
( Iba3bf ) - Обновлен API устройств
ui-tooling
для включения новых устройств ( Ib25b4 ).
Версия 1.6.0-альфа04
23 августа 2023 г.
androidx.compose.ui:ui-*:1.6.0-alpha04
выпускается. Версия 1.6.0-alpha04 содержит эти коммиты.
Изменения API
- Добавлен метод деактивации
ReusableComposition
, удаляющий наблюдения, но сохраняющий узлы на месте. Деактивированную композицию можно активировать снова, вызвавsetContent
. ( Ib7f31 ) - Добавьте интерфейс
ReusableComposition
для управления жизненным циклом и повторного использования подкомпозиций. ( I812d1 , б/252846775 ) -
Modifier.focusGroup
повышен до стабильных API. ( I7ffa3 ) - Добавлены аннотации androidx к различным графическим API для указания
ColorInt
,FloatRange
,IntRange
,Size
и т. д. ( I70487 , б / 290950582 ) - Обновлен API
ColorFilter
теперь у него есть конкретные типы подклассов для улучшения возможности проверки параметров. ( I5fe29 ) - Внедрить библиотеку Wear-Tooling-Preview для списка допустимых устройств износа, которые можно использовать для предварительного просмотра пользовательского интерфейса ( Ib036e ).
- Создан интерфейс
FontScalable
для управления частью масштабирования шрифта интерфейса Density. ( I2cf3f )
Версия 1.6.0-альфа03
9 августа 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-alpha03
. Версия 1.6.0-alpha03 содержит эти коммиты.
Изменения API
- Новый тип перехода входа/выхода, который масштабирует содержимое в зависимости от размера анимационного контейнера во время анимации входа и выхода.
LookaheadScope
Составное развлечение и интерфейс теперь стабильны. ( Еслиb2ce ) - Добавлена поддержка настройки
privateImeOptions
( Idb772 ).
Исправления ошибок
-
PopupPositionProvider.calculatePosition
теперь будет автоматически обновлять положение всплывающего окна при изменении состояния, считанного в расчете. ( I676a1 , б/292257547 ) - Исправлены текстовые поля, отображающие клавиатуру и доступные для редактирования, если
readOnly
установлено значение true. Также исправлена ошибка, из-за которой клавиатура не отображалась, когдаreadOnly
менялось с true на false во время фокусировки. ( I34a19 , б / 246909589 ) - Расширенное применение глобальных утверждений при тестировании пользовательского интерфейса. ( I1f90d )
Версия 1.6.0-альфа02
26 июля 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-alpha02
. Версия 1.6.0-alpha02 содержит эти коммиты.
Изменения API
- Добавлен интерфейс локатора службы, который может быть реализован разработчиками композиции, который позволяет реализовать композицию, которая делегирует другому составу поиск службы делегата в исходной композиции. Это не следует называть Directy, и оно используется для создания экспериментальных API во время выполнения, которые можно найти в завернутых версиях композитора, например, в модуле пользовательского интерфейса. ( I296b9 )
- Полностью переработан API
PlatformTextInput*
. ( I6c93a , б/274661182 , б/267235947 , б/277380808 ) -
SoftwareKeyboardController
иLocalSoftwareKeyboardController
больше не являются экспериментальными.LocalSoftwareKeyboardController
теперь также является полноценнымCompositionLocal
. ( I4c364 ) -
LookaheadLayout
иLookaheadLayoutScope
устарели в нескольких выпусках и теперь удалены. Заменяющими API являютсяLookaheadScope
, которые могут работать с любым макетом. ( I12ac3 ) - Добавлен
SemanticsNodeInteraction.requestFocus
как более удобный и доступный способ запроса фокуса в тестах. ( Ie8722 ) - Добавьте экспериментальные API для регистрации глобальных утверждений для использования платформами тестирования в будущем. ( I12d77 )
Исправления ошибок
- Первый вызов обратного вызова
update
AndroidView
теперь будет отложен до тех пор, пока представление не будет присоединено, вместо того, чтобы запускаться при применении композиции, которая представляетAndroidView
. Это исправляет ошибку, из-за которой обратный вызовupdate
не становился недействительным, если считанное им состояние было немедленно изменено эффектом. ( Ие9438 , б/291094055 )
Версия 1.6.0-альфа01
21 июня 2023 г.
Выпущен androidx.compose.ui:ui-*:1.6.0-alpha01
. Версия 1.6.0-alpha01 содержит эти коммиты.
New Features
- Поддержка просмотра вперед в
LazyList
. Это позволяетLazyList
в проходе просмотра вперед обходить любую анимацию (например, анимацию размещения элементов,AnimatedVisibility
и т. д.) и вычислять размер и положение просмотра вперед для всех дочерних элементов. После просмотра вперед дочерние элементыLazyList
могут анимировать независимо от реальности, как видно на этапе просмотра вперед.
Изменение поведения: параметр includeFontPadding теперь по умолчанию имеет значение false в Compose.
includeFontPadding
теперь имеет значение false по умолчанию ( 21d806 ) в Compose.
includeFontPadding
— это устаревший атрибут, который определяет, включать ли дополнительные поля поверх первой и последней строк текста для размещения любых символов, которые могут выходить за пределы или под базовые линии текста.
Обновление этой версии Compose изменит способ отображения всех текстов в вашем пользовательском интерфейсе, удалив дополнительные поля поверх первой и последней строк каждого отображаемого текста.
В зависимости от ваших требований к пользовательскому интерфейсу и показателей шрифта, которые вы используете, изменения должны быть минимальными. Однако вы можете столкнуться с такими блокировщиками, как: - Неработающие скриншоты. При необходимости исправьте пользовательский интерфейс и восстановите золотые изображения. - Текст немного смещен. Удалите любые пользовательские отрицательные отступы или добавьте отступы, если необходимо.
Вы можете includeFontPadding
, используя PlatformTextStyle
для каждого текста:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Вы можете включить includeFontPadding
для всех ваших текстов, настроив стили материалов. Обратите внимание, что имена параметров будут различаться в зависимости от M2 и M3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Дополнительную информацию о Compose includeFontPadding
можно найти в документации для разработчиков и в этой записи блога .
Если у вас возникли проблемы/ошибки, связанные с этим изменением, сообщите об ошибке с помощью системы отслеживания проблем .
Изменения API
- Поддержка
InputConnection#requestCursorUpdates
( I0c69b ) - Добавлены
FocusRequester.saveFocusedChild
иFocusRequester.restoreFocusedChild
( Ic557e , b/272302679 , b/275157318 ). - Добавьте тип
ResourceResolutionException
для переноса генерируемых объектов при попытке загрузки растровых ресурсов с описанием пути к ресурсу, который не удалось загрузить. ( I19f44 , б / 230166331 , б / 278424788 ) - Оптимизированный доступ для производительности и распределения памяти. ( Иеде48 )
- Добавлены семантические свойства и действия для поддержки перевода текста. ( I4a6bc )
- Новое свойство в
IntrinsincMeasureScope
и его реализациях (например,MeasureScope
), позволяющее указать, является ли текущий проход меры просмотром вперед. ( I7a812 ) - Обновлен API
DrawScope
, позволяющий перенацелить рендеринг на другой холст с альтернативной плотностью/направлением макета и размером. - Обновлен
DrawContext
для поддержки настройки плотности и направления макета, а также для возможности настройки холста. ( Ie1f9b , б/225408150 ) - Добавлен
Paragraph#fillBoundingBoxes
для расчета ограничивающих рамок символов. ( Если30ee ) - Добавлен набор общих
MultiPreviews
( Ia5a27 ).
Исправления ошибок
- Добавлен интерфейс
FocusTargetModifierNode
, который можно использовать для создания собственногоFocusTarget
. ( I9790e ) - Параметры
fallback*
конструктораTextMeasurer
переименованы вdefault*
. ( I940a5 ) -
SemanticsPropertyReceiver.performImeAction
переименован вonImeAction
, аSemanticsActions.PerformImeAction
— вOnImeAction
. ( I8e841 ) - Добавляет колесо, чтобы отличать прокрутку мыши от перетаскивания при вложенной прокрутке (в частности, в
NestedScrollConnection
). ( Ie57e4 ) - Добавлен API
asComposePaint
для заменыtoComposePaint
, поскольку возвращаемый объект оборачивает исходныйandroid.graphics.Paint
( I22b4c ). - Устаревший
SemanticsProperties.imeAction
и замените его новым параметромSemanticsActions.performImeAction
. ( I4a587 ) - Добавлена поддержка выбора мышью. Сенсорный выбор будет расширяться по словам и уменьшаться по символам. ( Ic0c6c , б/180639271 )
- Методы
Paragraph
, которые раньше выдавалиAssertionError
для смещений за пределами границ, теперь выдают исключениеIllegalArgumentException
, как это делаетMultiParagraph
. ( I549d3 , б/243338896 )
Версия 1.5
Version 1.5.4
18 октября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.4
. Version 1.5.4 contains these commits.
Версия 1.5.3
4 октября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.3
. Version 1.5.3 contains these commits.
Исправления ошибок
- ( b/301209788 )
TextField
иногда неправильно применял предыдущие команды при фокусировке и вводе корейского ввода, что приводило к потере символов.
Version 1.5.2
27 сентября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.2
. Version 1.5.2 contains these commits.
Исправления ошибок
- Добавлен обходной путь для сбоев при доступе к API прокрутки специальных возможностей из фонового потока.
- Исправлено добавление неприсоединённых узлов в семантическое дерево.
Version 1.5.1
6 сентября 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.1
. Version 1.5.1 contains these commits.
Исправления ошибок
- Исправлены текстовые поля, отображающие клавиатуру и доступные для редактирования, если
readOnly
установлено значение true. Также исправлена ошибка, из-за которой клавиатура не отображалась, когдаreadOnly
менялось с true на false во время фокусировки. ( I34a19 , б / 246909589 )
Version 1.5.0
9 августа 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0
. Version 1.5.0 contains these commits.
Версия 1.5.0-rc01
26 июля 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0-rc01
. Версия 1.5.0-rc01 содержит эти коммиты.
Исправления ошибок
- Исправлен сбой, возникающий при использовании
SubcomposeLayout
внутриmovableContentOf()
.
Версия 1.5.0-бета03
28 июня 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0-beta03
. Версия 1.5.0-beta03 содержит эти коммиты.
Исправления ошибок
- Добавлен интерфейс FocusTargetModifierNode, который можно использовать для создания собственного FocusTarget. ( Еслиb1d6 )
- Исправлена проблема с составными элементами Dialog и Popup, из-за которой размер дочернего окна не изменялся должным образом при
usePlatformDefaultWidth=true
. ( I112ee )
Версия 1.5.0-бета02
7 июня 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0-beta02
. Версия 1.5.0-beta02 содержит эти коммиты.
Изменения API
- Добавлен
asComposePaint
API, позволяющий использовать экземплярandroid.graphics.Paint
для использования в Compose.
Исправления ошибок
- Добавлен API
asComposePaint
для заменыtoComposePaint
, поскольку возвращаемый объект оборачивает исходныйandroid.graphics.Paint
( I22b4c ).
Версия 1.5.0-бета01
24 мая 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0-beta01
. Версия 1.5.0-beta01 содержит эти коммиты.
Изменения API
- Удалены выделения при рекомпозиции, цветовой анимации и
AndroidComposeView
( Ib2bfa ). - Добавляет вспомогательную функцию
CacheDrawModifierNode()
позволяющую делегировать ( Icf8f9 ) - Представляем свойство
isLookingAhead
, доступное изMeasureScope
, для наблюдения за результатами просмотра вперед и при необходимости влияния на основной проход. ( Ibf4c3 ) - Новое семантическое свойство
traversalIndex
— число с плавающей запятой, используемое для изменения порядка узлов при обходеTalkBack
(более низкие значения идут раньше). ( I9a81b , б/186443263 ) - Переименование свойства семантики
isContainer
вisTraversalGroup
( I121f6 ). -
ColorProducer
теперь естьoperator fun invoke
вместоproduce
( I4a9a2 ). - Добавьте API преобразования
Path
, чтобы применять преобразования перемещения/масштабирования/вращения к объектам пути. ( I23434 , б / 233772232 ) - Метод
ColorProducer
называетсяproduce
. ( I78bde ) - Переименуйте
toFrameworkColorSpace
вtoAndroidColorSpace
( I4f547 ). - Переименуйте
ColorLambda
вColorProducer
. ( I73b1a ) - Представьте API для преобразования между типами цветового пространства Android и Compose. ( Ie7db4 , б/279979665 )
- В
BasicText
добавлен параметр цвета, позволяющий эффективно анимировать или устанавливать цвет текста. ( Ifffd88 , б / 246961787 ) -
TextRange.constrain
переименован вTextRange.coerceIn
. ( I31be2 ) - Добавлен оптимизированный
TextStyle.merge(...)
с полным списком параметров. ( Иад234 , б/246961787 ) - Стабилизированы многие текстовые API, включая
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
. ( I2f740 , б/261581564 , б/261581931 , б/261561245 ) -
PlatformTextStyle.includeFontPadding
не рекомендуется. Нашим первоначальным намерением было удалить это поле, однако отзывы показывают, что разработчикам нужна эта опция конфигурации. Поэтому удаление устаревших данных из поля ( I98e96 , b/277703184 ) - Добавлен общедоступный метод
TextRange.constrain
. ( I97912 ) -
UrlAnnotation
вAnnotatedString
теперь можно открыть через службы специальных возможностей, такие какTalkBack
. ( If4d82 , b/253292081 ) - Добавлено семантическое действие
InsertTextAtCursor
для текстовых полей. ( I11ed5 ) - Конструктор
LineHeightStyle.Alignment(topRatio)
повышен до стабильного API. ( I79c32 , б/261565383 ) -
TextMeasurer
и связанные с ним API больше не являются экспериментальными. ( I74647 , б / 261581753 ) - Добавлено семантическое действие
PerformImeAction
для вызова действия IME на узлах текстового редактора. ( Ic606f , б/269633506 ) - API
PlatformTextInput
больше не являются экспериментальными для Android. ( I668eb ) - имя параметра значения для
Enum.valueOf
изменено ( Ia9b89 ) - больше исключений из перечисления valueOf ( I818fe )
- Представлен новый низкоуровневый API
PlatformTextInputAdapter
для создания пользовательских реализаций ввода текста, которые напрямую взаимодействуют с API платформы. ( I58df4 ) - В методы
DrawScope.drawText
,Paragraph.paint
иMultiParagraph.paint
добавлен параметрBlendMode
для поддержки различных алгоритмов смешивания при рисовании текста на Canvas. ( I57508 ) - Переименуйте
Font.MaximumAsyncTimeout
вFont.MaximumAsyncTimeoutMillis
. Только переименовать. ( I07af5 ) - Обновлены значения DPI эталонных устройств
@Preview
( Id6151 , b/254528382 ). - Добавьте параметры
brush
иalpha
вBasicText
, чтобы обеспечить эффективную анимацию или настройку текстовой кисти. - Определите типы лямбда без коробок для Float, Double, Long, Int, Short в :ui:ui-unit ( I6f18d , b/246961787 )
Исправления ошибок
- Удалены множественные выделения при отслеживании скорости указателя ( I26bae ).
- Уменьшение выделения ресурсов при управлении макетом и вводом указателя ( I5333a ).
- Оптимизация использования векторной памяти и рендеринга первых кадров ( I2f3c6 ).
- Удалены выделения при рисовании линий и точек с помощью Canvas ( I9f535 ).
- Добавить документы для
AndroidFont.fontVariationSettings
( I7d9e2 )
External Contribution
- Улучшенная производительность и уменьшить распределение в векторных API ( I906CB )
Версия 1.5.0-альфа04
10 мая 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0-alpha04
. Версия 1.5.0-alpha04 содержит эти коммиты.
New Features
- Улучшения делегирования
Modifier.Node
Добавлена расширенная возможность делегирования другим экземплярамModifier.Node
изDelegatingNode
. Это можно сделать с помощьюdelegate
иundelegate
API. До этого изменения каждый API делегирующего узла необходимо было явно делегировать делегированному узлу. После этого изменения интерфейсы узлов будут делегироваться неявно, еслиDelegatingNode
не переопределяет их явно. ( 67352bc )
Изменения API
- Представьте
NestedScrollModifierNode
—NestedScroll Modifier.Node
, которому можно делегировать. ( I69513 ) - Добавлены параметры
onReset
иonRelease
в композициюAndroidViewBinding
, отражая композициюAndroidView
и обеспечивая поддержку для повторного использования просмотра с помощьюViewBinding
. ( I00b1e , б/276802519 ) - Обновлен API Compose Path для поддержки операций перемотки для поддержки случаев частого манипулирования Path с более быстрым повторным использованием. ( I7b797 )
- Добавлен оптимизированный
TextStyle.merge(...)
с полным списком параметров. ( Иад234 , б/246961787 ) - Стабилизированы многие текстовые API, включая
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
. ( I2f740 , б/261581564 , б/261581931 , б/261561245 ) -
PlatformTextStyle.includeFontPadding
не рекомендуется. Нашим первоначальным намерением было удалить это поле, однако отзывы показывают, что разработчикам нужна эта опция конфигурации. Поэтому удаление устаревших данных из поля ( I98e96 , b/277703184 )
Исправления ошибок
- Исправлена регрессионная ошибка, из-за которой клавиатура не отображалась для текстовых полей внутри диалогов, не созданных с помощью компонуемого
Dialog
. ( I82551 , б / 262140644 )
Версия 1.5.0-альфа03
19 апреля 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0-alpha03
. Версия 1.5.0-alpha03 содержит эти коммиты.
New Features
- Новое поведение по умолчанию для
SubcomposeLayout
вLookaheadScope
:SubcomposeLayouts
, у которых нет условных слотов (например,TabRow
,Scaffold
,BoxWithConstraints
и т. д.), теперь хорошо работают с анимацией просмотра вперед.
Изменения API
- Новый
intermediateMeasurePolicy
по умолчанию, который повторно использует политику измерения из прохода просмотра вперед, позволяет подтипамSubcomposeLayout
без условных слотов, таким какScaffold
,TabRow
иBoxWithConstraints
, работать с прогнозом вперед по умолчанию. ( Id84c8 ) - Рекомпозер, созданный для окна Android, теперь будет блокировать только вызовы
withFrameNanos
а не всю композицию, когда он получает уведомлениеON_STOP
. Это означает, что окна, связанные с остановленными действиями, будут продолжать перекомпоновываться при изменении данных, но анимация или любой другой вызывающий объектwithFrameNanos
будет блокироваться. ( Id9e7f , б/240975572 ) - Изменяет
motionEventSpy
на стабильный. ( Ic5ec4 , б/261560988 ) - Добавлен общедоступный метод
TextRange.constrain
. ( I97912 ) -
PlatformTextStyle.includeFontPadding
больше не считается устаревшим, чтобы побудить разработчиков использовать этот API совместимости для переключения и проверки параметраincludeFontPadding
false. ( I98e96 , б/277703184 )
Версия 1.5.0-альфа02
5 апреля 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0-alpha02
. Версия 1.5.0-alpha02 содержит эти коммиты.
API меняется
- Новый API
SubcomposeLayout
, который использует дополнительную политику промежуточных мер для обработки логики мер/макета во время анимации на основе прогноза. ( I017d3 ) - PointerInput теперь ленив и использует Modifier.Node для повышения производительности ( читайте о незначительном изменении поведения ). ( 15даб9 )
- Заменяет экспериментальные API на стабильные с ключевыми событиями. ( I9c7d8 , б / 261566839 , б / 261567368 )
- Изменяет экспериментальные API на стабильные в
PointerInputChange
. ( I1b543 , б / 261560988 , б / 261565762 , б / 261565749 ) - Добавляет способ создания экземпляра
SuspendingPointerInputModifierNode
для более сложных реализацийModifier.Node
. ( Ic4933 ) -
UrlAnnotation
вAnnotatedString
теперь можно открыть через службы специальных возможностей, такие какTalkBack
. ( If4d82 , b/253292081 ) - Добавлен API для перехвата аппаратных клавиш перед их отправкой на программную клавиатуру ( I4f4c6 , b/186800395 ).
- Добавлено семантическое действие
InsertTextAtCursor
для текстовых полей. ( I11ed5 ) - Тестовые действия, связанные с текстом (например,
performTextInput
), теперь будут запрашивать фокус напрямую, используя семантическое действие, вместо щелчка по полю. ( I6ed05 )
Исправления ошибок
- Действия текстового теста теперь требуют включения текстовых полей. ( Iab328 )
Версия 1.5.0-альфа01
22 марта 2023 г.
Выпущен androidx.compose.ui:ui-*:1.5.0-alpha01
. Версия 1.5.0-alpha01 содержит эти коммиты.
Изменения API
- Modifier.intermediateLayout теперь не требует явного LookaheadScope. Блок измерения в промежуточномLayout имеет IntermediateMeasureScope в качестве приемника, что обеспечивает удобные CoroutineScope, LookaheadScope и MeasureScope. ( Ibe2e5 ).
- LookaheadLayout заменен на LookaheadScope, который больше не является макетом. Это позволяет напрямую контролировать содержимое chid в LookaheadScope с помощью MeasurePolicy родительского объекта. ( Ibe2e5 )
- Добавляет
Modifier.Node#coroutineScope
, позволяющий Modifier.Nodes запускать сопрограммы. ( I76ef9 ) - Разрешите Modifier.Nodes читать CompositionLocals, реализовав интерфейс CompositionLocalConsumerModifierNode. ( Ib44df )
- Распространение класса @Deprecated на свойство. ( I882d1 )
Version 1.4
Версия 1.4.3
3 мая 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.3
. Version 1.4.3 contains these commits.
Исправления ошибок
- Исправлена проблема, из-за которой
AndroidView
мог располагаться неправильно при использовании с некоторыми модификаторами. ( I4dc77 , б/274797771 ) - Исправлена ошибка в 2D-поиске фокуса, которая затрагивала
DropDown
меню ( b/276811828 ). - Исправлена ошибка в свойствах входа/выхода пользовательского фокуса, из-за которой блок входа/выхода запускался только при первом вызове лямбды ( b/277234245 ).
- Исправлена регрессия в системе фокуса, приводившая к сбою при чтении
focusProperties
. ( б / 271324781 , б / 274897776 )
Версия 1.4.2
19 апреля 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.2
. Version 1.4.2 contains these commits.
Исправления ошибок
- Исправлена проблема, из-за которой
AndroidView
не мог правильно использовать свои модификаторы, что могло привести к неожиданному поведению и сбоям. ( Ib67ee , б/275919849 ) - Исправлена регрессия, при которой клавиатура не отображалась для текстовых полей внутри диалогов, не созданных с помощью составного
Dialog
( I82551 , b/262140644 ).
Версия 1.4.1
5 апреля 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.1
. Версия 1.4.1 содержит эти коммиты.
Исправления ошибок
- Устранена проблема с
ParentDataModifier
не влияющая наAndroidView
( b/274797771 ).
Версия 1.4.0
22 марта 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.0
. Version 1.4.0 contains these commits.
Important changes since 1.3.0
- Добавлен новый API-интерфейс
PinnableContainer
, который позволяет закреплять элементы ленивого списка, чтобы они не удалялись при прокрутке за пределы. Например,Modifier.focusable()
использует этот механизм для закрепления элемента, находящегося в фокусе. ( Ib8881 , б / 259274257 , б / 195049010 ) - Система фокуса переписана с использованием новых экспериментальных API
Modifier.Node
. ( I7f4d7 , b/247708726 , b/255352203 , b/ 253043481 , b /247716483 , b /254529934 , b/251840112 , b/251859987 , b/257141589 ) - Добавлено в собственности семантики
IsContainer
на поверхностях. Это свойство будет использоваться в последующих изменениях, определяющих порядок обхода на основе семантического значения таких элементов, как поверхности. ( I63379 ) - Добавлена новая роль доступности
DropdownList
. Это можно использовать для копирования поведенияTalkBack
при фокусировке наandroid.widget.Spinner
. ( I177e5 , б/236159001 ) - Теперь вы можете использовать
PlatformTextStyle(emojiSupportMatch)
чтобы при необходимости отключить обработку поддержки эмодзи для одного абзаца. ( Я7100 , б/139326806 ) - Тесты пользовательского интерфейса Android Compose теперь будут запускать проходы макета для каждого кадра при выполнении кадров для перехода в режим ожидания (например, через
waitForIdle
). Это может повлиять на тесты, проверяющие отдельные кадры анимации макета. ( I8ea08 , б/222093277 ) - В
TextStyle
добавлен экспериментальныйTextMotion
, позволяющий определить текст какStatic(default)
или анимированный. ИспользуйтеTextMotion.Animated
, если текст будет масштабироваться, переводиться или вращаться с помощью анимации. ( I24dd7 )
Версия 1.4.0-rc01
8 марта 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.0-rc01
. Версия 1.4.0-rc01 содержит эти коммиты.
API меняется
- Добавлена перегрузка составной функции
AndroidView
, которая принимает параметрonReset
. Это позволяет повторно использовать экземпляры View, когда их узел в композиции отбрасывается и повторно используется совместимым способом. Это особенно полезно дляLazyRows
иLazyColumns
представлений. ( I3f10d , б/230099236 ) - Представил новый низкоуровневый API
PlatformTextInputAdapter
для создания пользовательских реализаций текста, которые непосредственно общаются с API платформы. ( I58df4 )
Исправления ошибок
- Семантическое действие
SetText
вBasicTextField
теперь будет обновлять текстовый буфер, используя тот же путь кода, что и обновления IME, и функции тестирования (например,performTextReplacement
). - Функции текстового тестирования
performTextClearance
,performTextReplacement
иperformTextSelection
. Теперь используютсяSemanticsActions
. ( I0807d , b/269633168 , b/269624358 )
Версия 1.4.0-бета02
22 февраля 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.0-beta02
. Версия 1.4.0-beta02 содержит эти коммиты.
API меняется
- Удален API
modifierElementOf()
. Вместо этого используйте расширение непосредственно изModifierNodeElement
. ( I2256b ) - Добавлен новый обратный вызов
Modifier.Node.onReset()
позволяющий сбросить некоторое локальное состояние для правильной обработки случая, когдаLayout
будет повторно использоваться (например, как элементLazyColumn
). ИсправленFocusTargetModifierNode
для правильного сброса состояния фокуса. ( I65495 , б / 265201972 ) - В методы
DrawScope.drawText
,Paragraph.paint
иMultiParagraph.paint
добавлен параметрBlendMode
для поддержки различных алгоритмов смешивания при рисовании текста на Canvas. ( I57508 )
Исправления ошибок
- Улучшен алгоритм порядка фокуса доступности, например, верхняя/нижняя полоса чаще читается первой/последней соответственно ( 74e9c5 ).
Версия 1.4.0-бета01
8 февраля 2023 г.
androidx.compose.ui:ui-*:1.4.0-beta01
выпускается. Версия 1.4.0-beta01 содержит эти коммиты.
API меняется
-
PinnableContainer.PinnedHandle.unpin()
был переименован вrelease()
( I4667a ). - Добавлены
waitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
иwaitUntilDoesNotExist
в качестве экспериментального API дляComposeTestRule
, расширяя APIwaitUntil
для приема любого сопоставления и любого количества узлов. Дополнительную документацию смотрите вComposeTestRule
. ( Ifa1b9 , б/226934294 ) - Переименуйте
Font.MaximumAsyncTimeout
вFont.MaximumAsyncTimeoutMillis
. ( I07af5 ) - Удален
GoogleFont.Provider.AllFontsListUri
и вместо этого добавлена ссылка на него в ktdoc. ( I16f29 )
Исправления ошибок
- Добавить документы для
AndroidFont.fontVariationSettings
( I7d9e2 )
Версия 1.4.0-альфа05
25 января 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.0-alpha05
. Версия 1.4.0-alpha05 содержит эти коммиты.
API меняется
- Представлены новые экспериментальные перегрузки для функции
runComposeUiTest
и функцийcreate*ComposeRule
, которые принимают параметрыCoroutineContext
. Контекст будет использоваться для композиции теста и любых вызововLaunchedEffect
иrememberCoroutineScope()
в композиции. ( I10614 , б / 265177763 ) - Добавьте новый API для отслеживания одномерной скорости ( If5a82 ).
-
FocusRequester
теперь помечен как@Stable
. ( I580ee ) - Удалите экспериментальную аннотацию из конструктора
DialogProperties
, которая принимает параметрusePlatformDefaultWidth
. ( Ic4048 ) - Добавлена функция для расчета положения и касательной на расстоянии на пути - с помощью
PathMeasure.getPosition()
иPathMeasure.getTangent()
( I3b47c ). - Удален случайно раскрытый публичный установщик в
PlatformParagraphStyle
. ( I07f47 ) - Больше типов/обнуляемости встроенных/устаревших скрытых функций ( I24f91 )
- Добавьте
AnnotatedString.hasStringAnnotations
для запроса аннотаций с нулевым выделением. ( I94dfe , б / 246960758 ) - Добавлена новая перегрузка функции
TextMeasurer.measure
, которая принимаетString
как текст. ( I47b2d , б/242705342 ) - API-интерфейсы
LineBreak
иHyphens
в TextStyle переведены в стабильную версию. ( Ic1e1d )
External Contribution
- Методы
notifyFocusedRect
вTextInputSession
иTextInputService
снова не устарели. ( I23a04 , б / 262648050 )
Версия 1.4.0-альфа04
11 января 2023 г.
Выпущен androidx.compose.ui:ui-*:1.4.0-alpha04
. Версия 1.4.0-alpha04 содержит эти коммиты.
New Features
- Добавлен новый API-интерфейс
PinnableContainer
, который позволяет закреплять элементы ленивого списка, чтобы они не удалялись при прокрутке за пределы. Например,Modifier.focusable()
использует этот механизм для закрепления элемента, находящегося в фокусе. ( Ib8881 , б / 259274257 , б / 195049010 ) - Система фокуса переписана с использованием новых экспериментальных API
Modifier.Node
. ( I7f4d7 , b/247708726 , b/255352203 , b/ 253043481 , b /247716483 , b /254529934 , b/251840112 , b/251859987 , b/257141589 ) - Добавлено в собственности семантики
IsContainer
на поверхностях. Это свойство будет использоваться в последующих изменениях, определяющих порядок обхода на основе семантического значения таких элементов, как поверхности. ( I63379 ) - Добавлена новая роль доступности
DropdownList
. Это можно использовать для воспроизведения поведенияTalkBack's
при фокусированииandroid.widget.Spinner
. ( I177e5 , б/236159001 ) - Теперь вы можете использовать
PlatformTextStyle(emojiSupportMatch)
чтобы при необходимости отключить обработку поддержки эмодзи для одного абзаца. ( Я7100 , б/139326806 ) - Тесты пользовательского интерфейса Android Compose теперь будут запускать проходы макета для каждого кадра при выполнении кадров для перехода в режим ожидания (например, через
waitForIdle
). Это может повлиять на тесты, проверяющие отдельные кадры анимации макета. ( I8ea08 , б/222093277 ) - В
TextStyle
добавлен экспериментальныйTextMotion
, позволяющий определить текст какStatic(default)
или анимированный. ИспользуйтеTextMotion.Animated
, если текст будет масштабироваться, переводиться или вращаться с помощью анимации. ( I24dd7 )
API меняется
- Аргумент
maxSize: IntSize
вdrawText
заменен наsize: Size
, который будет встроенным в другие функцииDrawScope
. По умолчанию дляsize
установлено значениеSize.Unspecified
, что не должно менять предыдущее поведение по умолчанию. ( Icd27d ) - Удален устаревший экспериментальный конструктор шрифтов. ( I8a724 , б / 261435386 )
- Класс данных инструментов пользовательского интерфейса
Group
теперь имеет полеisInline
, которое указывает, предназначена ли группа для вызова встроенной составной функции. IfisInline
istrue
then the call is to an inline composable function. However, the value might be false for calls to inline composable functions that are from modules that are compiled with a version of the compose compiler plugin that doesn't generate the inline function information. ( Идб846 ) - Довели до стабильной версии ряд ранее экспериментальных API.
- API событий ротационной прокрутки теперь стабилен ( I42ad3 , b/261561229 )
- API
FontVariation
теперь стабилен ( I8779f , b/241016309 ). - Все конструкторы
Font()
теперь имеют стабильный API ( I5948b , b/261435386 ). -
DeviceFontFamilyName
теперь стабильно ( I8b640 , b/261435386 ) - Конструктор
AndroidFont
сvariationSettings
теперь является стабильным API и может использоваться для создания новых типов дескрипторов шрифтов. ( I5adcc , б / 261565807 ) - API
createFontFamilyResolver
теперь стабилен. Это может быть использовано для ловушки непредуденных исключений во время асинхронной загрузки шрифтов. ( Ибб481 , б/261435386 ) - API
Font.loadingStrategy
теперь стабилен. ( I5937c , б / 261435386 ) - API
GoogleFont
теперь стабилен. ( Ic90b0 , б/261435386 ) -
TextUnit(float, TextUnitType)
теперь является стабильным API. ( I90c84 , б/261561612 ) -
pluralStringResource
теперь является стабильным API. ( I09849 , б / 261439703 )
Версия 1.4.0-альфа03
7 декабря 2022 г.
Выпущен androidx.compose.ui:ui-*:1.4.0-alpha03
. Версия 1.4.0-Alpha03 содержит эти коммиты.
API меняется
- Удаление
ExperimentalComposeUiApi
изPointerIcon
( I23af8 ) - Введем действия по обеспечению доступности страницы:
PageUp
,PageDown
,PageLeft
,PageRight
. Обратите внимание, что они доступны только из API 29. ( Ida4ab ). - Обновлено представление параметра
rememberNestedScrollConnection
с корневого представления на представление хоста. ( Я5200 ) - Добавлен API-модификатор для запроса информации о прокрутке предков. ( I2ba9d , б/203141462 )
- Используется в
Clickable
для правильной задержки взаимодействия с нажатием, когда жесты могут стать событиями прокрутки. - Исправлены
Clickables
, которые неправильно задерживали пульсацию при использовании внутриScrollable ViewGroup
. - Обновлены ящики и листы для правильной задержки нажатия на случай, если жесты могут стать событиями прокрутки.
-
CompositingStrategy.Always
переименован вOffscreen
чтобы указать, чтоgraphicsLayer
всегда будет отображаться в промежуточном буфере ( I47dc1 ). - Перегрузка макета несколькими слотами для контента теперь стабильна ( I10566 , b/248294649 ).
- Добавлены новые экспериментальные API
PerfettoTrace.record {}
иPerfettoTraceRule
для захвата трассировок Perfetto (также известных как системные трассировки) в рамках теста для проверки поведения и производительности теста. ( I3ba16 ) - В тестах пользовательского интерфейса, использующих правило Compose, продолжения, возобновленные во время обратных вызовов
withFrameNanos
не будут отправляться до тех пор, пока не завершится выполнение всех обратных вызовов кадров. Это соответствует поведению Compose при нормальной работе. Однако тесты, основанные на старом поведении, могут завершиться неудачно. Это должно влиять только на код, который напрямую вызываетwithFrameNanos
илиwithFrameMillis
и имеет логику вне обратного вызова, передаваемую тем функциям, которые, возможно, потребуется переместить внутри обратных вызовов. Примеры см. в изменениях теста анимации в этом CL. - Добавлен необязательный параметр
onPerformTraversals: (Long) -> Unit
в конструкторTestMonotonicFrameClock
и фабричная функция для запуска кода после обратных вызововwithFrameNanos
, но перед возобновлением сопрограмм вызывающего объекта. ( Idb413 , б/254115946 , б/222093277 , б/255802670 ) - Добавлен EmojiCompat в Compose ( Ibf6f9 , b/139326806 )
- В
@Preview
добавлен новый параметр обоев для поддержки динамического цвета ( I9f512 ).
Исправления ошибок
- Уведомления о применении снимка теперь отправляются после того, как
Recomposer
заканчивает применение изменений. ( IAD6C0 , B/222093277 ) - Введены изменения в
captureToImage
, чтобы учесть многокшиновые скриншоты. Это полезно для экранных тестов, которые используют составные всплывающие окна. ( I169C5 )
Dependency Updates
- Составьте пользовательский интерфейс и составление материала теперь зависят от жизненного цикла 2.5.1. ( I05ab0 , b/258038814 )
Version 1.4.0-alpha02
9 ноября 2022 г.
androidx.compose.ui:ui-*:1.4.0-alpha02
выпускается. Version 1.4.0-alpha02 contains these commits.
API меняется
- Обновлено
GraphicsLayerScope
, чтобы разоблачить текущий размерgraphicsLayer
. Это полезно для вычисления преобразованийgraphicsLayer
в зависимости от композиционного размера. ( IF8C43 , B/181387080 ) - Введен
CompositingStrategy
, чтобы определить, когда использовать слой композиции за кадром для рендеринга контентаgraphicsLayer
. Auto поддерживает поведение по умолчанию, которое внутренне использует слой, если применяется альфа илиRenderEffect/Overscroll
. Всегда всегда будет вводить буфер за кадром, гдеModulateAlpha
будет избегать использования буфера за кадром и вместо этого будет модулировать каждую из записанных инструкций по рисованию вgraphicsLayer
. ИспользованиеModulateAlpha
по -прежнему будет использовать буфер за кадром для использованияRenderEffect/Overscroll
( i25e82 , b/256382834 ) -
invalidateSubtree()
был добавлен вModifier.Node
, чтобы позволить недействительную целую иерархию для макета и рисунка. ( I4bd90 ) - Продвигайте
rememberNestedScrollInteropConnection
к стабильной. Ввел возможность передать корневое представление, чтобыrememberNestedScrollInteropConnection
. Это может помочь пользовательскому взгляду лучше реагировать на ограничения прокрутки, особенно в нестандартных представлениях (например,ModalBottomSheetDialog
). ( I9e107 ) - Добавлен интерфейс
ObserverNode
, который может использоваться с помощью реализацийModifier.Node
, которые необходимо уведомлять, когда изменение значения, которое они прочитали ранее ( I5728B , B/247716483 ) - Добавлен новый конструктор, чтобы
Paint
, который принимает нативныйandroid.graphics.Paint
. Также добавлено функцию расширенияtoComposePaint()
, который преобразует существующий собственный объект краски для сочинения краски. ( ICA91B ) - Добавьте новый
FontFamily.Resolver.resolveAsTypeface
для использования на Android. ( 18950b ) - Добавьте
ToolingState
, чтобы позволить инструментам изменять внутренние состояния композиции ( IE6614 ) - Рефактор инструмент для лучшей поддержки для новых добавленных анимаций ( i8677b )
- Добавлен параметр
minLines
в текст материала и материала3,TextField
иOutlinedTextField
, что позволяет установить минимальную высоту компонента в терминах количества строк ( i4af1d )
Version 1.4.0-alpha01
24 октября 2022 г.
androidx.compose.ui:ui-*:1.4.0-alpha01
выпускается. Version 1.4.0-alpha01 contains these commits.
Изменения API
- Был добавлен новый метод,
awaitEachGesture()
, для детекторов жестов. Он работает аналогичноforEachGesture()
, но петля над жестами полностью работает в пределахAwaitPointerEventScope
, поэтому события не могут быть потеряны между итерациями. -
forEachGesture()
был устарел в пользуawaitEachGesture()
потому что он позволяет терять события между жестами. ( Iffc3f , b/251260206 ) - Уничтожение утилизации объектов Accccepressibuity в Androidx. Мы обнаружили, что изменения производительности незначительны даже в самых старых поддерживаемых версиях. ( I0A961 )
- Добавлен стиль
DrawStyle
в качестве экспериментального атрибута кTextStyle
иSpanStyle
чтобы включить текст рисования. ( If24b8 , b/155421273 ) -
AnnotatedString.Builder
теперь реализуетkotlin.text.Appendable
. ( I1A061 , B/2310304444 ) -
AnnotatedString.Builder
теперь имеет методappend(AnnotatedString, start: Int, end: Int)
для добавления подстроенияAnnotatedString
и стилей пересечения. - Добавлен параметр
DrawStyle
вParagraph
и функцииMultiParagraph
Paint, которые позволяют изложенному рисованию текст. ( IC8102 , B/155421273 )
External Contribution
- Спасибо за
vighnesh
за добавление телевизионных устройств в предварительный просмотр ( IE15CD )
Версия 1.3
Версия 1.3.3
11 января 2023 г.
androidx.compose.ui:ui-*:1.3.3
выпускается. Версия 1.3.3 содержит эти коммиты.
Исправления ошибок
- Исправлена для сбоя, иногда происходит на Android 9, когда активность экономит состояние представления Compose. ( I0B755 , B/260322832 )
Версия 1.3.2
7 декабря 2022 г.
androidx.compose.ui:ui-*:1.3.2
выпускается. Version 1.3.2 contains these commits.
Исправления ошибок
- Обновлено для использования Propobuf 3.21.8, что позволяет избежать оповещения о безопасности в
protobuf-javalite:3.19.4
(CVE-2022-3171) ( B/255545055 )
Версия 1.3.1
9 ноября 2022 г.
androidx.compose.ui:ui-*:1.3.1
выпускается. Version 1.3.1 contains these commits.
Версия 1.3.0
24 октября 2022 г.
androidx.compose.ui:ui-*:1.3.0
выпускается. Version 1.3.0 contains these commits.
Важные изменения с 1.2.0
- Новый экспериментальный API Suite
LookaheadLayout
(обеспечение ранее невозможного анимационного поведения) - Новый экспериментальный
Modifier.Node
API Suite.node (альтернативаModifier.composed
. - Улучшенная поддержка оконных вставки.
- Фокус-поддержка D-PAD и аппаратную клавиатуру в Lazylists.
- Максимальная поддерживаемая высота в диалогах и всплывающих окнах была уменьшена до 8DP (изменение поведения поведения для некоторых индивидуальных систем проектирования - Обоснование в примечаниях по выпуску Beta01 )
- Многие незначительные, некрипирующие улучшения API
- Многие ошибки и улучшения производительности
Версия 1.3.0-RC01
5 октября 2022 г.
androidx.compose.ui:ui-*:1.3.0-rc01
выпускается. Version 1.3.0-rc01 contains these commits.
API меняется
- Добавлено новые экспериментальные гайфины API для поддержки автоматической гифенации в тексте ( IAA869 )
Исправления ошибок
- Шрифты
DeviceFontFamilyName
Typeface
будут настраиваться по умолчаниюwght
иital
. ( IA7A6D , B/246989332 ) - Фиксированная утечка памяти
LazyColumn
-onModifierLocalsUpdated
не вызывалась с значением по умолчанию при повторном использовании модификаторов ( B/230168389 )
Версия 1.3.0-бета03
21 сентября 2022 г.
androidx.compose.ui:ui-*:1.3.0-beta03
выпускается. Версия 1.3.0-бета03 содержит эти коммиты.
Изменения API
- Добавьте параметры для настройки разрыва строки в тексте. ( I86907 )
- Измененный
size:IntSize
ARGUING сconstraints: Constraints
вTextMeasurer.measure
Метод измерения для поддержки ограничений минимальной ширины. ( I37530 , b/242707525 )
Исправления ошибок
- API
BackHandler
Activity Activity теперь работает вDialog
композитном составе. ( I35342 )
Версия 1.3.0-бета02
7 сентября 2022 г.
androidx.compose.ui:ui-*:1.3.0-beta02
выпускается. Версия 1.3.0-бета02 содержит эти коммиты.
API меняется
- Добавлена экспериментальная перегрузка для макета, которая принимает список множества композиционных контентов Lambdas, что позволяет угрожать измерениями, помещаемые в различные лямбдас по -разному ( IC1B4E )
Изменения в экспериментальной фокусировке API:
-
FocusDirection.In
иFocusDirection.Out
устанавливаются и заменяютсяFocusDirection.Enter
Enter иFocusDirection.Exit
. ( IA4262 , B/183746982 ) - Добавлены два новых свойства фокуса введите и выходят, чтобы указать пользовательское поведение для
FocusManager.moveFocus(Enter)
иFocusManager.moveFocus(Exit)
. ( I5f3f9 , b/183746982 ) - Теперь вы можете использовать
FocusRequester.Cancel
, чтобы отменить фокус.FocusRequester.Cancel
может использоваться в любом из следующих свойств фокуса: вверх, вниз, влево, справа, следующий, предыдущий, начало, конец, ввод и выход. ( IB300F )
Version 1.3.0-beta01
24 августа 2022 г.
androidx.compose.ui:ui-*:1.3.0-beta01
выпускается. Version 1.3.0-beta01 contains these commits.
Рефактор модификатора
Слой, который обрабатывает Modifier/Modifier.Element
Электронные экземпляры и координирует их поведение на LayoutNodes
был в основном рефактован. В настоящее время это был рефактор, который не влиял на публичный API ни одного из многих модификаторов в Compose, и его можно рассматривать как изменение только для реализации. Несмотря на это, это важное изменение по разным причинам. ( IE4313 )
Сводка изменений
Добавленный экспериментальный Modifier.Node
API обеспечивает абстракцию, которая позволяет сохранять состояние в экземпляре, который будет сохранен с помощью жизненного цикла узла макета, и будет выделен для узел для для Layout и для использования соответствующего Modifier.Element
, который создал его.
Вообще говоря, эта абстракция обеспечивает альтернативный механизм для создания современных модификаторов, не полагаясь на механику API Modifier.composed
.
Риск
Это изменение строго бинально совместимо с предыдущими выпусками и предназначено для того, чтобы быть обратно совместимым с точки зрения наблюдаемого поведения, столь же практичного и разумного. Тем не менее, существует мало подсистем сочинения этого рефактора, и вполне вероятно, что поведение изменилось таким образом, которые не были покрыты нашими тестами и еще не были найдены и фиксированы .
Пожалуйста, обновите до этого релиза с осторожностью. Если вы считаете, что это что -то сломало для вас, пожалуйста, дайте нам знать.
Экспериментальные API
Были добавлены различные экспериментальные API, все это касается новой концепции «модификатора». Modifier.node создаются в результате
-
fun modifierElementOf(…): Modifier
-
abstract class ModifierNodeElement
-
abstract class Modifier.Node
-
abstract class DelegatingNode
-
interface LayoutModifierNode
-
interface DrawModifierNode
-
interface SemanticsNode
-
interface PointerInputNode
-
interface ModifierLocalNode
-
interface ParentDataModifierNode
-
interface LayoutAwareModifierNode
-
interface GlobalPositionAwareModifierNode
-
interface IntermediateLayoutModifierNode
Поведение нарушение изменения
Максимальная поддерживаемая высота в диалогах и всплывающих окнах была уменьшена до 8DP.
Максимальная поддерживаемая высота для композиционных диалогов и всплывающих окнов была уменьшена с 30dp до 8dp. Это изменение влияет как на материалы, так и пользовательские диалоги и всплывающие окна. Это изменение сделано для смягчения ошибки доступности в версиях Android ниже S, а также для обеспечения того, чтобы службы доступности в этих окнах могли взаимодействовать с контентом внутри диалога или всплывающего окна.
На вас повлияют это изменение только в том случае, если вы создаете пользовательский диалог или всплывающую реализацию с повышением уровня, выше 8DP. Подумайте о том, чтобы снизить высоту диалога или всплывающего окна. Если вам нужно отказаться от этого нового поведения, рассмотрите возможность поднять свой собственный диалог или всплывающее окно с желаемым набором высоты. Это не рекомендуется, так как доступность может быть негативно повлияла, и он находится на разработчике, чтобы обеспечить нижнюю часть диалога или всплывающего окна взаимодействовать и читаемой с помощью служб доступности.
API меняется
- Исправлена проблема, где
painterResource
не будет обновлять изменения конфигурации ( i58e73 , b/228862715 ) -
rememberTextMeasurer
TextMeasure больше не принимает параметрыFontFamily.Resolver
,Density
или параметровLayoutDirection
. Пожалуйста, используйте конструкторTextMeasurer
, чтобы предоставить пользовательские значения для этих параметров. ( IA1DA3 ) - Добавлены свойства
DialogProperties.decorFitsSystemWindows
, чтобы позволить диалогам поддержатьWindowInsets
. ( I57742 , b/229378542 ) - Перенесенные конструкторы шрифта обратно в исходный файл Kotlin, чтобы сохранить бинарную совместимость. Без изменений от последнего стабильного выпуска. ( IEB2F3 )
- Удаленный ненужный оператор из нескольких определений равных - это не имеет эффекта. ( I6c309 )
-
FontVariation.Setting
- это герметичный интерфейс, чтобы обеспечить будущие API -интерфейсы. ( I11021 , B/143703328 ) - Добавить
CompositionGroup.findParameters
вSlotTree.kt
. Это позволяет инструментам получать параметры дляCompositionGroup
без необходимости проанализировать всю таблицу слотов. ( I124fe )
Версия 1.3.0-Alpha03
10 августа 2022 г.
androidx.compose.ui:ui-*:1.3.0-alpha03
выпускается. Версия 1.3.0-Alpha03 содержит эти коммиты.
API меняется
-
LayoutCoordinates.findRootCoordinates()
теперь публично ( i7fa37 , b/204723384 ) - Добавлено экспериментальное API, чтобы получить
LayoutCoordinates
вPlacementScope
. Это позволяет разработчикам знать, где текущая компоновка должна разместить детей по сравнению с его позицией. ( I5482b , b/238632578 ) - Добавлены
LayoutCoordinates.transformFrom
, чтобы получить матричное преобразование от одногоLayoutCoordinates
в другое. ( IC5AB1 , B/238632578 ) - Умеренный
SemanticsModifier.id
и перенесен идентификатор Semantics вLayoutInfo.semanticsId
. ( IAC808 , B/203559524 ) - Ресурсные шрифты теперь поддерживают настройки изменений вариации шрифта (API 26+). ( I900DD , B/143703328 )
- Переменная поддержка шрифтов в
DeviceFontFamilyNameFont
( IC1279 , B/143703328 ) - Конструкторы шрифта теперь принимают список
FontVariation.Setting
для настройки переменных шрифтов на устройствах O+. ( I11a9d , b/143703328 ) - Добавьте API
FontVariation
для определения и использования переменных шрифтов. ( I3c40c , b/143703328 ) -
LineHeightStyle.Alignment
Конструктор выравнивания в настоящее время является общедоступным (экспериментальным) ( I4BBBE , B/235876330 ) - Аккаф теперь ожидается | Актуальные и определяются для Android и Desktop. ( ID387E , B/239962983 )
- Интерфейс -абзац теперь герметизированный интерфейс Paragarph. Для подклассионного абзаца нет никакого использования, и мы рекомендуем обратиться, если это изменение повлияет на вас. ( If5247 , b/239962983 )
- Удаленная экспериментальная аннотация из
PlatformTextStyle
иLineHeightStyle
. ( I64bef ) - Установите
TextInputService.show|hideSoftwareKeyboard
. Пожалуйста, используйтеSoftwareKeyboardController
вместо этого в коде приложения иTextInputSession
в коде IME-управления. ( I14E4C , B/183448615 ) - Добавьте новый API для существующих типов анимации ( i26179 )
Исправления ошибок
- Добавлено
@RequiresPermission
в API, которые требуют предоставления разрешенияPOST_NOTIFICATIONS
на SDK 33 и выше. ( IE542E , B/238790278 )
Версия 1.3.0-Alpha02
27 июля 2022 г.
androidx.compose.ui:ui-*:1.3.0-alpha02
выпускается. Версия 1.3.0-Alpha02 содержит эти коммиты.
API меняется
- Добавлено новое свойство
PointerInputChange#pressure
, чтобы получить давление. ( I45a5e , b/205164819 ) - Добавлено,
rememberTextMeasurer
, чтобы легко создать и запомнить экземплярыTextMeasurer
в композиции. ( I8d66e ) -
Rect
,RoundRect
, иMutableRect
теперь поддерживают котлинin
синтаксисе для вызова функцииcontains
. ( IE42B0 , B/238642990 ) - Удалите ненужные функции из
KeyInjectionScope
, так как их можно легко реализовать с помощью более простых частей API. Функции, которые были удалены, включаютpressKeys
,keysDown
иkeysUp
. ( I81d77 ) - Refactored Constant и имена параметров в
KeyInjectionScope
чтобы включить суффикс «миллисы», где единицы указанных констант и параметров составляют миллисекунды. ( Iabef5 ) - Добавлен метод
toStringForLog()
вEditCommand
чтобы помочь устранить проблемы редактирования текста. ( I53354 , B/228862731 ) - Добавлена функция расширения
drawText
наDrawScope
, чтобы предоставить способ нарисовать несколько стиль текста на композиционных и модификаторах, которые работают наDrawScope
подобномCanvas
иdrawBehind
. ( I16A62 , B/190787898 ) - Введите новый экспериментальный API, называемый
TextMeasurer
, который позволяет вычислять произвольный макет текста, который создает идентичные результаты дляBasicText
, независимо от составления времени выполнения. ( I17101 ) - Добавить
mapTree
вSlotTree.kt
. Это позволяет инструментам осматриватьSlotTree
, не делая копии в памяти сначала, как Astree. Для инспектора макета это дает улучшение производительности около фактора 10 ( i5e113 ) - Измененный предварительный просмотр для сохранения в файлах двоичного вывода, чтобы позволить разработчикам писать и повторно использовать аннотации
MultiPreview
из библиотек. ( I85699 , B/233511976 )
Исправления ошибок
- При добавлении событий
InputEventChange
в трекерVelocity
мы рассмотрим теперь Deltas вместо позиций, это гарантирует, что скорость правильно рассчитывается для всех случаев, даже если целевой элемент движется ( ICEA9D , B/216582726 , B/223440806 , B/22709803 ) - Исправить NPE, вызванный
AnnotatedString.toUpperCase
, когда присутствуют аннотации. ( I0ACA2 , B/210899140 )
Версия 1.3.0-Alpha01
29 июня 2022 г.
androidx.compose.ui:ui-*:1.3.0-alpha01
выпускается. Версия 1.3.0-Alpha01 содержит эти коммиты.
API меняется
- New
LookaheadLayout
, который поддерживает проход Lookahead перед фактической мерой/макетом. Это позволяет предварительно рассчитывать компоновку при его изменении, позволяя пост-постоверной меру/макету использовать предварительно рассчитанную размер/положение, чтобы оживить размер и положения в направлении цели.SubcomposeLayouts
еще не поддерживается, но будут в следующем релизе. ( I477f5 ) - Добавьте дополнительный альфа -параметр к вкусу вкуса
TextStyle
иSpanStyle
чтобы изменить непрозрачность всегоText
. ( IC2FAC , B/234117635 ) - Представил тип аннотации
UrlAnnotation
и связанные с ними методы поддержки поддержкиTalkBack
Link вAnnotatedString
S. ( I1C754 , B/231495122 ) - Функциональность перемещения полезности к времени выполнения ( I4F729 )
Исправления ошибок
-
TextLayoutResult.getLineForOffset
не бросает. ( Idc5d6 , b/235876324 )
External Contribution
- Добавлен новый API
WindowInfo.keyboardModifiers
.
Version 1.2
Версия 1.2.1
10 августа 2022 г.
androidx.compose.ui:ui-*:1.2.1
выпускается. Версия 1.2.1 содержит эти коммиты.
Исправления ошибок
- Фиксированный нулевый пункт в инспекторе ( B/237987764 )
- Исключение с фиксированным классом во время запоминания в инспекторе ( B/235526153 )
Версия 1.2.0
27 июля 2022 г.
androidx.compose.ui:ui-*:1.2.0
выпускается. Version 1.2.0 contains these commits.
Important changes since 1.1.0
Улучшения в обходе фокусировки:
- Фокус-прокручивание ленивых списков теперь работает, используя новый API Core
BeyondBoundsLayout
- Новые API настройки поведения в
FocusOrder
иFocusProperties
- Улучшенное поведение с помощью физической клавиатуры или телевизора
- Фокус-прокручивание ленивых списков теперь работает, используя новый API Core
Новые API для:
- Оконные вставки
- Основные примитивы для жестов, бесконечных и макетных анимаций
- Возможности
GraphicsLayer
, включаяRenderEffect
Многие ошибки и улучшения производительности
Версия 1.2.0-RC03
29 июня 2022 г.
androidx.compose.ui:ui-*:1.2.0-rc03
выпускается. Версия 1.2.0-RC03 содержит эти коммиты.
- Нет изменений с 1.2.0-RC02.
Version 1.2.0-rc02
22 июня 2022 г.
androidx.compose.ui:ui-*:1.2.0-rc02
выпускается. Version 1.2.0-rc02 contains these commits.
Version 1.2.0-rc01
15 июня 2022 г.
androidx.compose.ui:ui-*:1.2.0-rc01
выпускается. Version 1.2.0-rc01 contains these commits.
API меняется
- Интерфейсы в библиотеках Compose теперь созданы с использованием методов интерфейса JDK8 по умолчанию ( I5BCF1 )
- Добавлены функции более высокого порядка в
KeyInjectionScope
для инъекционных нажатий клавиш, в то время как другие ключи удерживаются или включаются. Эти функции включают в себяwithKeysDown
,withKeysToggled
и т. Д. Также добавляли свойства для проверки, если конкретный мета -ключ снизится, например,isCtrlDown
чтобы проверить, подавлен ли любой элемент управления. Обратитесь кKeyInjectionScope
для документации по каждой функции. ( I9f6cd , b/229831515 ) - Был введен экспериментальный
OverscrollEffect
, чтобы обеспечить пользовательские эффекты перегодности, наряду с модификатором.Modifier.scrollable
перегрузки, которые принимают его. - Экспериментальная
LocalOverScrollConfiguration
была перенесена изfoundation.gesture
в Foundation Package и переименован вLocalOverscrollConfiguration
( IF19FB , B/204650733 ) - Rename
runComposeUiTestWithoutActivity {}
torunEmptyComposeUiTest {}
, который выравнивает его сcreateEmptyComposeRule()
( i6fed7 )
Version 1.2.0-beta03
1 июня 2022 г.
androidx.compose.ui:ui-*:1.2.0-beta03
выпускается. Version 1.2.0-beta03 contains these commits.
Изменения API
- Добавлены
pressKeyTimes
, а такжеisCapsLockOn
и друзья дляKeyInjectionScope
. Кроме того, API теперь поддерживает комбинированные шаблоны впрыска мыши и клавиатуры, такие как нажатие кнопки мыши с мета -клавиш, удерживаемой. ( I4c8da , b/229831515 ) - Добавлена экспериментальная поддержка для инъекции ключевых событий. Используйте
performKeyInput
, чтобы отправить ключевые события, или отправить их через свойствоkey
MultiModalInjectionScope
во время многомодального жеста ввода с помощьюperformMultiModalInput
. См.KeyInjectionScope
для документации API. ( IC5000 , B/229831515 ) - Добавьте новый
GoogleFont.Provider.AllFontsListUri
для получения канонического интернета источника Google шрифтов, поддерживаемых Android. - Улучшение сообщений об ошибках повторно, когда GoogleFonts не загружается в Compose. ( I0416c )
Исправления ошибок
- При добавлении событий
InputEventChange
к трекеру скорости мы рассмотрим сейчас Deltas вместо позиций, это гарантирует, что скорость правильно рассчитывается для всех случаев, даже если целевой элемент движется ( i51ec3 , b/216582726 , b/223440806 , b/22709803 ) - Настройка
Show Layout Bounds
теперь будет применена для композибетов сразу после того, как переключать его из плитки быстрого настройки, не оставляя и повторно въезжает в действие. ( I843D5 , B/225937688 ) - Поиск строки доступности не запускает загрузку шрифта. Ранее он пытался загрузить шрифты для
StyleSpans
, что привело к сбоям, еслиFontFamily.Resolver
был перезаписан. ( I4609d ) - Нажатие клавиши «Удалить», когда курсор находится в конце текстового поля, больше не будет сбой.
-
DeleteSurroundingTextCommand
иDeleteSurroundingTextInCodePointsCommand
теперь требует, чтобы их аргументы конструктора были неотрицательными. ( ICA8E6 , B/199919707 )
Version 1.2.0-beta02
18 мая 2022 г.
androidx.compose.ui:ui-*:1.2.0-beta02
выпускается. Version 1.2.0-beta02 contains these commits.
API меняется
- Повторное использование функциональности в других типах предварительного просмотра ( I19F39 )
Исправления ошибок
-
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
был переименован в утилизацию, чтобыDisposeOnDetachedFromWindowOrReleasedFromPool
чтобы лучше отразить, что когда возникают утилизации, а не просто, когда они не возникают. ( If15ca )
Версия 1.2.0-бета01
May 11, 2022
androidx.compose.ui:ui-*:1.2.0-beta01
выпускается. Version 1.2.0-beta01 contains these commits.
New Features
- This is the first beta release of 1.2!
API меняется
- Добавлен экспериментальный
BeyondBoundsInterval
, который может быть использован пользовательскими реализациямиLazyList
, когда они расположены за пределами видимых границ ( ifabfb , b/184670295 ) - Ключевые версии
Modifier.composed
. - Упрощено API API
rememberNestedScrollConnection
для использования местных жителей для получения текущей информации о просмотре ( i67CA7 ) - Аннотация и аннотации
@ComposableTarget
и аннотации, помеченные@ComposableTargetMarker
теперь могут использоваться в прицеле файла с помощью префикса@file
. Использование целевой аннотации в прицеле файла приведет к тому, что компилятор предполагает, что все композиционные функции в файле предназначены для того, чтобы быть нацеленным на связанный приложение. Например, использование@file:UiComposable
заявляет, что все функции@Composable
нацелены на Compose UI Applier. Функция, которая должна ориентироваться на другого приложения, должна явно предоставить аннотацию целевого маркера для желаемого приложения. ( I40804 ) Представил новый экспериментальный, независимый от платформы, тестовый API:
interface ComposeUiTest
иfun runComposeUiTest(block: ComposeUiTest.() -> Unit)
, которые можно использовать для запуска композиции пользовательского интерфейса без необходимостиTestRule
. Чтобы запустить тест безComposeTestRule
, пройдите тест в качестве лямбды, чтобыrunComposeUiTest
, и используйте методы и элементы в Composeiest RecopeComposeUiTest
, которые являются такими же, как и вComposeContentTestRule
.Андоид, специфичный
interface AndroidComposeUiTest
иfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
чтобы обеспечить доступ к базовой деятельности, аналогичноAndroidComposeTestRule
. Для еще большего контроля вы можете создать созданиеclass AndroidComposeUiTestEnvironment
самостоятельно.Реализация рабочего стола является
class DesktopComposeUiTest
, но в данный момент не предлагаются функции определенных рабочих столов.Мигрирование теста из
ComposeTestRule
наComposeUiTest
может быть сделан так (пример Android). От:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
К:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
На данный момент
ComposeContentTestRule
иComposeTestRule
не простираются отComposeUiTest
, что означает, что функции расширения наComposeUiTest
еще не могут быть вызваны на интерфейсеTestRule
. КогдаComposeUiTest
выпускников для стабильного APIComposeContentTestRule
иComposeTestRule
будут изменены, чтобы продлиться сComposeUiTest
. ( IB4E90 )LineHeightBehavior
переименован вLineHeightStyle
LineVerticalAlignment
переименован вLineHeightStyle.Alignment
Переименовать
LineHeightTrim
переименован вLineHeightStyle.Trim
Значения конструктора по умолчанию из
LineHeightStyle
удалены ( i582bf , b/181155707 )Добавлена
Brush
вTextStyle
иSpanStyle
чтобы обеспечить способ нарисовать текст с градиентным окрашиванием. ( I53869 , B/187839528 )trimFirstLineTop
,trimLastLineBottom
АтрибутыLineHeightBehavior
изменились на единый переход:LineHeightTrim
.LineHeightTrim
имеет значения 4 состояний, определенных двумя логинами:FirstLineTop
,LastLineBottom
, оба, так и нет ( IFC6A5 , B/181155707 )Добавлен
LineHeightBehavior
вTextStyle
иParagraphStyle
.LineHeightBehavior
управляет, применяется ли высота линии к вершине первой линии и к нижней части последней линии. Он также определяет выравнивание линии в пространстве, предоставленномTextStyle(lineHeight)
.Например, можно получить поведение, похожее на то, что CSS определяет через
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.trimFirstLineTop
,trimLastLineBottom
Configurations работает правильно только тогда, когда включает в себяincludeFontPadding
. ( I97332 , B/181155707 )Функции
PlatformParagraphStyle.lerp
иPlatformSpanStyle.lerp
изменяются на функции верхнего уровня ( i9a268 )
Исправления ошибок
-
PointerInputChange::copy
документацию теперь правильно утверждает, что это мелкая копия. ( I182F5 ) - Поддержка Ellipsis, когда высота ограничена и не соответствует всем текстовым линиям ( IE528C , B/168720622 )
- Включите по умолчанию,
includeFontPadding
. Можно отключитьincludeFontPadding
с помощью атрибутаTextStyle.platformTextStyle
. В ближайшем будущем мы изменим поведение по умолчанию, однако до этого времени это позволит нам лучше интегрировать улучшения высоты линии (AOSP/2058653) и решать проблемы с вырезаниемTextField
. ( I01423 , B/171394808 )
External Contribution
-
MouseInjectionScope.scroll(delta = someDelta)
теперь перевернут на Android, если мы прокручиваем вертикально (если когда -нибудь положительно, он прокрутится вниз) ( IFB697 , b/224992993 )
Version 1.2.0-alpha08
20 апреля 2022 г.
androidx.compose.ui:ui-*:1.2.0-alpha08
выпускается. Version 1.2.0-alpha08 contains these commits.
API меняется
- Функции
pluralStringResource
были отмечены как экспериментальные, чтобы позволить эволюции поддерживать лучшую интернационализацию в будущем. ( If24e4 ) - Параграф и многократный параграф теперь принимают параметр ограничений. Прохождение
Constraints.maxHeight
-это неоперация в данный момент, но позволит сделать некоторые расчеты в будущем, например, эллипсип на основе высоты. ( I6afee , b/168720622 ) -
SubcomposeSlotReusePolicy.getSlotsToRetain()
теперь принимает пользовательский класс, похожий на муки, который не позволяет добавлять в него новые элементы. ( ICD314 ) - Pointericon теперь интерфейс
@Stable
( i9dafe ) - Частичное потребление (вниз или положение) было устарело в
PointerInputChange
. Вы можете использоватьconsume()
для полного потребления изменения. Вы можете использоватьisConsumed
, чтобы определить, использовал ли кто -то еще ранее изменение. -
PointerInputChange::copy()
теперь всегда делает мелкую копию. Это означает, что копииPointerInputChange
будут потребляться после использования одной из копий. Если вы хотите создать несвязанныйPointerInputChange
, вместо этого используйте конструктор. ( IE6BE4 , B/225669674 ) - Включите вложенную взаимодействие прокрутки между Compose и View в направлении Compose> View. Это означает, что родитель Compose сможет получить вложенные Deltas Deltas от вложенного представления прокрутки. ( IF7949 , B/174348612 )
- Новая
SemanticsProperty testTagsAsResourceId
, который можно использовать для составления сочинения тестов UIAutomator, предназначенных для системы просмотра. ( I39c20 ) - Отобразить все доступные веса для системных шрифтов на Android при использовании
FontFamily.SansSerif
. Это будет использовать запасные имена шрифтов, такие как Sans-Serif-Medium, внутренне на API 21-28. Это изменение поведения, так как ранее только веса 400 и 700 были поддержаны на API 21-28. ( I380fe , b/156048036 , b/2264441992 ) - Преподаватели в абзаце и многопорастаграфа переупорядочили позиционные аргументы перед необязательными аргументами. ( Идафаа )
-
AndroidFont
теперь принимает TypeCeloAder в качестве параметра конструктора. ( I2c971 )
Version 1.2.0-alpha07
6 апреля 2022 г.
androidx.compose.ui:ui-*:1.2.0-alpha07
выпущен. Version 1.2.0-alpha07 contains these commits.
API меняется
- Новая функция
Snapshot.withoutReadObservation { ... }
был добавлен. Это позволяет пользователям запускать пропущенную Lambda, не подписываясь на изменения значений состояния, прочитанных в этом блоке. Вы можете найти его полезным в использовании, когда вы хотите извлечь выгоду из поток на основе снимка безопасной записи/чтения, но хотите иметь возможность читать значение, не вызывая ненужного переоборудования или переработки. ( I9f365 , b/214054486 ) - Свойство расширения
consumeWindowInsets
вComposeView
позволяет разработчикам отключить потребление AndroidWindowInsets
. Это позволяет отдельноComposeViews
в иерархии для каждого примененияWindowInsets
не вмешиваясь друг на друга. ( I0ef08 , b/220943142 ) - Добавлен
KeyboardType.Decimal
в качестве альтернативыKeyboard.Number
. ( IEC4C8 , B/209835363 ) -
PointerEventType.Scroll
иPointerEvent.scrollDelta
сейчас стабильные API ( i574c5 , b/225669674 ) - Включите вложенную взаимодействие прокрутки между представлением и составьте для сотрудничества классов просмотра. Это означает, что Compose теперь может отправлять прокрутки Deltas в (сотрудничающий) представление родителя. ( I5d1ac , b/174348612 )
- Обновленная
FontFamily.Resolver
для интеграции настройки доступности жирного шрифта в масштабах общесистемой ( i6c1e7 ) -
Font(AssetManager, String, ...)
устарел, замененFont(String, AssetManager, ...)
. Это экспериментальный API. ( I1c7a4 ) - Добавьте новый
Font(DeviceFontFamilyName)
в опционально поиск системных шрифтов во время запасных цепочек шрифта. ( I30468 , B/219754572 ) - Добавлена конфигурация временной совместимости для
includeFontPadding
в TextStyle/ParagraphStyle.includeFontPadding
может быть изменен с помощьюTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Это временная опция конфигурации для включения миграции и будет удален. ( If47be , b/171394808 ) - Добавить
GoogleFont.Provider.isAvailableOnDevice
расширение для отладки справки. ( I64e31 ) - Добавьте конструктор
GoogleFont.Provider
для использования с@ArrayRes
( IC5EE1 , B/225984280 ) -
Compose GoogleFont
теперь называетсяFont(GoogleFont)
, API остается стабильным в противном случае. ( I125f2 )
Исправления ошибок
- Добавлена чека для материала/каркаса, чтобы убедиться, что внутренняя прокладка используется ( IFB111 )
Version 1.2.0-alpha06
23 марта 2022 г.
androidx.compose.ui:ui-*:1.2.0-alpha06
выпускается. Version 1.2.0-alpha06 contains these commits.
API меняется
- Добавлено
RequestFocus
Semantics Action, чтобы запросить фокус на фокусируемой цели. ( I17b71 ) - Обновленное анализ векторных притяжении для поддержки автоматического зеркального зеркала, чтобы перевернуть содержание
VectorPainter
если направление текущего макета составляет RTL. ( I79cd9 , b/185760237 ) Обновленные цвета тени/окружающей среды , чтобы быть параметрами
Modifier.graphicsLayer
.Добавлены реализации по умолчанию в теневой/окружающий цвет на
GraphicsLayerScope
чтобы обеспечить непрерывные изменения APIДобавлено время мероприятия в RSB Events ( IEF8AE )
FocusOrder
в настоящее время объединен вFocusProperties
, аfocusProperties()
теперь обладает всеми возможностямиfocusOrder()
.FocusOrder
иfocusOrder()
установились.focusOrder()
, который принимаетfocusRequester
должен быть заменен модификаторомfocusRequester()
в сочетании сfocusProperties()
. Это позволяет модификаторам иметь более сильное разделение проблем. ( I601b7 )Обновление как
RecyclerView
, так иCompose
теперь приведет к гораздо лучшей производительности прокрутки для переработки с составными видами в качестве детей.Добавить
ViewCompositionStrategy.Default
как средство получения встроенной стратегии по умолчаниюДобавить
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
, которая является новой стратегией по умолчанию и правильно обрабатывает объединение контейнеров, таких как Recyclerview. ( IF7282 )Добавлена поддержка аннотирования классов аннотаций с @preview в качестве первого шага для добавления функции Multipreview. Такие аннотации могут быть использованы для аннотирования композиционных методов или других классов аннотаций, которые затем можно рассматривать как косвенно аннотированные с данным @preview. ( I12EFF )
Справочные устройства, добавленные в список устройств для @preview ( i071c9 )
Исправления ошибок
- Обновленные API -интерфейсы Vector Graphics для использования правильной композиционной аннотации @VectorCompoSable вместо @UIComposable ( i942bc )
- Снимите CrossInline с
AnnotatedString.Builder.withStyle
( IF84D5 )
External Contribution
- Compose-UI: Добавить свойства
ambientShadowColor
иspotShadowColor
вGraphicsLayerScope
( I1BA1A , B/160665122 ) - Множество ресурсов теперь поддерживаются с помощью функций
pluralStringResource
. ( IB2F23 , B/191375123 )
Version 1.2.0-alpha05
9 марта 2022 г.
androidx.compose.ui:ui-*:1.2.0-alpha05
выпускается. Version 1.2.0-alpha05 contains these commits.
Изменения API
-
TextToolbar
теперь принимает аргументы Lambda вместоActionCallback
. ( IB2EB9 , B/197950089 ) - Обновленная нулясь в Core и AppCompat в соответствии с тирамису DP2 ( I0CB7 )
- Измеренный интерфейс теперь раскрывает свойство ParentData ( i3313f )
-
Modifier.onPlaced
и интерфейсOnPlacedModifier
теперь стабильны. ( IB5482 ) - Ура! Комплекс анимации теперь поддерживает настройку «Шкала продолжительности аниматора» из параметров разработчика. ( I5a4fc , b/161675988 )
- Добавлен локальный модификатор
BeyondBoundsLayout
( IF8B51 , B/184670295 ) - Текст: включать FontPadding теперь отключается по умолчанию. Проблемы с отсечением в результате
includeFontPadding=false
обрабатывается, и для высоких сценариев не должно происходить обрезка. ( I31C84 , B/171394808 )
Исправления ошибок
-
ComposeContentTestRule.setContent
теперь выброситIllegalStateException
, если вы попытаетесь установить контент, когда уже есть контент. ( I888a5 , B/199631334 ) - Fix crash caused by clipboard content while reading from clipboard on Android. ( I06020 , b/197769306 )
- Улучшить образцы прокрутки RSB. ( I6a596 )
External Contribution
- Обновлено для использования Cotlinx Coroutines 1.6.0 ( i3366d )
Version 1.2.0-alpha04
23 февраля 2022 г.
androidx.compose.ui:ui-*:1.2.0-alpha04
выпускается. Version 1.2.0-alpha04 contains these commits.
API меняется
Добавлен
ComposableTarget
,ComposableTargetMarker
иComposableOpenTarget
, которые позволяют отчетность по времени компиляции, когда композиционная функция называется нацеленным на приложение, которое он не предназначен для использования.В большинстве случаев аннотации могут быть выведены с помощью плагина компилятора Compose, поэтому использование этих аннотаций непосредственно должно быть редким. The cases that cannot be inferred include creating and using a custom applier, abstract composable functions (such as interface methods), fields or global variables that are composable lambdas (local variables and parameters are inferred), or when using
ComposeNode
or a related composable functions .For custom appliers the composable functions that calls
ComposeNode
orReusableComposeNode
need to add aComposableTarget
annotation for the function and any composable lambda parameter types. It is recommended, however, to create an annotation that is annotated withComposableTargetMarker
and then the marked annotation be used instead ofComposableTarget
directly. A composable annotation marked withComposableTargetMarker
is equivalent to aComposbleTarget
with the fully qualified name of the attribute class as the applier parameter. For an example of usingComposableTargetMarker
seeanroidx.compose.ui.UiComposable
. ( I38f11 )Font(resId, ...)
now takes loadingStrategy on stable API. ( Ief3d2 )FontLoadingStrategy
is now stable API. ( I1ee35 , b/174162090 )Support async font loading in Text ( I77057 , b/214587005 )
Add bridge API for converting custom
Font.ResourceLoader
intoFontFamily.Resolver
. ( Ia0060 )
Исправления ошибок
- Provided
FontFamily.Resolver
are passed to subcompositions such as Popup. - Provided
Font.ResourceLoader
are passed to subcompositions such as Popup. ( I48fa5 )
Version 1.2.0-alpha03
9 февраля 2022 г.
androidx.compose.ui:ui-*:1.2.0-alpha03
is released. Version 1.2.0-alpha03 contains these commits.
API меняется
-
notifyFocusedRect
methods inTextInputSession
andTextInputService
are now deprecated and won't be called. UseBringIntoViewRequester
instead. ( Ia4302 , b/192043120 , b/216842427 , b/178211874 ) - Introduced
destroyDisplayListData
method onRenderNode
stub class ( I1e659 , b/216660268 ) - Added a new api which allows to premeasure children of
SubcomposeLayout
you precomposed. ( I857ea ) Added
movableContentOf
which converts a composable lambda into a lambda that moves it state, and corresponding nodes, to any new location it is called. When the previous call leaves the composition the state is temporarily preserved and if a new call to the lambda enters the composition then the state, and associated nodes, are moved to the location of the new call. If no new call is added the state is removed permanently and remember observers are notified.If a
movableContentOf
lambda is called multiple times in the same composition, new state and nodes are created for each call and, as calls leave the composition and new calls enter, the state is moved from the first leaving calls to the entering calls in the order they are called. All state not claimed by new calls is removed permanently. ( Ib4850 )FontFamilyResolver
is now available viaLocalFontFamilyResolver.current
Added
createFontFamilyResolver(context)
andcreateFontFamilyResolver(context, coroutineScope)
to create new FontFamily resolvers outside of compose usage.Paragraph and MultiParagraph now take
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
now contains the resolver used for this layout, deprecatedTextLayoutResult.layoutInput.resourceLoader
as it is no longer used. ( Id5a45 , b/174162090 )Support for async and optional font loading, with fallback behavior. This path is used by Text and TextField, and exposed through FontFamilyResolver
Support for preloading fonts via
FontFamilyResolver.preload
FontFamilyResolver.setAsyncLoadContext
allows setting the global coroutine context used for loading async fonts. ( I87fe8 , b/174162090 )Added
AndroidFont
, a new low-level API for providing new types of font resource descriptors on Android. For example, loading fonts from an app-specific backend, optionally locating pre-installed fonts on-device, or loading a font from a resource not provided by the current Font factories.Expanded
Font.ResourceLoaded
API to support optional and async font loading. It is not recommended that application developers use this API directly. To add new types of fonts seeAndroidFont
.Font.AndroidResourceLoader
extension function allows construction of aFont.ResourceLoader
when outside of composition.Added
loadingStrategy
parameter to resource-based fonts, to allow async loading when resource font references downloadable fonts XML. ( Ie5aea , b/174162090 )Typeface(FontFamily)
constructor is deprecated. This was previously used to preload fonts, which may take up to 10 seconds for downloadable fonts. With downloadable fonts, this call may block for 10 seconds. Instead useFontFamilyResolver.preload
.fontResource(FontFamily): Typeface
is deprecated. This was previously used to preload fonts, which may take up to 10 seconds for downloadable fonts. Instead useFontFamilyResolver.preload
( If8e7c , b/174162090 )SubcomposeLayoutState
constructor acceptingmaxSlotsToRetainForReuse
is now deprecated. Instead there is a new constructor acceptingSubcomposeSlotReusePolicy
- a new interface allowing more granular control on what slots should be retained for the future reuse. ( I52c4d )Exposes HSV and HSL function in
Color
as non-experimental API. The Oklab color space is now public API. ( I08fb6 , b/180731008 )Deprecated
AndroidComposeTestRule.AndroidComposeStatement
, which was not meant to be in public API and didn't do anything for you anyway. ( Ibc46b )Internal generated kt class rename ( Ia0b9e , b/174162090 )
Removed
FontLoadingStrategy.values
( I42a9d , b/174162090 )Global font loader is now called
FontFamilyResolver
. ( I4f773 , b/174162090 )Use new font loading system for desktop. ( I9ce5c , b/174162090 )
FontFamily.Resolver.resolve
returnsState<Any>
( I4406c , b/174162090 )
Исправления ошибок
- TextFields will now be kept above the keyboard when they are focused and the keyboard is shown, when the soft input mode is
ADJUST_PAN
. ( I8eaeb , b/190539358 , b/192043120 ) - Desktop uses composition local for
FontFamily.Resolver
- Desktop
FontLoader
is deprecated - New
createFontFamilyResolver
factory on Desktop ( I6bbbb , b/174162090 ) - The soft keyboard input type no longer flickers when changing focus between text fields. ( I1bf50 , b/187746439 )
Version 1.2.0-alpha02
26 января 2022 г.
androidx.compose.ui:ui-*:1.2.0-alpha02
is released. Version 1.2.0-alpha02 contains these commits.
API меняется
- Added
Modifier.onRotaryScrollEvent()
andModifier.onPreRotaryScrollEvent()
for wear devices with a rotating side button ( I18bf5 , b/210748686 ) - Add experimental
View.createLifecycleAwareRecomposer
extension ( I0cde6 )
External Contribution
-
PointerEvent.scrollDelta.y
is now inverted on Android (now it returns 1 instead of -1 if we tilt mouse wheel to the right) ( Ia9811 )
Version 1.2.0-alpha01
12 января 2022 г.
androidx.compose.ui:ui-*:1.2.0-alpha01
is released. Version 1.2.0-alpha01 contains these commits.
API меняется
- Deprecated
FontFamily.canLoadSynchronously
. This property has no semantic meaning. ( Ica5ef ) - Added identity field to
CompositionData
for generating invariant ids in the Layout Inspector. ( Ic116e ) - Added Wear OS device ids to Preview devices list ( I93232 )
Dependency Updates
- Now depends on Kotlin
1.6.10
.
Версия 1.1
Версия 1.1.1
23 февраля 2022 г.
androidx.compose.ui:ui-*:1.1.1
is released. Version 1.1.1 contains these commits.
Исправления ошибок
- Fix
NullPointerException
atandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
( aosp/1947059 , b/206677462 ) - Fix crash caused by clipboard content while reading from clipboard on Android. ( I06020 , b/197769306 )
- Fixed RTL in
LazyVerticalGrid
( aosp/1931080 , b/207510535 )
Version 1.1.0
9 февраля 2022 г.
androidx.compose.ui:ui-*:1.1.0
is released. Version 1.1.0 contains these commits.
Important changes since 1.0.0
- Stable support for the Android 12 Overscroll effect
- Improvements to touch target sizing
- Note that, with respect to Compose 1.0, Material components will expand their layout space to meet Material accessibility guidelines for touch target size . For instance, Button touch target will expand to a minimum size of 48x48dp, even if you set the Button's size to be smaller. This aligns Compose Material to the same behavior of Material Design Components, providing consistent behavior if you mix Views and Compose. This change also ensures that when you create your UI using Compose Material components, minimum requirements for touch target accessibility will be met.
- Stable Support for Navigation Rail
- Graduates a number of previously experimental APIs to stable
- Support for newer versions of Kotlin
Version 1.1.0-rc03
26 января 2022 г.
androidx.compose.ui:ui-*:1.1.0-rc03
is released. Version 1.1.0-rc03 contains these commits.
Исправления ошибок
- Updated to support Compose Material 1.1.0-rc03
Version 1.1.0-rc01
15 декабря 2021 г.
androidx.compose.ui:ui-*:1.1.0-rc01
is released. Version 1.1.0-rc01 contains these commits.
Исправления ошибок
- Fixed a bug that caused missing accessibility scroll actions ( I7cbfb )
-
SemanticsNodeInteraction.captureToImage()
will now also work ifHardwareRenderer.isDrawingEnabled()
isfalse
, by enabling it for the duration of the call ( Idf3d0 )
Version 1.1.0-beta04
1 декабря 2021 г.
androidx.compose.ui:ui-*:1.1.0-beta04
is released. Version 1.1.0-beta04 contains these commits.
New Features
- Updated to be compatible with Kotlin
1.6.0
API меняется
- Cleaned up nullability in
androidx.core.view
( I7078a , b/204917439 ) - Experimental APIs were added that allow users to consume PointerInputchange as a whole or check whether it was consumed or not. ( I2e59d )
- Adds support for mouse scroll wheel events in the UI layer. ( Ia14eb , b/198214718 )
- Add experimental
Modifier.composed
overloads that accept keys to compare for equality and qualify for skipping optimizations. ( Ice799 , b/205851704 ) -
ComposeNotIdleException
now extends fromException
instead of directly fromThrowable
. Note that this means that catch clauses that were catchingException
might now catchComposeNotIdleException
s, where they wouldn't do that previously. ( I9c217 )
Исправления ошибок
- Fix text handles not moving when IME visibility changes. ( I25f2e )
Version 1.1.0-beta03
17 ноября 2021 г.
androidx.compose.ui:ui-*:1.1.0-beta03
is released. Version 1.1.0-beta03 contains these commits.
Изменения API
- Added new modifier Modifier.onPlaced to allow placement change to be observed. Additional changes to child modifier's offset can therefore be made based on the observed placement change. ( I558fd )
- Removed
InjectionScope.flush()
andInjectionScope.dispose()
. Flushing of all events and disposing of the scope now happens at the end of the called perform*Input() method like before. ( I2bed8 ) - Removed
MultiModalInjectionScope.Touch
andMultiModalInjectionScope.Mouse
. In order to inject touch and mouse events for multi-modal gestures, you can now useMultiModalInjectionScope.touch()
andMultiModalInjectionScope.mouse()
, both of which accept a lambda that has the receiver scope of that modality. ( Idde18 )
Исправления ошибок
- The default value for
durationMillis
inTouchInjectionScope.swipeWithVelocity
is now calculated such that the swipe is feasible. ( I19deb )
Version 1.1.0-beta02
3 ноября 2021 г.
androidx.compose.ui:ui-*:1.1.0-beta02
is released. Version 1.1.0-beta02 contains these commits.
API меняется
- Added experimental BringIntoView API that lets you send a request to parents so that they scroll to bring an item into view ( Ib918d , b/195353459 )
- New animation APIs for supporting tooling. Specifically, they allow tooling to inspect the animations & their configurations in a Transitions. ( I4116e )
External Contribution
- Added Modifier.pointerHoverIcon ( I95f01 )
Version 1.1.0-beta01
27 октября 2021 г.
androidx.compose.ui:ui-*:1.1.0-beta01
is released. Version 1.1.0-beta01 contains these commits.
API меняется
- Added experimental
BringIntoView
API that lets you send a request to parents so that they scroll to bring an item into view ( Ib918d , b/195353459 ) - New animation APIs for supporting tooling. Specifically, they allow tooling to inspect the animations & their configurations in a Transitions. ( I4116e )
Version 1.1.0-alpha06
13 октября 2021 г.
androidx.compose.ui:ui-*:1.1.0-alpha06
is released. Version 1.1.0-alpha06 contains these commits.
API меняется
- Remove
ExperimentalComposeUiApi
fromViewRootForInspector
andLayoutInfo.ownerViewId
( I5c2e3 ) - A child-less overload for Layout was added, with improved efficiency ( Ib0d9a )
- Removed
InternalCompilerApi
from Composer methods that are required to be called cross-module ( I1aa0b ) -
SemanticsNodeInteraction.performSemanticsAction
now returns theSemanticsNodeInteraction
on which the function was called. ( I9e5db ) - Added LocalInputModeManager CompositionLocal to detect TouchMode/NonTouchMode. ( I6a83c , b/175899786 )
- Added
viewConfiguration: ViewConfiguration
toLayoutInfo
to allow consumers get the correct value for things like long press timeout. ( I76ca6 )- Added
viewConfiguration: ViewConfiguration
toInjectionScope
to allow tests to adjust input injection based on things like long press timeout or touch slop. - Changed default duration of long press and double tap for both touch and mouse input to be based on the values in
InjectionScope.viewConfiguration
.
- Added
- Implementation of ExposedDropdownMenu based on ExposedDropdownMenuBox with TextField and DropdownMenu inside ( If60b2 )
- dismissOnOutsideClick was added to PopupProperties, replacing dismissOnClickOutside which was deprecated. The new property receives the click position and the anchor bounds, providing finer control over whether onDismissRequest should be invoked or not. For example, this can be useful to prevent anchor dismissal for touches on the anchor.
- updateAndroidWindowManagerFlags was added to PopupProperties, offering low-level control over the flags passed by the popup to the Android WindowManager. The parameter of the lambda will be the flags calculated from the PopupProperties values that result in WindowManager flags: eg focusable. The result of the lambda will be the final flags which will be passed to the Android WindowManager. By default, updateAndroidWindowManagerFlags will leave the flags calculated from parameters unchanged. This API should be used with caution, only in cases where the popup has very specific behavior requirements. ( I6e9f9 )
-
Recomposer.state
has been deprecated and replaced byRecomposer.currentState
to change its type to a StateFlow ( Ic2ab3 , b/197773820 ) - Added
flush()
anddispose()
toInjectionScope
. Use them when you want to flush all queued up events immediately and when you want to dispose of the scope, respectively. ( Ifb73a ) - Added
performScrollToNode(matcher: SemanticsMatcher)
that scrolls a scrollable container to the content that is matched by the given matcher. ( Ic1cb8 ) -
InjectionScope
now implementsDensity
, allowing you to easily convert between px and dp inperformTouchInput
and friends. ( I8fe1f )
Исправления ошибок
- AndroidView now propagates LocalLifecycleOwner and LocalSavedStateRegistryOwner to its view via ViewTreeLifecycleOwner and ViewTreeSavedStateRegistryOwner. ( I38f96 , b/179708470 )
- Fix WearOS SwipeToDismissBox sometimes not handling swipes. ( I9387e )
- The default time between injected input events has been changed from 10ms to 16ms. This potentially changes the outcome of tests that perform input gestures, like a specific swipe. ( I829fd )
Version 1.1.0-alpha05
29 сентября 2021 г.
androidx.compose.ui:ui-*:1.1.0-alpha05
is released. Version 1.1.0-alpha05 contains these commits.
Изменения API
- Added support for inter-modifier communication ( Id5467 , b/198826874 )
- Added experimental historical pointers to PointerEventChange. ( Ic1fd8 , b/197553056 , b/199921305 )
- Added
density: Density
andlayoutDirection: LayoutDirection
toLayoutInfo
. This allows consumers ofLayoutInfo
to interpret the dimensions and position exposed inLayoutInfo
properly. ( I002f1 ) - Added experimental support for injecting mouse events. Use
performMouseInput
to start sending mouse events, or send mouse events through theMouse
property ofMultiModalInjectionScope
during a multi modal input gesture withperformMultiModalInput
. SeeMouseInjectionScope
for documentation of the available API. ( Iaa4a8 , b/190493367 )
Исправления ошибок
- Fixed accessibility support for scrollables (both lazy and non-lazy) with respect to scrolling ( I6cdb0 )
- Improved
TouchInjectionScope.swipeWithVelocity
. It now accepts a wider range of input variables and will suggest changes to the input if a swipe can't be created ( I40fbe , b/182477143 )
Version 1.1.0-alpha04
15 сентября 2021 г.
androidx.compose.ui:ui-*:1.1.0-alpha04
is released. Version 1.1.0-alpha04 contains these commits.
API меняется
-
PointerEvent
now has aPointerEventType
to support hover events. ( I091fa ) - Allow children to accept pointer input outside of parent's pointer input bounds. Parents may intercept those calls with a property PointerInputScope.alwaysInterceptChildEvents ( I9eae3 , b/192479655 )
- Deprecated
performGesture
andGestureScope
, which have been replaced byperformTouchInput
andTouchInjectionScope
. ( Ia5f3f , b/190493367 ) - Added
touchBoundsInRoot
toSemanticsNode
that includes the minimum touch target size so that developers can ensure that touch targets meet accessibility minimums. ( I2e14b , b/197751214 ) - Redo implementation of inspectable ( I927bc , b/191017532 )
- Changed parameter name of inspectable to match composed ( I3a482 , b/191017532 )
Introduced
performTouchInput
andTouchInjectionScope
as a replacement forperformTouchInput
andTouchInjectionScope
, paving the way for other modalities (like mouse).TouchInjectionScope
has the same methods asGestureScope
, with the exception ofmovePointerTo
andmovePointerBy
, which have been renamed toupdatePointerTo
andupdatePointerBy
. All other methods are the same.The behavior of
TouchInjectionScope
is almost identical toGestureScope
, with two small details:- When sending a down event while pointers had been moved without sending a move event (in other words,
updatePointerTo()
has been used, but notmove()
, and thendown()
is called), the previous implementation would advance the event time and send a move event before sending the down event. The new implementation still sends the move event, but doesn't advance the event time in this specific scenario. - When sending an up event while pointers had been moved without sending a move event (similar as above), the previous implementation would advance the event time and send a move event before sending the up event. The new implementation does neither: the new positions of the pointers will only be reflected through the up event.
Finally,
TouchInjectionScope
introduces a new methodcurrentPosition(pointerId: Int)
to get the current position of the given pointer. ( If1191 , b/190493367 )- When sending a down event while pointers had been moved without sending a move event (in other words,
Исправления ошибок
- Allow clip to extend touch target bounds beyond the clip region for minimum touch target purposes. ( I43e10 , b/171509422 )
- Support for stretch overscroll has been added on Android 12 devices. ( Iccf3c , b/171682480 )
Version 1.1.0-alpha03
1 сентября 2021 г.
androidx.compose.ui:ui-*:1.1.0-alpha03
is released. Version 1.1.0-alpha03 contains these commits.
New Features
- Updated Compose
1.1.0-alpha03
to depend on Kotlin1.5.30
. ( I74545 )
API меняется
- Added
Modifier.inspectable
for wrapping other modifiers. ( I1909b , b/191017532 ) - Added
BlurredEdgeTreatment
API to simplify blur use cases into more commonly used combinations of clip flags and TileModes. Most use cases involve either letting blurred content render outside the original content bounds and blurring regions outside these bounds with transparent black, or clipping content to content bounds sampling the closest edge for blur kernels that extend beyond content bounds. ( I6b4b7 , b/166927547 ) - Added support for RenderEffect in compose desktop. Introduced OffsetEffect as well as the blur modifier as a simple way to introduce blur visual effects to a portion of the composition hierarchy. ( I0f6aa , b/166927547 )
- Introduced RenderEffect API that can be optionally configured on a
Modifier.graphicsLayer
to alter the contents of the layer itself. This can be used to blur contents of a composable and child composables within a composition hierarchy. ( I47c4d , b/166927547 ) - AwaitPointerEventScope now has withTimeout() and withTimeoutOrNull() ( I507f0 , b/179239764 , b/182397793 )
- Added minimum touch target size to ViewConfiguration for use in semantics and pointer input to ensure accessibility. ( Ie861c )
- Add TileMode.Decal support which is useful in defining edge behavior for blur based RenderEffects. ( I7e8ed , b/166927547 )
-
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
andhasScrollToKeyAction
are now stable API ( I142ae , b/178483889 ) - Added test method to get the clipped bounds. ( I6b28e )
Исправления ошибок
- Removed isBounded method from BlurredEdgeTreatment in favor of explicitly checking if the shape parameter is null. ( I85d68 )
Version 1.1.0-alpha02
18 августа 2021 г.
androidx.compose.ui:ui-*:1.1.0-alpha02
is released. Version 1.1.0-alpha02 contains these commits.
API меняется
- PointerEvent now has support for reading mouse button state and keyboard modifier state. ( I6310c , b/180075467 )
- Injected gestures now use the MainTestClock's time as the source of truth for time. The current time for injected events in
performGesture
will be initialized to the current time of the MainTestClock. ( Ifb364 , b/192064452 ) - Added
DpRect(DpOffset, DpSize)
constructor ( I2cf16 , b/194219828 ) - Added DpSize class ( I7abb1 , b/194219828 )
Исправления ошибок
- Updated Vector graphics xml parsing to support ColorStateLists as root color tint properties on VectorDrawables. ( I86915 , b/195668138 )
Version 1.1.0-alpha01
4 августа 2021 г.
androidx.compose.ui:ui-*:1.1.0-alpha01
is released. Version 1.1.0-alpha01 contains these commits.
API меняется
-
RelocationRequester.bringIntoView
now accepts a rectangle as a parameter which enables us to bring a part of a composable into view ( Ice2c5 , b/194330245 ) -
AnimatedImageVector
and the related APIs are now in the newandroidx.compose.animation:animation-graphics
module. ( I60873 ) - Added experimental modifier to handle relocation requests. ( I65a97 , b/178211874 )
Introduced BrushPainter API to support drawing of an arbitrary Brush within a Painter, similar to ColorPainter
Updated Brush API to have an intrinsic size parameter that is queried within BrushPainter ( Ia2752 , b/189466433 )
Updated DrawScope#drawImage method that consumes source and destination rects to consume an optional FilterQuality parameter. This is useful for pixel art that is intended to be pixelated when scaled up for pixel based art. Updated BitmapPainter + Image composable to also consume an optional FilterQuality parameter ( Ie4fb0 , b/180311607 )
Added
GestureScope.advanceEventTime
method to give more control over the timing of events in a gesture ( Ibf3e2 )
Исправления ошибок
- In order to better support chaining of draw modifiers, make sure the Modifier.paint implementation calls drawsContent. Previously Modifier.paint was expected to a leaf node in the chain of Modifiers, however, by doing so it prevents it from being configured on a composable container (ex. box) or adding additional decorations on top such as
Modifier.paint().border()
. By having Modifier.paint call drawContent after drawing the contents of the given painter, we have better behavior consistency in behavior with the modifier pattern. ( Ibb2a7 , b/178201337 , b/186213275 ) - Dialogs now follow the platform sizing behaviour. Set
usePlatformDefaultWidth
to false to override this behaviour. ( Iffaed , b/192682388 ) - Moved
InfiniteAnimationPolicy
to :compose:ui ( I5eb09 , b/160602714 ) - Scrolling via semantics actions for lazy lists and regular scrolling components is now animated ( Id9066 , b/190742024 )
Версия 1.0
Версия 1.0.5
3 ноября 2021 г.
androidx.compose.ui:ui-*:1.0.5
is released. Version 1.0.5 contains these commits.
Исправления ошибок
- Fixed a crash tracking derivedStateOf instances. ( aosp/1792247 )
Версия 1.0.4
13 октября 2021 г.
androidx.compose.ui:ui-*:1.0.4
is released. Version 1.0.4 contains these commits.
Dependency Updates
- Updated to depend on Kotlin
1.5.31
Версия 1.0.3
29 сентября 2021 г.
androidx.compose.ui:ui-*:1.0.3
is released. Version 1.0.3 contains these commits.
Dependency Updates
- Updated to depend on Kotlin
1.5.30
Версия 1.0.2
1 сентября 2021 г.
androidx.compose.ui:ui-*:1.0.2
is released. Version 1.0.2 contains these commits.
Updated to support the Compose 1.0.2
release. Compose 1.0.2
is still compatible with Kotlin 1.5.21
.
Version 1.0.1
4 августа 2021 г.
androidx.compose.ui:ui-*:1.0.1
is released. Version 1.0.1 contains these commits.
Dependency Updates
- Updated to depend on Kotlin
1.5.21
.
Version 1.0.0
28 июля 2021 г.
androidx.compose.ui:ui-*:1.0.0
is released. Version 1.0.0 contains these commits.
Major features of 1.0.0
This is the first stable release of Compose. Please see the official Compose Release blog for more details!
Известные проблемы
If you are using Android Studio Bumblebee Canary 4 or AGP
7.1.0-alpha04
/7.1.0-alpha05
, you may hit the following crash:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
To fix, temporarily increase your minSdkVersion to 24+ in your
build.gradle
file. This issue will be fixed in the next version of Android Studio Bumblebee and AGP7.1
. ( b/194289155 )
Version 1.0.0-rc02
14 июля 2021 г.
androidx.compose.ui:ui-*:1.0.0-rc02
is released. Version 1.0.0-rc02 contains these commits.
Исправления ошибок
- Dialogs now follow the platform sizing behaviour. Set
usePlatformDefaultWidth
to false to override this behaviour. ( Iffaed , b/192682388 )
Version 1.0.0-rc01
1 июля 2021 г.
androidx.compose.ui:ui-*:1.0.0-rc01
is released. Version 1.0.0-rc01 contains these commits.
New Features
- Split ui-tooling module into
ui-tooling
andui-tooling-preview
( Iefa28 , b/190649014 )
API меняется
- Removed deprecated experimental
FocusManager#moveFocusIn
andFocusManager#moveFocusOut
( I227d7 , b/170154986 , b/186567354 , b/168510304 ) - Canvas now supports a contentDescription parameter for accessibility. ( Ib547c )
-
useDefaultMaxWidth
inPopupProperties
was renamed tousePlatformDefaultWidth
. ( I05710 ) - Dialogs are now able to use the entire screen width. ( I83929 , b/190810877 )
- Added experimental support for HSV and HSL color representations. ( Id7cf8 , b/180731008 )
Изменения поведения
- Compose
@Preview
now provides aLocalActivityResultRegistryOwner
that allows you to preview Composables that use APIs likerememberLauncherForActivityResult()
that depend on that owner existing. ( Ib13d1 , b/185693006 ) - Compose
@Preview
now provides aLocalOnBackPressedDispatcherOwner
that allows you to preview Composables that use APIs likeBackHandler
that depend on that owner existing. ( Ia1c05 , b/185693006 )
Исправления ошибок
- Moved
InfiniteAnimationPolicy
toandroidx.compose.ui:ui
( I5eb09 , b/160602714 ) - AnimatedImageVector was temporarily removed in order to change the module structure. ( I41906 , b/160602714 )
Version 1.0.0-beta09
16 июня 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta09
is released. Version 1.0.0-beta09 contains these commits.
API меняется
- Change enum Role and LiveRegionMode into inline classes with private constructor ( Id1890 )
- KeyboardCapitalization is converted into an inline class. ( Id5a1c )
- Change HapticFeedbackType to inline class. ( I255ec )
- Modifier.pointerInteropFilter is @ExperimentalComposeUiApi. ( Iede6c )
- TextAlign, FontSynthesis and TextDirection are now inline classes. ( I212fe )
- TextOverflow is changed to an inline class. ( I433af )
- FontStyle is now an inline class. ( I9e48b )
Исправления ошибок
- Key constants are @ExperimentalComposeUiApi for now. Consuming code can declare private constants prior to stabilization. ( Ia5d48 )
- Compose tests can now be run on Robolectric. The following limitations have so far been identified:
- There is no native bitmap, so
ImageBitmap()
leads to a NullPointerException. - There is no drawing, so
captureToImage()
will indefinitely await the next draw pass (ie it deadlocks). - There is no font loaded, so any text will be measured incorrectly. All characters have a fixed height of around 20px and width of 1px.
-
ComposeTestRule.waitUntil {}
does not run the main thread while it's waiting, making it effectively the same asComposeTestRule.mainClock.advanceTimeUntil {}
More limitations are expected to be identified in the future. ( I284fa )
- There is no native bitmap, so
Added Profile Rules
This release adds profile rules to the following compose modules ( 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
What are profile rules?
Profile rules for a library are specified in a text file
baseline-prof.txt
located in thesrc/main
or equivalent directory. The file specifies a rule per line, where a rule in this case is a pattern for matching to methods or classes in the library. The syntax for these rules is a superset of the human-readable ART profile format that is used when usingadb shell profman --dump-classes-and-methods ...
. These rules take one of two forms to target either methods or classes.A method rule will have the following pattern:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
And a class rule will have the following pattern:
<CLASS_DESCRIPTOR>
Here
<FLAGS>
is one or more of the charactersH
,S
, andP
to indicate whether or not this method should be flagged as "Hot", "Startup", or "Post Startup".The
<CLASS_DESCRIPTOR>
is the descriptor for the class that the targeted method belongs to. For example, the classandroidx.compose.runtime.SlotTable
would have a descriptor ofLandroidx/compose/runtime/SlotTable;
.The
<METHOD_SIGNATURE>
is the signature of the method, and includes the name, parameter types, and return types of the method. For example, the methodfun isPlaced(): Boolean
onLayoutNode
has the signatureisPlaced()Z
.These patterns can have wildcards (
**
,*
, and?
) in order to have a single rule encompass multiple methods or classes.
What do the rules do?
A method that has the flag
H
indicates that this method is a "hot" method, and should be compiled ahead of time.A method that has the flag
S
indicates that it is a method which is called at startup, and should be compiled ahead of time to avoid the cost of compilation and interpreting the method at startup time.A method that has the flag
P
indicates that it is a method which is called after startup.A class that is present in this file indicates that it is used during startup and should be pre-allocated in the heap to avoid the cost of class loading.
Как это работает?
- Libraries can define these rules which will be packaged in AAR artifacts. When an app is then built which includes these artifacts, these rules are merged together and the merged rules are used to build a compact binary ART profile that is specific to the app. ART can then leverage this profile when the app is installed on devices in order to ahead-of-time compile a specific subset of the application to improve the performance of the application, especially the first run. Note that this will have no effect on debuggable applications.
Version 1.0.0-beta08
2 июня 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta08
is released. Version 1.0.0-beta08 contains these commits.
Изменения API
-
NestedScrollSource
enum is replaced by an inline class. ( Ie321b , b/187055290 ) -
FocusManager.clearFocus(forcedClear = true)
is renamed toFocusManager.clearFocus(force = true)
( Ia0c41 ) - Refactored enum usages to inline classes to avoid issues with exhaustive when statements when new enum values are added. ( I2b5eb )
- Remove
@ExperimentalComposeUiApi
fromPopupProperties
. ( I01fa6 ) -
PointerType
was changed from an enum to an inline class ( If5058 ) - ContentDescription and Text semantics properties are no longer single values but lists. This enables to merge them as they are instead of concatenations. Also provided better testing APIs to utilize these changes ( Ica6bf , b/184825850 )
-
Modifier.focusModifier()
is deprecated and replaced byModifier.focusTarget()
( I6c860 ) -
Modifier.onSizeChanged()
andModifier.onGloballyPositioned()
are not inlined functions anymore ( I727f6 , b/186109675 ) -
KeyboardType
enum is replaced by an inline class. ( I73045 , b/187055290 ) - Replaced
FocusState
enum with aFocusState
interface ( Iccc1a , b/187055290 ) - ImeAction enum is replaced by an inline class. ( I18be5 , b/187055290 )
-
PlaceholderVerticalAlign
is converted into an inline class. ( If6290 ) - TextUnitType is an inline class now. ( I4cba9 )
-
AnnotatedString.withAnnotation
functions are now ExperimentalTextApi instead of ExperimentalComposeApi. ( I0cd0a )- TextUnit constructor with TextUnitType is now ExperimentalTextApi instead of ExperimentalComposeApi.
Исправления ошибок
- Fixed the bug introduced in beta07 where LazyColumn/Row items were displayed partially after the scroll ( I8c9ac , b/188566058 )
- Now
detectDragGesures
,detectVerticalGestures
, anddetectHorizontalGestures
will consume the position change automatically, no need to call change.consumePositionChange in the onDrag callbacks ( I42fc4 , b/185096350 , b/187320697 ) - LayoutModifiers providing alignment lines was fixed. A bug causing the parent not being remeasured when the alignment lines of the children were changing was fixed. ( I4401f , b/174315652 )
-
Modifier.onGloballyPositioned()
was changed to report the coordinates of this modifier in the modifier chain, not the layout coordinates after applying all the modifiers. This means that now the ordering of modifiers is affecting what coordinates would be reported. ( Ieb67d , b/177926591 )
Version 1.0.0-beta07
18 мая 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta07
is released. Version 1.0.0-beta07 contains these commits.
API меняется
- Added
ViewRootForInspector
interface for use in inspector ( Ib70df ) -
SubcomposeLayoutState
now supports setting count of reusable slots. The layout will keep up to this count slots active instead of disposing them in order to reuse the slot next time we need a new one ( Ieb981 ) - KeyEventType enum is replaced by an inline class. ( Id670a , b/187055290 )
-
FocusDirection
enum is replaced by an inline class. ( Ib6d03 , b/187055290 , b/184086802 ) - Introduces ability to hoist the SubcomposeLayout state which allows you to precompose the content into a requires slotId which would make the next measure pass faster as once we try to subcompose with the given slotId next time there will be no composition needed. ( I42580 , b/184940225 )
- Added Clip Selection Handle ( Iff80d , b/183408447 )
- Removed unused APIs related to LayoutInspector support. ( I2ac78 )
Исправления ошибок
- LazyColumn/Row will now keep up to 2 previously visible items active (not disposed) even when they are scrolled out already. This allows the component to reuse the active subcompositions when we will need to compose a new item which improves the scrolling performance. ( Ie5555 )
-
TextGeomerticTransform
andTextDecoration
onAnnotatedString
will be applied as given. ( I61900 , b/184760917 )
Version 1.0.0-beta06
5 мая 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta06
is released. Version 1.0.0-beta06 contains these commits.
API меняется
- Solve Conflict with Navigation Gesture ( I1145e )
-
@ComposeCompilerApi
no longer@RequiresOptIn
( Iab690 ) - Added CollectionInfo and CollectionItemInfo accessibility APIs that allows to mark collection and its items for accessibility services ( Id54ef , b/180479017 )
- Added
SemanticsActions.ScrollToIndex
to scroll a list with indexed items to the item with a certain index, andSemanticsProperties.IndexForKey
to get the index of an item in a list with keyed items. Both actions are implemented by LazyList.- Added
SemanticsNodeInteraction.performScrollToIndex
that scrolls a list to the given index, andSemanticsNodeInteraction.performScrollToKey
that scrolls a list to the item with the given key. ( I4fe63 , b/178483889 , b/161584524 )
- Added
- Added ownerViewId to GraphicLayerInfo ( I19f62 )
- Added Font() overloads to load fonts from assets, File and FileDescriptor ( I5d382 )
- Added accessibility API
error
that allows to mark a node that contains invalid input ( I12997 , b/180584804 , b/182142737 ) - Added
Font()
overloads to load fonts from assets, File and FileDescriptor ( I43007 ) - AnnotatedString save support to
TextFieldValue.Saver
. AddedaddTtsAnnotation
and withAnnotation utility functions toAnnotatedString.Builder
( I8cbdc , b/178446304 ) - Added TextUnit constructor function
TextUnit(value: Float, type: TextUnitType)
( I7ecce , b/178446304 )
Version 1.0.0-beta05
21 апреля 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta05
is released. Version 1.0.0-beta05 contains these commits.
API меняется
- Added experimental
FocusManager.moveFocus(In)
andFocusManager.moveFocus(Out)
( Ic5534 , b/183746743 ) - Added experimental
performTextInputSelection
API ( I2dcbb , b/178510628 ) -
InputEventCallback
interface is deprecated. It was not possible to use the interface in any public API; and there was no usage of it in the code. ( I34a02 , b/184003208 ) - Deprecated
TextLayoutResult/createTextLayoutResult
function. It is an unused public function which was added for testing. The function does not do anything usable for Compose text APIs. The function is now deprecated and will be removed later. ( I80413 )
Исправления ошибок
- Fixed
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
andaccessibilityActionScrollDown
accessibility scroll actions. Instead of scrolling to the end of the scrollable, it will now scroll by one screen in the given direction. ( Ieccb0 ) - The AndroidManifest files from ui-test-manifest and ui-tooling-data are now compatible with Android 12 ( I6f9de , b/184718994 )
Version 1.0.0-beta04
7 апреля 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta04
is released. Version 1.0.0-beta04 contains these commits.
API меняется
- Rename
hideSoftwareKeyboard
andshowSoftwareKeyboard
onSoftwareKeyboardController
tohide()
andshow()
respectively.- Provide the full CompositionLocal interface for LocalSoftwareKeyboardController, allowing it to be set (especially useful in tests) ( I579a6 )
- LiveRegion accessibility API is added. If node is marked as a live region, the accessibility services will automatically notify the user about its changes ( Idcf6f , b/172590946 )
- TextOverflow.Visible is introduced. ( Ic8f89 )
Исправления ошибок
- Fixed the issue when items of
LazyColumn
/LazyRow
located on the edges were incorrectly positioned after fast fling ( Ie4d13 , b/183877420 ) -
AndroidViewBinding
now properly removes fragments inflated viaFragmentContainerView
when theAndroidViewBinding
is removed from the compose hierarchy. ( Ib0248 , b/179915946 ) -
AndroidViewBinding
now correctly nests fragments inflated viaFragmentContainerView
when yourComposeView
is within aFragment
, fixing issues with saving and restoring the state of those fragments. ( I70eb0 , b/179915946 ) - Compose ViewBinding now depends on Fragment
1.3.2
and now consistently shows fragments inflated viaFragmentContainerView
after configuration changes. ( I0743d , b/179915946 )
Version 1.0.0-beta03
24 марта 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta03
is released. Version 1.0.0-beta03 contains these commits.
API меняется
- Deferred check for ViewTree dependencies of ComposeView ( I8dbbf , b/182466548 )
- Added optional
startX
/endX
andstartY
/endY
parameters toswipeUp
/swipeDown
/swipeLeft
/swipeRight
functions inGestureScope
. ( I49e2d , b/182063305 )
Version 1.0.0-beta02
10 марта 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta02
is released. Version 1.0.0-beta02 contains these commits.
API меняется
- Added new
LocalSoftwareKeyboardController
composition local API to replace previous SoftwareKeyboardController interface on TextField. ( I5951e , b/168778053 ) - Added new
LocalSoftwareKeyboardController
composition local API to replace previous SoftwareKeyboardController interface on TextField. ( I84472 , b/168778053 ) - Removed the following
SemanticsMatcher
s:-
hasWidth(width, tolerance)
-
hasHeight(height, tolerance)
-
hasLeftPosition(left, tolerance)
-
hasTopPosition(top, tolerance)
-
hasRightPosition(right, tolerance)
-
hasBottomPosition(bottom, tolerance)
( If16bd )
-
- Marked the following
SemanticsMatchers
as @ExperimentalTestApi:-
hasWidth(width, tolerance)
-
hasHeight(height, tolerance)
-
hasLeftPosition(left, tolerance)
-
hasTopPosition(top, tolerance)
-
hasRightPosition(right, tolerance)
-
hasBottomPosition(bottom, tolerance)
( Ia600c )
-
- Added the following
SemanticsMatcher
s:-
hasWidth(width, tolerance)
-
hasHeight(height, tolerance)
-
hasLeftPosition(left, tolerance)
-
hasTopPosition(top, tolerance)
-
hasRightPosition(right, tolerance)
-
hasBottomPosition(bottom, tolerance)
( I2f502 )
-
Исправления ошибок
- Enforce restrictions on public usage of experimental APIs ( I6aa29 , b/174531520 )
-
androidx.compose.ui:ui
no longer depends on AppCompat or Fragment. If you are using a ComposeView in your application, and you are using Fragment and/or AppCompat, make sure that you are using AppCompat 1.3+ / Fragment 1.3+ - these versions are needed to correctly set lifecycle and saved state owners required for ComposeView. ( I1d6fa , b/161814404 ) - Fix for broken
rememberSaveable { mutableStateOf(0) }
when used inside a destination of navigation-compose. ( I1312b , b/180042685 , b/180701630 ) - Added new
LocalSoftwareKeyboardController
composition local API to replace previous SoftwareKeyboardController interface on TextField. ( I658b6 , b/168778053 ) - Fixed rare NoSuchElementException in
ComposeRootRegistry
'stearDownRegistry()
( Iddce1 )
Version 1.0.0-beta01
24 февраля 2021 г.
androidx.compose.ui:ui-*:1.0.0-beta01
is released. Version 1.0.0-beta01 contains these commits.
This is the first release of Compose 1.0.0 Beta.
API меняется
- onStart callback has been added to
detectDragGestures
( I67269 , b/179995594 ) - Modifiers for sizing to intrinsics are no longer experimental. ( I15744 )
- MeasureBlocks was renamed to MeasurePolicy which became a fun interface. Layout APIs were updated / simplified to use MeasurePolicy. ( Icab48 , b/167662468 , b/156751158 )
-
InteractionState
has been replaced with[Mutable]InteractionSource
- Interfaces are responsible for emitting / collecting Interaction events.
- Instead of passing
interactionState = remember { InteractionState() }
to components such asButton
andModifier.clickable()
, useinteractionSource = remember { MutableInteractionSource() }
. - Instead of:
Interaction.Pressed in interactionState
you should instead use the extension functions on InteractionSource, such as InteractionSource.collectIsPressedAsState(). - For complex use cases you can use InteractionSource.interactions to observe the stream of Interactions. See the InteractionSource documentation and samples for more information.
- ( I85965 , b/152525426 , b/171913923 , b/171710801 , b/174852378 )
- Add AccessibilityMananger interface and LocalAccessibilityMananger in CompositionLocals ( I53520 )
- Removed deprecated LayoutCoordinates methods, use function instead of the property for positionInParent and boundsInParent ( I580ed , b/169874631 , b/175142755 )
- Typealiases replaced by underlying types:
-
ColorStop
is nowPair<Float, Color>
-
SpanStyleRange
is now `AnnotatedString.Range -
ParagraphStyleRange
is nowAnnotatedString.Range<ParagraphStyle>
-
StringAnnotation
is nowAnnotatedString.Range<String>
- ( I8dd1a )
-
- Created new TextInputSession for input sessions from low level text components such as CoreTextField. ( I8817f , b/177662148 )
- Placeable now exposes measuredSize, representing the size which the child layout actually measured to. This size might not respect the measurement constraints. ( Ib2729 , b/172560206 , b/172338608 )
- Add selectionGroup modifier that allows to mark collection of Tabs or RadioButtons for accessibility purposes ( Ie5c29 )
The
defaultFactory
forcompositionLocalOf
andstaticCompositionLocalOf
is now required instead of optional.This changes removes a potential type error for non-nullable types where no default factory was provided. Previously this would provide a null reference for a non-nullable type.
For nullable types consider supplying
{ null }
as the default factory.We do not recommend using locals with non-nullable types unless a sensible default can be provided. If no sensible default exists, the
defaultFactory
lambda should throw an exception. However throwing an exception means that consumers of the local will have an implicit dependency on it being provided that is not enforced by the type system. ( Ifbd2a )Deprecated methods from ui modules were removed ( I646f6 )
Size modifiers were renamed. Modifier.width/height/size were renamed to requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize were renamed to width/height/size. ( I5b414 )
Modifier.tapGestureFilter
has been removed. UseModifier.pointerInput { detectTapGestures(...) }
instead. ( I266ed , b/175294473 )partial consumption was removed from pointer input system. The recommended way of coordinating partial consumtion is Modifier.nestedScroll. ( Ie9c9b )
Orientation has been moved to foundation package. VelocirtTracker moved from ui.gesture to ui.input.pointer. ( Iff4a8 , b/175294473 )
imageResource and vectorResource are now extension functions on ImageBitmap and ImageVector companions respectively.
load{Image,Vector,Font}Resource
functions have been deleted. ( I89130 )AnimationClockObservable and subclasses have been removed. AnimatedFloat has been removed. ( Icde52 , b/177457083 )
Providers has been renamed to CompositionLocalProvider
- The Composition constructor no longer accepts a key parameter, and has been deprecated.
- currentCompositeKeyHash has been turned into a composable top level property instead of a composable top level function.
- CompositionData and CompositionGroup have been moved to the androidx.compose.runtime.tooling namespace
- ComposableLambda has been made an interface instead of a concrete class, and no longer has type parameters.
- ComposableLambdaN has been made an interface instead of a concrete class, and no longer has type parameters.
- The snapshotFlow function has been moved to the androidx.compose.runtime namespace
- the merge method of SnapshotMutationPolicy is no longer experimental
- The @TestOnly top level clearRoots function has been removed. В этом больше нет необходимости.
- keySourceInfoOf and resetSourceInfo functions have been removed. They are no longer necessary.
- Composer.collectKeySourceInformation has been removed. В этом больше нет необходимости.
- isJoinedKey, joinedKeyLeft, and joinedKeyRight methods have been removed. They are no longer necessary.
- Various top level APIs have been moved and reorganized into different files. Due to Kotlin's file class semantics, this will break binary compatibility but not source compatibility, so should not be an issue for most users.
- ( I99b7d , b/177245490 )
ComponentActivity.setContent()
was removed from compose:ui. Use the one fromandroidx.activity:activity-compose:1.3.0-alpha01
.viewModel()
andLocalViewModelStoreOwner
were removed from compose:ui. Use the ones fromandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
( I6f36b )Modifier.scrollable has been reworked. Now it uses Scrollable interface instead of ScrollableController class ( I4f5a5 , b/174485541 , b/175294473 )
CustomEvens support from PointerInputModifier has been removed ( I02707 , b/175294473 )
SnapshotStateObserver is not Experimental anymore ( Id2e6a )
Deleted some previously deprecated APIs ( Ice5da , b/178633932 )
longPressGestureFilter and doubleClickGestureFilter have been removed. use Modifier.pointerInput with helper functions eg detectTapGestures ( I2fedf , b/175294473 )
Removed String.format API refactored usages in various toString methods to not leverage String.format internally. ( Id1290 )
Removed dp assertions ( I798d2 )
Removed androidx.compose.runtime:runtime-dispatch ( I55feb )
Text actions now check focus automatically ( I13777 , b/179648629 )
Removed
runBlockingWithManualClock
( I15cdc , b/179664814 )Scroll position in Modifier.verticalScroll()/horizontalScroll() is represented with Ints now ( I81298 )
FlingConfig has been renamed to FlingBehavior now allows for customization of suspend animation rather than predefined Decays. ( I02b86 , b/175294473 )
Added a helper function that is helpful to set the same action for all ImeAction callbacks ( I63447 , b/179226323 )
Removed SoftwareKeyboardController callback from all text fields to be replaced by a new API shortly. ( Iae869 , b/168778053 )
FontSpan and FontWeigthStyleSpan are no longer used and removed. ( Ie5b56 , b/177423444 )
Made the following Material API changes:
- Added contentPadding parameter to Top/BottomAppBar to allow customizing the default padding.
- Reordered parameters in BackdropScaffold to follow API guidelines for required parameters being before optional parameters.
- Moved
icon
parameter in BottomNavigationItem to be afterselected
andonClick
. - Renamed
alwaysShowLabels
parameter in BottomNavigationItem toalwaysShowLabel
. - Renamed
bodyContent
parameters in a few components to justcontent
. - Reordered parameters in
ButtonDefaults.buttonColors()
. Please note that because the type of the parameters have not changed, this will not cause an error in your code - please ensure you are either using named parameters or update the ordering manually, otherwise your code will not work the same as previously. - Added
secondaryVariant
parameter todarkColors()
. This color is typically the same assecondary
in dark theme, but adding for consistency and further customization. - Removed ElevationDefaults and animateElevation() from the public API surface since they were not commonly used / useful.
- Renamed
onValueChangeEnd
inSlider
toonValueChangeFinished
and made it nullable. - Renamed
text
parameter inSnackbar
tocontent
for consistency. - Added
contentPadding
parameter toDropdownMenuItem
to allow customizing the default padding and madecontent
be an extension onRowScope
. - Renamed
ModalDrawerLayout
toModalDrawer
. - Renamed
BottomDrawerLayout
toBottomDrawer
. - ( I1cc66 )
Исправления ошибок
- Added API to use AnimatedVectorDrawable resources in Compose. Use animatedVectorResource to load an
<animated-vector>
XML as an AnimatedImageVector and animate it with painterFor ( I8ea91 ) - Added new LocalSoftwareKeyboardController composition local API to replace previous SoftwareKeyboardController interface on TextField. ( I658b6 , b/168778053 )
Version 1.0.0-alpha12
10 февраля 2021 г.
androidx.compose.ui:ui-*:1.0.0-alpha12
is released. Version 1.0.0-alpha12 contains these commits.
Изменения API
- Support for ViewGroups was removed from UiApplier. The Deprecated emitView composables were removed. ( Ifb214 )
- Modifier.pointerInput now requires remember keys to indicate when the pointer input detection coroutine should restart for new dependencies. ( I849cd )
- CompositionReference renamed to CompositionContext ( I53fcb )
- Bounds has been renamed to DpRect ( I4b32a )
- Testing update: hasText() will check for both input and label/hint/placeholder texts in the text field ( Iab803 )
- viewModel() composable and LocalViewModelStoreOwner were moved to androidx.lifecycle.viewmodel.compose. You will now need to add a separate dependency androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 in order to use it. ( I7a374 )
- Allow nullable action in AccessibilityAction, change action label in AccessibilityAction and CustomAccessibilityAction from CharSequence to String ( I0dc82 )
- In order to better match naming conventions with ImageBitmap and ImageVector, ImagePainter has been renamed to BitmapPainter to parallel VectorPainter. ( Iba381 , b/174565889 )
- Better substring test APIs with substring now as an argument ( Icbe78 )
- Added an
Modifier.focusOrder()
that accepts a FocusRequester without specifying a custom focus order a lambda. This is useful when we only need to specify a reference but not a custom focus order for a composable ( I4f52a , b/179180978 ) - ComponentActivity.setContent has moved to androidx.activity.compose.setContent in the androidx.activity:activity-compose module. ( Icf416 )
- Destructuring and copy() methods have been removed from several classes where they were rarely used. ( I26702 , b/178659281 )
- Moved Popup to be platform specific. AndroidPopupProperties has been renamed to PopupProperties, and
isFocusable
has been moved to afocusable
parameter inPopupProperties
( Ieeea5 ) - Moved Dialog to be platform specific. Renamed AndroidDialogProperties to DialogProperties. ( I4ef69 , b/179138130 )
- Made LayoutNode internal ( I8a7b1 , b/175103944 )
- Constraints.enforce was replaced with Constraints.constrain. ( I8b8ea )
- loadFontResource is deprecated. Use fontResource instead. imageResource, loadImageResource, vectorResource, and loadVectorResource are deprecated. Use painterResource instead. ( I6b809 )
- For performance reasons, ScrollAxisRange semantics now takes lambdas returning Floats instead of direct Float values. ( If4a35 , b/178657186 )
- Added EditableText semantics to mark editable input text of the text field for accessibility and corresponding test methods to check the semantics ( I8e07a )
- Made OwnerLayer/OwnerScope/OwnerSnapshotObserver internal ( I4ffaf , b/175103944 )
- toIntPx() was renamed to roundToPx(). ( I9b7e4 , b/173502290 )
- IntBounds was renamed to IntRect and the API was improved. ( I1f6ff )
- Snapshot API was updated to be more consistent with API guideline as well as hiding internal implementation classes from the public API. ( Id9e32 )
- Added expand and collapse semantics actions. Added expand and halfExpand in ModalBottomSheetState ( Ib5064 )
- Modifier.dragGestureFilter has been deprecated. Use
Modifier.pointerInput { detectDragGestures (...)}
instead. Alternatively, use Modifier.draggable for one axis drags ( I0ba93 , b/175294473 ) - Renamed Ambients to match the Ambient -> CompositionLocal rename. Ambients used to be named AmbientFoo, now CompositionLocals are named LocalFoo. ( I2d55d )
- The deprecated BaseTextField is now removed. Use BasicTextField instead. ( I71368 )
- Selection was moved to foundation. ( I7892b )
- Similarly to how we previously removed
state { 0 }
composable and now promote usage likeremember { mutableStateOf(0) }
we are going to removesavedInstanceState { 0 }
composable. You should userememberSaveable { mutableStateOf(0) }
instead and it will save and restore automatically if the type used inside the MutableState can be stored in the Bundle. If previously you were passing a custom saver object now you need to use a new overload of rememberSaveable which hasstateSaver
parameter. The usage will look like this:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
( Ib4c26 , b/177338004 ) - Added password semantics for accessibility ( I231ce )
- Added ProgressBarRangeInfo.Indeterminate to mark indeterminate progress bars for accessibility ( I6fe05 )
-
emptyContent()
and(@Composable () -> Unit).orEmpty()
utilities have been deprecated as they no longer have any positive performance impact or value ( I0484d ) -
snapshotFlow
andwithMutableSnapshot
are no longer experimental ( I6a45f ) - Recomposers can now be closed. Closed recomposers will continue recomposition until composition child coroutines complete. Recomposer.shutDown renamed to cancel to contrast with close. ( Ib6d76 )
- UiSavedStateRegistry was renamed to SaveableStateRegistry, AmbientUiSavedStateRegistry was renamed to AmbientSaveableStateRegistry and both moved to androidx.compose.runtime.saveable package. ( I30224 )
- Artefact androidx:compose:runtime:runtime-saved-instance-state was renamed to androidx:compose:runtime:runtime-saveable ( I6dcac )
- Many longstanding deprecated APIs in the ui package are deleted. ( I2f2dc )
- The compose:runtime-dispatch artifact is now deprecated. MonotonicFrameClock can now be found in compose:runtime and AndroidUiDispatcher can be found in compose:ui. ( Ib5c36 )
- Outline.* classes are not data classes anymore ( I4879e , b/178001427 )
- Removed
view.captureToImage()
without any replacement. ( I7fcd2 ) - Introduced ColorMatrix API used to modify rgb values of source content Refactored ColorFilter API to be an interface and match the implementation of PathEffect. ( Ica1e8 )
- Add layoutDirection param to Shape's createOutline. This allows to create layout direction aware shapes. ( I57c20 , b/152756983 )
- onImeActionPerformed is deprecated. use KeyboardActions instead ( If0bbd , b/179071523 )
- Introduced an
InfiniteAnimationPolicy
coroutine context element that will be applied in infinite animations. By default no policy is installed, except when running tests withComposeTestRule
. ( I50ec4 , b/151940543 ) - canDrag has been removed from the Modifier.scrollable. ( Id66e7 , b/175294473 )
- Renamed LayoutCoordinates.parentCoordinates to LayoutCoordinates.parentLayoutCoordinates to allow for a new parentCoordinates property. The parentCoordinates property now offers the parent modifier's LayoutCoordintes. This will make for more complete use cases for onSizeChanged() and onGloballyPositioned() ( Idfbfd , b/177926591 )
- tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter and pressIndicaitonGestureFilter have been deprecated. Use Modifier.clickable or Modifier.pointerInput with detectTapGestures function instead. ( I6baf9 , b/175294473 )
- SaveableStateRegistry's unregisterProvider was removed. Instead registerProvider() now returns SaveableStateRegistry.Entry object which you can use to unregister ( Ic4274 , b/178583739 )
- rememberSavedInstanceState() was renamed to rememberSaveable() and moved to androidx.compose.runtime.saveable package. ( I1366e , b/177338004 )
- Removed CoreText and CoreTextField from public API
- Removed deprecated SelectionContainer overload
- ( I99c19 )
- Tests in which Compose is used in hierarchies that are added/removed directly to the WindowManager are now more stable. ( Ie81ed , b/175765614 )
- Removed Recomposer.current(). [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. Recomposition and withFrameNanos-based animation ticks are paused while the host Lifecycle is stopped. ( I38e11 )
- Recomposer.runningRecomposers now offers a global StateFlow of read-only RecomposerInfo for observing ongoing composition state in the process. Prefer this API to Recomposer.current(), which is now deprecated. ( If8ebe )
- Saver, listSaver(), mapSaver(), autoSaver was moved from androidx.compose.runtime.savedinstancestate to androidx.compose.runtime.saveable ( I77fe6 )
- EditCommands accept AnnotatedString. However this is an API only change and multi-style text editing is not implemented yet. ( I4c3ea )
- Uptime and Duration have been removed. ( Ib9bf4 , b/177420019 )
- CompositionData.asTree() and related APIs moved to separate ui-tooling-data module and marked as experimental ( Ic95b8 )
- Parameters on RounderCornerShape, CutCornerShape and CornerBasedShape were renamed from left/right to start/end in order to support the shape's auto mirroring in the rtl direction. AbsoluteRounderCornerShape and AbsoluteCutCornerShape were introduced for the cases when auto-mirroring is not desired. ( I61040 , b/152756983 )
The API the Compose compiler plugin targets has been refactored to use an interface instead of a concrete class. The interface also no longer uses a type parameter.
This is an internal change that should not effect source code compatibility but is a binary breaking change. ( I3b922 , b/169406779 )
Remove unintentionally public StringBuilder.deleteAt function ( Id6ed9 )
Исправления ошибок
- ComposeViews placed in view hierarchies that are children of another composition now host child compositions of their ancestors ( I92883 )
- Updated compose's imageFromResource API to reuse the resource drawable cache when loading ImageBitmap objects. ( If3627 , b/178751994 )
Version 1.0.0-alpha11
28 января 2021 г.
androidx.compose.ui:ui-*:1.0.0-alpha11
is released. Version 1.0.0-alpha11 contains these commits.
API меняется
- WithConstraints was reworked as BoxWithConstraints and moved to foundation.layout. ( I9420b , b/173387208 )
- Key.DPadUp is deprecated. Use Key.DirectionUp instead. ( Iab335 , b/177954892 )
- Owner interface from now on internal. ( If8e35 )
- Added FocusManager.moveFocus() API to move focus programmatically. ( I045cb , b/177681839 )
- Changes PopupPositionProvider to use window-relative coordinates, not global coordinates. Renames parentGlobalBounds to anchorBounds, and changes windowGlobalBounds to be windowSize: IntSize ( I2994a )
- Duration and Uptime will be replace with Long milliseconds, and this step removes the dependency of pointer input on those classes. ( Ia33b2 , b/175142755 , b/177420019 )
- AmbientSavedStateRegistryOwner was added similarly to already existing AmbientLifecycleOwner and AmbientViewModelStoreOwner ( I9a3e8 , b/176756365 )
- Updated vector graphics API to support parsing of tinting applied to the root of vector graphics. ( Id9d53 , b/177210509 )
- Added toolType to PointerInputChange to differentiate devices ( Iac787 , b/175142755 )
- AmbientWindowManager is renamed to AmbientWindowInfo ( I2686a , b/177084714 , b/177084983 )
- Deprecated global coordinates methods and made new window-based coordinates methods. ( Iee284 )
- Added Modifier.toolingGraphicsLayer which adds a graphics layer modifier when inspection is turned on. ( I315df )
- FocusRequester.createRefs is now marked as experimental as it might change. ( I2d898 , b/177000821 )
- SemanticsPropertyReceiver.hidden was renamed to invisibleToUser and marked @ExperimentalComposeUiApi. AccessibilityRangeInfo was renamed to ProgressBarRangeInfo. stateDescriptionRange was renamed to progressBarRangeInfo. AccessibilityScrollState was renamed to ScrollAxisRange. horizontalAccessibilityScrollState was renamed to horizontalScrollAxisRange. verticalAccessibilityScrollState was renamed to verticalScrollAxisRange. ( Id3148 )
- Removed PointerInputData and modified PointerInputChange to give it all of PointerInputData's fields. Made PointerInputEvent and PointerInputEventData internal because they aren't used in any public API. ( Ifff97 , b/175142755 )
- Updated GraphicsLayerScope implement density to support conversions of dp into raw pixels. ( Ied528 , b/176819695 )
- Updated matrix API to follow row major ordering and provide index constants to assist with conversions between different matrix representations to match framework conversion logic between SkMatrix and Matrix4 internally. ( I432e6 )
- Removed experimental monotonicFrameAnimationClockOf methods ( Ib753f , b/170708374 )
- Move String.fintPrecedingBreak and String.fingFollowingBreak to InternalTextApi. ( I657c4 )
- androidx.compose.ui.util.isSurrogatePair has been removed from public API. ( Ia9494 )
- Renamed TransformedText.transformedText to TransformedText.text
- TransformedText is no longer a data class ( Ie672a )
- Removed
data class
from the following classes:- InlineTextContent
- LocaleList ( I605c7 )
- The following classes are not data classes anymore:
- AnnotatedString
- Стиль абзаца
- SpanStyle
- ТекстСтиль
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput ( Iaff99 )
- Changed VisualTransformation to be a functional interface ( I3bba4 )
- Added a function reference parameter type ( I5e1bd )
- Add transformed bounds to InspectorNode ( Ice42f )
Исправления ошибок
- onCommit, onDispose, and onActive have been deprecated in favor of SideEffect and DisposableEffect APIs ( If760e )
Changes to factory functions for Font/FontFamily/Typeface
- Added factory functions that start with capital letter
- Deprecated previous factory functions with lowercase first letters
- New factory functions return the FontFamily instead of subclasses
- Hid constructors of the subclasses, so that they can only be constructed via factory functions.
- Renamed Font.asFontFamily to Font.toFontFamily ( I42aa7 )
Introduced
ComposeContentTestRule
, which extendsComposeTestRule
and definessetContent
, which has been removed fromComposeTestRule
. Added a factory methodcreateEmptyComposeRule()
that returns aComposeTestRule
and does not launch an Activity for you. Use this when you want to launch your Activity during your test, eg usingActivityScenario.launch
( I9d782 , b/174472899 )animateAsState is now animateFooAsState, where Foo is the type of the variable being animated. eg Float, Dp, Offset, etc ( Ie7e25 )
Content description parameter has been added to the Image and Icon. It is used to provide description to the accessibility services ( I2ac4c )
Remove displaySize as it should be avoided. Typically it is better to use size of onRoot() or window size at least. ( I62db4 )
OnSizeChanged was reporting the size of the layout's contents. It now reports the size at its position within the modifier chain. ( I36b78 , b/177562900 )
The emit() API and all overloads have been deprecated and renamed to ComposeNode. The APIs are identical, just a different name in order to follow the naming conventions of Compose ( I4137b )
TextFieldValue accepts AnnotatedString. However this is an API only change and multi-style text editing is not implemented yet.
- Removed
initial
from EditingBuffer constructor parameters. ( I326d5 )
- Removed
invalidate and compositionReference() are now deprecated in favor of currentRecomposeScope and rememberCompositionReference respectively. ( I583a8 )
AnnotatedString is changed to extend from kotlin.CharSequence. Therefore length and subSequence are now instance functions, and extension functions are removed. ( Iaf429 )
RememberObserver replaces CompositionLifecycleObserver and CompositionLifecycleObserver is now deprecated.
RememberObserver
is a replacement forCompositionLifecycleObserver
with modified semantics and renamed methods. Changing to the new API can be done mechanically for objects that are only remembered once which is, and continues to be, the recommended practice. However, if a reference was remembered more than once in a compositiononRemembered
is called for each reference whereonEnter
is only called once.onEnter
was called multiple time if the object was used in subcompositions, such asWithConstraints
andScaffold
making the singleonEnter
call guarantee unreliable and it was removed forRememberObserver
.RememberObserver
addsonAbandoned
which is called if theRememberObserver
instance is returned from the callback passed toremember
but was not remembered in the composition state and, therefore, will never haveonRemembered
called. This can occur if an exception terminates composition before completing or the composition is discarded because the state is was producing a composition for is no longer current or otherwise is no longer needed. If the instance ofRememberObserver
following the single reference recommendation above is tracking an external resource bothonForgotten
andonAbandoned
each indicate that the resource is no longer needed. If the object is tracking work started or resources allocated inonRemembered
,onAbandoned
can be ignored as it will not be called ifonRemembered
is called. ( I02c36 )Deprecated arithmetic operations between 2 or more TextUnits. Deprecated TextUnit.Sp and TextUnit.Em functions in preference to the extension functions such as Int.sp and Int.em. ( I48369 )
Resources in libraries with no explicitly declared public resources (ex. via public.xml) are now private by default. ( Ia1dcc , b/170882230 )
ScrollableColumn/Row were deprecated. Using ScrollableColumn is less efficient compared to LazyColumn when you have a large scrolling content because with LazyColumn we can only compose/measure/draw visible elements. To prevent users from going the inefficient way we decided to deprecate ScrollableColumn and ScrollableRow and promote usages of LazyColumn and LazyRow instead. Users can still decide they don't need the lazy behaviour and use the modifiers directly like this: Column(Modifier.verticalScroll(rememberScrollState())) ( Ib976b , b/170468083 )
New
items(count: Int)
factory method for scope of LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
anditemsIndexed(items: List)
are now extension functions so you have to manually import them when used. New extension overloads for Arrays:items(items: Array)
anditemsIndexed(Array)
( I803fc , b/175562574 )Please use ImeAction.None instead of ImeAction.NoAction
- Please use ImeAction.Default instead of ImeAction.Unspecified ( Ie1bcc )
Leverage TestCoroutineDispatcher in testing ( I532b6 )
Renamed TextInputService.onStateUpdated as updateState ( Id4853 )
TransitionDefinition-based Transition has been deprecated ( I0ac57 )
TextUnitType.Inherit is removed. Please use TextUnitType.Unspecified instead. ( I9ff64 )
Version 1.0.0-alpha10
13 января 2021 г.
androidx.compose.ui:ui-*:1.0.0-alpha10
is released. Version 1.0.0-alpha10 contains these commits.
Breaking Change
Restructuring of the internal compiler API allows batching changes to the nodes generated as a result of composition into the "apply changes" phase of composition, after all
@Composable
functions have completed.This is a behavioral breaking change that might affect application code as nodes are no longer available from internal and experimental APIs until after changes have been applied. This can usually be worked around by surrounding code with such dependencies in a
SideEffect
composable to defer execution of the code until after the nodes have been created and initialized. ( I018da )
API меняется
- Added Modifier.focusOrder() that can be used to specify a custom focus traversal order ( I90cf5 , b/175899543 , b/170155556 , b/170155429 )
- Removed deprecated focusObserver use onFocusChanged or onFocusEvent instead ( I3ecb9 , b/175156387 )
- EditOperations API Changes
- Renamed EditOperation as EditCommand
- Added Command suffix for EditOperation concrete implementations
- EditCommand's are no longer data classes
- Renamed EditOperation.process function to applyTo
- Renamed InputEventListener to InputEventCallback
- ( I0a366 )
- Removed unused PxSquared, PxCubed, PxInverse. Changed Size.center() to be a property. ( I973f7 )
- ui-test module will now be able to configure the creation of Recomposers for UIs under test ( Ibebd8 )
- Modified Velocity to have component parts and mathematical operations. ( Ib0447 )
- Renamed
@ExperimentalTesting
to@ExperimentalTestApi
to be consistent with similar experimental api annotations ( Ia4502 , b/171464963 ) - Renamed Color.useOrElse() to Color.takeOrElse() ( Ifdcf5 )
- Removed unused DpInverse, DpSquared, and DpCubed classes. ( I4d62b )
- Constraints#satisfiedBy was renamed to isSatisfiedBy. ( I9cf5c )
- Add a callback to notify Owner when layoutnode bounds change. ( I72fd1 )
- Added isSpecified, isUnspecified, and useOrElse for inline classes with an Unspecified constant. ( I93f7b , b/174310811 )
Expand [Abstract]ComposeView APIs to allow recycling Compose-based views, disposing their composition to recreate again later. Add APIs for installing and discovering window-scoped Recomposers and CompositionReferences for creating child compositions.
Add ViewCompositionStrategy for configuring the composition disposal strategy of [Abstract]ComposeViews; default behavior is dispose on window detach. ( I860ab )
Removed Any.identityHashCode() public api ( I025d7 )
Removed toStringAsFixed API in favor of using String.format instead directly. ( Iaba6b )
Add Toggle to foundation Strings.kt ( I4a5b7 , b/172366489 )
Moved nativeClass to ui module and made it internal. Updated usages of nativeClass in equals implementations to use 'is MyClass' instead. ( I4f734 )
Modifier.focus() and Modifier.focusRequester() are deprecated. Use Modifier.focusModifier() and Modifier.focusReference() instead. ( I75a48 , b/175160751 , b/175160532 , b/175077829 )
Introduced SelectionRegistrar.notifySelectableChange to notify Selectable updates to SelectionManager. ( I6ff30 , b/173215242 )
Introduced Outline.bounds property to obtain the bounding rect for various outline implementations. ( I16e74 , b/175093504 )
Deprecated TestUiDispatcher. Use Dispatchers.Main instead ( Ic171f , b/175385255 )
ImeOptions and KeyboardOptions are no more a data class ( I3c898 , b/168684531 )
VisualTransformation API Changes
- Renamed OffsetMap to OffsetMapping
- Renamed OffsetMapping.identityOffsetMap to OffsetMapping.Identity
- PasswordTransformation is no longer data-class
- Moved OffsetMapping to its own file
- ( I0bdf3 )
Renamed Position to DpOffset and removed getDistance() ( Ib2dfd )
Changed fun Dp.isFinite() to a val Dp.isFinite ( I50e00 )
Исправления ошибок
- Recomposer now exposes a Flow of its current state, allowing monitoring its activity and the activity of associated effects. ( Ifb2b9 )
- The native keyEvent can now be accessed through keyEvent.nativeKeyEvent ( I87c57 , b/173086397 )
-
animate()
is now replaced withanimateAsState()
, which returns aState<T>
instead ofT
. This allows better performance, as the invalidation scope can be narrowed down to where the State value is read. ( Ib179e ) - Add Semantics role API and add Role as a parameter to clickable, selectable and toggleable SemanticsModifier. Changed Modifier.progressSemantics so that Slider can also use it. ( I216cd )
- New coroutine-based API
Animatable
that ensures mutual exclusiveness among its animations.- New DecayAnimationSpec to support multi-dimensional decay animation
- ( I820f2 , b/168014930 )
Version 1.0.0-alpha09
16 декабря 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha09
is released. Version 1.0.0-alpha09 contains these commits.
API меняется
- Deprecated KeyEvent.Alt is now removed. Use KeyEvent.isAltPressed instead. ( Idd695 )
- Modifier.keyInputFilter and Modifier.previewKeyInputFilter are deprecated use Modifier.onKeyEvent and Modifier.onPreviewKeyEvent instead ( Idbf1b , b/175156384 )
- Modifier.focusObserver is deprecated. Use Modifier.onFocusChanged or Modifier.onFocusEvent instead ( I30f17 , b/168511863 , b/168511484 )
- For suspending pointer input APIs, renamed HandlePointerInputScope to AwaitPointerEventScope and handlePointerInput() to awaitPointerEventScope(). ( Idf0a1 , b/175142755 )
- Autofill API is now experimental API and requires opt-in ( I0a1ec )
- Adding destructuring declarations to create FocuSRequester instances ( I35d84 , b/174817008 )
- accessibilityLabel has been renamed to contentDescription. accessibilityValue has been renamed to stateDescription. ( I250f2 )
- Custom events were removed from suspending pointer input API ( Ia54d5 , b/175142755 )
- Introduced several new functions in SelectionRegistrar and also renamed onPositionChange to notifyPositionChange. ( Ifbaf7 )
- More members of LayoutNode we marked as internal ( I443c6 )
- LayoutInfo was introduced to be used by tooling and testing ( I9b190 )
- AndroidOwner made internal ( Ibcad0 , b/170296980 )
- Removed ExperimentalPointerInput annotation ( Ia7a24 )
- Nested scroll system added. Refer to Modifier.nestedScroll for more details ( I36e15 , b/162408885 )
- subcomposeInto(LayoutNode) was made internal ( Id724a )
The
Applier
interface has changed to simplify building trees bottom-up instead of top-down.The
insert()
method has been renamed toinsertTopDown()
.A new method,
insertBottomUp()
, was added.An applier either inserts nodes into the tree it is editing using
insertTopDown()
orinsertBottomUp()
depending on which performs better.Some trees, such as
LayoutNode
andView
, are much more efficient to build bottom-up than top-down. Prior to this change, a stack of inserts was required to implement bottom-up which needed to be copied to every applier which needed bottom-up construction for performance. With this change anApplier
overridesinsertBottomUp()
to build a tree bottom-up andinsertTopDown()
to build the tree top-down. ( Icbdc2 )Added dismissOnBackPress and dismissOnClickOutside properties to AndroidDialogProperties. These allow configuring when the dialog's onDismissRequest lambda will be invoked. ( If5e17 )
Added painterResource API to handle opaquely loading Painter objects from either rasterized asset formats (like PNGs) or VectorDrawables. Consumers no longer have to determine the type of asset in advance and can call this method to get a Painter object to use in Image composables or painter modifiers. ( I2c703 , b/173818471 )
Added Modifier.clearAndSetSemantics to clear descendants' semantics and set new ones. ( I277ca )
Moved ContentDrawScope to ui-graphics module to be with DrawScope. ( Iee043 , b/173832789 )
Introduced PathEffect graphics API to provide different patterns to stroked shapes. Deprecated usage of NativePathEffect in favor of expect/actual implementation of PathEffect. ( I5e976 , b/171072166 )
Added IdlingResource interfaces to Compose, as a Compose supported variant of Espresso's idling resources. They can be registered and unregistered through the ComposeTestRule ( I433f3 )
Removed global (un)registration of ComposeIdlingResource and global (un)registration of clocks into ComposeIdlingResource ( I32660 )
Исправления ошибок
- Lambdas in offset modifiers now return IntOffset rather than Float. ( Ic9ee5 , b/174137212 , b/174146755 )
Removed SlotTable, SlotReader and SlotWriter from the public API. These were marked as InternalComposeAPI previously. Now they are internal to the compose module.
CompositionData and CompositionGroup were added as a replacement for the ui-tooling API to use to extract composition information. These are public but are not intended for use outside the ui-tooling API as they provide the raw information the ui-tooling API interprets ( I31a9c )
Refactored ShaderBrush to lazily create a shader instance when sizing information of the drawing environment is available. This is useful to define gradients that occupy the full drawing bounds of a composable at composition time, without having to implement custom DrawModifier implementations.
Deprecated gradient function constructor APIs in favor of factory methods on a Gradient object. ( I511fc , b/173066799 )
Deprecate LazyColumnFor, LazyRowFor, LazyColumnForIndexed and LazyRowForIndexed. Use LazyColumn and LazyRow instead ( I5b48c )
Deprecated BuildCompat.isAtLeastR ( Idb37e )
Added buildAnnotatedString factory function in order to build an AnnotatedString. Deprecated annotatedString builder function. ( Idfe0b )
Removed extension methods on Float and Double to convert values to radians. Moved to be a private function within the implementation PathParser which was the only place where it was used ( I25f52 )
Version 1.0.0-alpha08
2 декабря 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha08
is released. Version 1.0.0-alpha08 contains these commits.
API меняется
- Add semantics action Dismiss ( I2b706 )
- Moved DrawModifier APIs from the androidx.compose.ui package to the androidx.compose.ui.draw package. Created DrawModifierDeprecated.kt file to include typealiases/helper methods to assist with the migration from the deprecated to the current APIs. ( Id6044 , b/173834241 )
- Renamed Modifier.drawLayer to Modifier.graphicsLayer Also updated related classes to GraphicsLayer as per API feedback. ( I0bd29 , b/173834241 )
- New methods placeable.placeWithLayer() and placeable.placeRelativeWithLayer() were added which allows custom layouts and layout modifiers to place a child with introducing a graphics layer for their drawing. Having that we can first optimize redrawings, so when we need to move a child we don't have to redraw its content, second we can apply draw transformations for a child ( Ibd8f6 , b/170296989 , b/171493718 , b/173030831 )
-
<T>
was removed from SubcomposeLayout declaration. You can use it without specifying a type now. ( Ib60c8 ) - Added Modifier.scale/rotate APIs as conveniences for drawLayer.
- Renamed
Modifier.drawOpacity
toModifier.alpha
- Renamed
Modifier.drawShadow
toModifier.shadow
( I264ca , b/173208140 )
- Renamed
- Made PointerInputData's uptime and position fields non-nullable. ( Id468a )
- MaterialTheme now sets the correct colors for selection handles and selection background. Non-Material apps can manually use AmbientTextSelectionColors to customize the colors used for selection. ( I1e6f4 , b/139320372 , b/139320907 )
- Added WindowManager.isWindowFocused to check if the host window is in focus, and a WindowFocusObserver that provides an onWindowFocusChanged callback. ( I53b2a , b/170932874 )
- Updated TransformOrigin API to have destructuring syntax to return
pivotFractionX
andpivotFractionY
ascomponent1
andcomponent2
( If43c4 , b/173586560 ) - Added lint check for composable lambda parameter naming and position, to check for consistency with Compose guidelines. Also migrated some APIs using
children
as the name for their trailing lambda tocontent
, according to the lint check and guidance. ( Iec48e ) - Added API to check if Alt, Ctrl, Meta or Shift modifier keys were pressed when a keyevent was dispatched. ( I50ed9 )
- Added a new
Modifier.drawLayer()
overload. It takes a lambda block on a new GraphicsLayerScope where you define the layer parameters in a way which allows to skip recomposition and relayout when the state change happens. DrawLayerModifier is now internal in preparation to migrating its logic into placeable.placeWithLayer() method of LayoutModifier ( I15e9f , b/173030831 ) - Deprecated Ambients named with
Ambient
as their suffix, and replaced them with new properties prefixed with Ambient, following other Ambients and Compose API guidelines. ( I33440 ) - Moved
androidx.compose.ui.text.Typeface
toandroidx.compose.ui.text.font.Typeface
( Ic2b81 ) - Semantics argument mergeAllDescendants was renamed to mergeDescendants. ( Ib6250 )
- New drag gesture detector suspending pointer input API, including orientation locking. ( Icef25 )
- Renamed VectorAsset to ImageVector Moved and renamed VectorAsset to Builder to be an inner class of ImageVector as per API guidelines. Added typealias of VectorAssetBuilder to link to ImageVector.Builder for compat. ( Icfdc8 )
- Renamed ImageAsset and related methods to ImageBitmap. ( Ia2d99 )
- Add zIndex param for the PlacementScope's place() so Modifier.zIndex() now works as a LayoutModifier and any custom layout can set zIndexes for their children right in the placement block ( I711f7 , b/171493718 )
- Moved foundation semantics properties to ui ( I6f05c )
- Deprecate place(Offset) and placeRelative(Offset). Use overloads with int offsets instead ( I4c5e7 )
- Previously Deprecated APIs were removed: Modifier.onPositioned was removed, use Modifier.onGloballyPositioned. Modifier.onDraw was removed, use Modifier.onDrawBehind. Modifier.plus was removed, use Modifier.then. Color.Unset was removed, use Color.Unspecified. PxBounds class was removed, use Rect instead. ( Ie9d02 , b/172562222 )
- The Alignment interface was updated and made functional. ( I46a07 , b/172311734 )
- Gesture detector for tap, double-tap, long press, and press indication were added using the new suspending pointer input. A few utilities were added as well, making it easier for developers to write their own gesture detectors. ( I00807 )
-
id
was renamed tolayoutId
forLayoutIdParentData
.Measurable.id
was renamed toMeasurable.layoutId
. ( Iadbcb , b/172449643 ) - New multitouch gesture detector, including helpers for detecting rotation, zoom, and panning. ( Ic459d )
- Introduced SweepGradientShader and SweepGradientBrush APIs. ( Ia22c1 )
- Time control in tests (TestAnimationClock and its usages) is now experimental ( I6ef86 , b/171378521 )
Add coroutine-based scrolling APIs:
Adds LazyListState.snapToItem and LazyListState.smoothScrollBy, as well as lower-level APIs for scroll control. These APIs provide a suspend interface to control scrolling that waits until the scroll is finished before returning. ( Ie5642 )
Modifier.focusable has need added in foundation. Use this to add focusable behavior to a component, with correct semantics and accessibility. ( I41eb9 , b/152525426 , b/162865824 )
Provide default implementations of methods and properties in AnimationClockTestRule that can be delegated to its
clock
( I7ea3d , b/173399709 )AndroidComposeTestRule can now accept custom activity launchers ( Ib8288 , b/153623653 , b/154135019 )
TextLayoutResult.getLineVisibleEnd is deprecated. As a replacement TextLayoutResult.getLineEnd now has a new parameter visibleEnd. ( I73282 )
Updated TextFieldValue API
- made TextFieldValue.composition readonly
- removed exception thrown for invalid selection range ( I4a675 , b/172239032 )
Support TtsAnnotation for text to speech engine. ( I54cc6 )
New APIs for running animations in coroutines ( Ied662 )
Исправления ошибок
- The alignment parameter of Box was renamed to contentAlignment. ( I2c957 )
- offsetPx modifiers were renamed to offset. They are now taking lambda parameters instead of State. ( Ic3021 , b/173594846 )
- Added resetInput parameter to TextInputService#onStateUpdated ( I3e8f5 , b/172239032 , b/171860947 )
- Added lint check for Modifier parameters in Composable functions. This lint check checks the naming, return type, default value, and order of the parameter for consistency with Compose guidelines. ( If493b )
- Temporarily added option to let the TestAnimationClock be driven by the MonotonicFrameClock ( I1403b , b/173402197 )
- Added Android Typeface wrapper. You can load an Android Typeface via
typeface
function ietypeface(Typeface.DEFAULT)
. Also renamedtypefaceFromFontFamily()
totypeface()
( I52ab7 ) - Added lint check to check that Modifier factory functions are defined as extensions on Modifier, so they can be fluently chained together. ( I07981 )
- Remove old ui-test module and its stubs ( I3a7cb )
- Recomposer no longer accepts an EmbeddingContext; required scheduling dependencies are obtained from the effectCoroutineContext. FrameManager is deprecated; platform integrations should initialize their own global snapshot handling. ( I02369 )
- Pass style information to accessibility node. ( If5e8d )
- TextUnit.Inherit is renamed to TextUnit.Unspecified for consistency with other units. ( Ifce19 )
Compose UI Version 1.0.0-alpha07
11 ноября 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha07
is released. Version 1.0.0-alpha07 contains these commits.
API меняется
- Introduced ScaleFactor inline class to represent scale factors for the horizontal and vertical axes independent of one another in order to support non-uniform scaling use cases.
- Added computeScaleFactor method to ContentScale
- Added ContentScale.FillBounds to perform non-uniform scaling to stretch the src bounds to fully occupy the destination.
- Added operator methods to compute ScaleFactor parameters with Size parameters.
- ( Ic96a6 , b/172291582 )
- The BiasAlignment and BiasAbsoluteAlignment factories for creating Alignments were added. ( Iac836 , b/169406772 )
- Allow a developer to forcefully clear focus. ( I90372 )
- A bug causing elevation not being drawn for Views inside Compose was fixed. ( If7782 )
- Created onDrawBehind API within ContentDrawScope to match naming convention with Modifier.drawBehind. ( I4fc3a , b/171955269 )
- Add support for camera distance to complement 3d transformations rotationX/rotationY on layer APIs. ( I40213 , b/171492100 )
- Added SelectionContainer without the callback ( Ibfadb )
- ExperimentalSubcomposeLayoutApi annotation was removed. SubcomposeLayout can now be used without adding @OptIn ( I708ad )
- FirstBaseline and LastBaseline were moved to androidx.compose.ui.layout package ( Ied2e7 )
- Removed opacity from drawShadow() modifier as it was confusing. ( I82c62 , b/171624638 )
- MeasureResult was moved out of MeasureScope. ( Ibf96d , b/171184002 )
- Several layout related symbols were moved from androidx.compose.ui to androidx.compose.layout.ui. ( I0fa98 , b/170475424 )
- Removed Deprecated FocusState2 ( I686cb , b/168686446 )
- ZIndexModifier is now internal ( I1808b , b/171493718 )
- Updated return type of lerp method on Size parameters to return a non-null Size to avoid unnecessary boxing. ( Ib0044 )
- Added TestMonotonicFrameClock for testing code that relies on Compose's MonotonicFrameClock for awaiting composition frame events using kotlinx-coroutines-test's runBlockingTest ( I4402f )
- Removed GestureScope.localToGlobal ( I15299 , b/171462785 )
- Added
onAllNodesWithSubstring
finder ( I81dd7 , b/171462889 ) - androidx.ui.test module deprecated. Please migrate to androidx.compose.ui.test and androidx.compose.ui.test.junit4 ( I452e8 )
Исправления ошибок
- captureToBitmap moved to captureToImage. ( I86385 )
- foundation.Text has been deprecated and replaced with material.Text. For a basic, unopinionated text API that does not consume values from a theme, see androidx.compose.foundation.BasicText. ( If64cb )
- Update TextFields to accept KeyboardOptions ( Ida7f3 )
- Rename KeyboardOptions as ImeOptions ( I82f36 )
- Moved KeyboardType and ImeAction into KeyboardOptions ( I910ce )
- provideDefault was added as an alternative for providing ambients, and it can be used to specify ambient values that will only be set when there is no ambient value already provided. ( Id6635 , b/171024925 )
- BaseTextField has been deprecated. Use BasicTextField instead. ( I896eb )
- Introduce ui-test-junit4 module ( Ib91f8 )
-
relativePaddingFrom
was renamed topaddingFrom
. ThepaddingFromBaseline
modifier was added, as convenience for specifying distances from layout bounds to text baselines. ( I0440a , b/170633813 ) - LaunchedTask was renamed to LaunchedEffect for consistency with the SideEffect and DisposableEffect APIs. LaunchedEffect with no subject params is not permitted in order to encourage best practices. ( Ifd3d4 )
- Introduced resources composable that recomposes when the configuration updates. ( I6387c , b/167352819 )
- Recomposer now requires a CoroutineContext at construction ( Ic4610 )
- Sum
zIndex
values when multipleModifier.zIndex()
applied. Previously the first one was winning. ( Ic514c , b/170623936 ) - Changes to the internal SlotTable implementation which should not affect the public API. ( If9828 )
- Added Keyboard auto correct IME Option ( I57b8d )
- androidx.ui.test moved to androidx.compose.ui.test ( I9ffdb )
- Removed KeyboardOptions.toImeOptions from public API. ( Ic2e45 )
External Contribution
- Disabled publication of internal artifact androidx.compose.ui:ui-text-android ( Ib93fa )
Version 1.0.0-alpha06
28 октября 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha06
is released. Version 1.0.0-alpha06 contains these commits.
Изменения API
- Recomposer is now a CompositionReference and a valid composition parent. Explicit Recomposer is now required in fewer places. ( I4036f )
- Deprecate VectorPainter in favor of rememberVectorPainter to better indicate that the composable API internally leverages 'remember' to persist data across compositions. ( Ifda43 )
- Updated Modifier.drawWithCache API to expose ContentDrawScope as a receiver scope instead of DrawScope in order to provide implementations the ability to re-order drawing commands. This is useful for blending/ tinting use cases in which content pixels must be rendered first in order for the corresponding blend mode algorithm to be applied properly. ( Ie7ec8 )
- Move SimpleContainer into PopupTestUtils.kt ( I78c57 )
- ConsumedData is no longer a data class. See https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 for details ( I1737f )
- Fix Rtl Handle Position. ( I6e1e0 )
- Refactored DrawScope and ContentDrawScope to be interfaces instead of abstract classes
- Created CanvasDrawScope implementation of DrawScope
- Refactored implementations of DrawScope to use CanvasScope instead
- Created DrawContext to wrap dependencies for DrawScope
- Removed deprecated methods on DrawScope ( I56f5e )
- Breaking change: removed the return value from
PointerInputFilter.onPointerEvent(...)
given that the only value that should be able to be changed in pointer events is consumption data. Instead of returning data fromPointerInputFilter.onPointerEvent(...)
, now you can just mutate the consumption data of the PointerEvents passed in. ( I6acd0 ) - MeasureScope and IntrinsicMeasureScope were made interfaces. ( I1a087 , b/170461665 )
- The merge function for AlignmentLine was hidden. ( I9da1a , b/170612900 , b/170611568 )
- Add ability to specify inspector info in composed modifier ( Idee08 , b/163494569 )
- Added SelectAll option into selection menu ( Ief02b )
- Updated DrawTransform.rotate to take a default pivot parameter of center to match the documentation.
- Updated DrawScope.rotateRad to consume an Offset for the pivot point to match other transformation methods.
- Deprecated DrawScope.rotateRad overload that consumed floats for the x and y coordinate of the pivot.
- ( Iffcbb , b/170434992 )
Исправления ошибок
- API lint check for MissingGetterMatchingBuilder is enabled for androidx ( I4bbea , b/138602561 )
- Add test. ( I6b8ae )
- Enable transitions in ComposeTestRule; remove option to enable the blinking cursor from ComposeTestRule. ( If0de3 )
- Added KeyboardCapitalization IME Option ( I8ac38 )
- Added single line keyboard option to CoreTextField ( I72e6d )
- Move SimpleContainer into PopupTestUtils.kt ( I65c3e )
- Renamed Radius API to CornerRadius to better express how it is used throughout Compose. Updated documentation to indicate that negative corner radii are clamped to zero. ( I130c7 , b/168762961 )
- Improved Android interop by continuing to send MotionEvents to child Android Views that return false for onTouchEvent for all actions except
ACTION_DOWN
( I94c5a , b/170320973 ) - Box was made an inline function. ( Ibce0c , b/155056091 )
External Contribution
- Support different locales for
AnnotatedString.capitalize
andAnnotatedString.decapitalize
( I4aa7f )
Version 1.0.0-alpha05
14 октября 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha05
is released. Version 1.0.0-alpha05 contains these commits.
API меняется
- Add a DSL for specifying inspector information ( Ic9a22 )
- Move LongPress into Text. ( Iff2bc )
- Experimental Modifier.pointerInput suspending input modifier ( Ia77d2 )
- Added Copy/Paste/Cut accessibility actions ( I6db4f )
- Public constructor for AndroidOwner was removed ( Iacaef )
- Popups and dialogs now inherit FLAG_SECURE from parent Window. Also added option to configure this explicitly ( I64966 , b/143778148 , b/143778149 )
Consumption data is now mutable. Also calls to extension functions that do consumption now no longer return a new PointerInputChange, but instead mutate the provided PointerInputChange.
This is the first step in a 2 step process to make PointerEvent data mutable such that other pointer data cannot be edited by user code. The second step will be to remove the
List<PointerInputChange>
return type fromPointerInputFilter.onPointerEvent(...)
. ( Id067e )Disable Selection in Text, and a Demo. ( Ie7e97 )
Made onGloballyPositioned an inline function ( I15830 )
OnPositionedModifier is renamed to OnGloballyPositionedModifier and onPositioned() is renamed to onGloballyPositioned(). ( I587e8 , b/169083903 )
The hasPendingMeasureOrLayout property was added to Owner, telling whether the Owner has any pending layout work. ( I3d9f8 , b/169038599 )
Added API to programmatically clear focus ( Ie1dc2 , b/161487952 )
Removed
PointerInputFilter.onPointerInput(...)
.PointerInputFilter.onPointerEvent(...)
should be used in its place. ( I6f04a )Changes to Size
- Removed Size.getFlipped
- Removed Size.rem
- Removed Size.truncDiv ( Ief44d , b/169790720 )
As part of the standardization of sentinel values for inline classes, rename Color.Unset to Color.Unspecified for consistency with other inline classes ( I97611 , b/169797763 )
TextOverflow.None is introduced. When overflow is None, Text won't handle overflow anymore, and it will report its actual size to LayoutNode. ( I175c9 , b/158830170 )
The scope parameter within AnnotatedString.Builder.addStringAnnotation is renamed to tag for API consistency. ( I7c8cb )
Исправления ошибок
- The scrolling performance of LazyColumn/Row is improved by doing less work in subcomposition on every scroll. The new hasInvalidations() method was added for Composition class. hasPendingChanges() method from Recomposer was renamed to hasInvalidations() ( Ib2f32 , b/168293643 , b/167972292 , b/165028371 )
- Updated Size.Unspecified parameters to be Float.NaN instead of Float.POSITIVE_INFINITY. Updated Painter implementations to check against Size.Unspecified as well as non-finite Sizes. ( I95a7e )
- The order of place() calls in custom Layouts now defines the drawing order for the children ( Ibc9f6 )
- Support AnnotatedString to SpannableString conversion for accessibility. ( Ief907 )
- Added stubs for android classes that are on older platforms to avoid use of reflection when possible. ( Ia1790 )
- Fixed bug: If the software keyboard showing caused the app to translate, pointer input coordinates would become incorrect. ( Ic4cec , b/163077821 )
Version 1.0.0-alpha04
1 октября 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha04
is released. Version 1.0.0-alpha04 contains these commits.
Изменения API
- Added OwnerScope to allow collection of layout and drawing observation scopes once they are no longer valid. ( Ic4cf8 )
- Added OnRemeasuredModifier and onSizeChanged() to receive a callback when content layout has been remeasured and the size has changed, respectively. ( I657cf , b/154108792 )
- Add long click semantics action ( I6281b , b/156468846 )
- Made FocusManager private. ( I7872f )
Updated implementation to create a dedicated DrawCacheModifier implementation instead of adding optional properties on DrawModifier.
Updated documentation for various methods ( Ibd166 )
Make TextRange inline to avoid object creation. ( Id034b )
PlacementScope#parentWidth and PlacementScope#parentLayoutDirection can no longer be read from the placement block of a custom layout. ( Icc1ae , b/168295623 )
add AccessibilityScrollState to semantics properties. ( Ifeda9 )
Introduced Modifier.drawWithCache to support creating a drawing object that conditionally recreates dependencies that depend on size/state information ( I376dc )
ParagraphConstraints is removed. Width is directly passed to Paragraph now. ( Ica712 )
Исправления ошибок
- Updated many Graphics APIs
- Updated scale and rotation transformation APIs to consume a single Offset parameter to represent the pivot coordinate instead of separate float parameters for the x/y coordinates in DrawScope and DrawTransform
- Removed Rect.expandToInclude and Rect.join methods
- Updated Radius documentation to say oval in addition to elliptical
- Added documentation to indicate the public constructor for the inline Radius class is not to be called directly but instead Radius objects should be instantiated through their function constructors
- Removed RoundRect APIs to query topRight, bottomRight, bottomCenter, etc.
- Deprecated Rect.shift in favor of Rect.translate
- Removed RoundRect.grow and Rect.shrink APIs
- Renamed RoundRect.outerRect to Rect.boundingRect
- Removed RoundRect.middleRect/tallMiddleRect/wideMiddleRect and Rect.isStadium methods
- Renamed RoundRect.longestSide to RoundRect.maxDimension
- Renamed RoundRect.shortestSide to RoundRect.minDimension
- Changed RoundRect.center to be a property instead of a function
- Updated RoundRect constructor to consume Radius properties instead of individual parameters for x/y radius values
- Removed Size APIs that assumed it was a Rectangle with origin at 0,0
- Added a destructing API to Radius
- Migrated various RoundRect extension functions to be properties instead
- ( I8f5c7 , b/168762961 )
- foundation.Box was deprecated. Please use foundation.layout.Box instead. ( Ie5950 , b/167680279 )
- Stack was renamed to Box. The previously existing Box will be deprecated in favor of the new Box in compose.foundation.layout. The behavior of the new Box is to stack children one on top of another when it has multiple children - this is different from the previous Box, which was behaving similar to a Column. ( I94893 , b/167680279 )
- Box decoration parameters have been deprecated. If you want to have decorations/padding on your box, use Modifiers instead (Modifier.background, Modifier.border, Modifier.padding) ( Ibae92 , b/167680279 )
- Updated many Graphics APIs
- Updated DrawScope APIs with scoped transformation methods to indicate that the transformation is only applied within the callback and removed after the callback is invoked
- Updated clipPath documentation to refer to Path instead of rounded rectangle
- Fixed spacing in documentation for right parameter in clipPath
- Renamed DrawScope.drawCanvas to drawIntoCanvas and removed size parameter
- Renamed dx/dy parameters in inset method to horizontal and vertical
- Added inset overload that provides the same inset value to all 4 bounds
- Removed documentation on inset method indicating that inset would be applied to all 4 sides
- Updated documentation for Rect class
- Updated comments on Rect parameters to match kdoc style
- Removed Rect.join and Rect.expandToInclude
- Created overload for Rect.translate(offset) and deprecated Rect.shift
- ( If086a , b/167737376 )
- Annotated rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled and textInputServiceFactory with @VisibleForTesting, make them internal API and hide their kdoc ( I554eb , b/168308412 )
- Remove SelectionContainer from the Top to disable default selection and avoid unexpected behavior. One can specifically use a SelectionContainer to wrap the content that needs to be selectable instead. ( I8dfe0 , b/158459594 )
Version 1.0.0-alpha03
16 сентября 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha03
is released. Version 1.0.0-alpha03 contains these commits.
API меняется
- Remove scroll forward/backward semantics actions. Added steps in AccessibilityRangeInfo. ( Ia47b0 )
- Removed
onInvalidate()
fromOwner
--OwnedLayer
handles invalidation. ( Ica72b , b/162061312 ) Removed operator methods on Size API that consume Offset parameters. The result of these operations is unclear and the type of result is unexpected for these. Бывший. should size - offset return an offset or a size result with the difference?
Also removed deprecated methods on Size class. ( Iec902 , b/166514214 )
Исправления ошибок
- Fix for items of LazyColumn being incorrectly drawn sometimes, this was also causing crashes in some conditions. ( Ibcf17 , b/163066980 , b/165921895 )
- DpConstraints and APIs using it were deprecated. ( I90cdb , b/167389835 )
- Moved
createAndroidComposeRule
andAndroidInputDispatcher
fromandroidx.ui.test.android
toandroidx.ui.test
( Idef08 , b/164060572 ) - Usages of gravity were consistently renamed to align or alignment in layout APIs. ( I2421a , b/164077038 )
- Added onNode and other global methods on ComposeTestRule as the current global ones are going to be deprecated. ( Ieae36 )
Version 1.0.0-alpha02
September 2, 2020
androidx.compose.ui:ui-*:1.0.0-alpha02
is released. Version 1.0.0-alpha02 contains these commits.
API меняется
- remove callback to notify Owner when layoutnode bounds change. ( If654e , b/166106882 )
- Added support for filltype parameters on vector graphics paths to support cutouts of shapes according to evenOdd or NonZero path fill rules. ( I43dd2 )
- Uptime and Velocity are now inline classes ( I48f4a )
- Duration is now an inline class ( I565eb )
- Add a callback to notify Owner when layoutnode bounds change. ( Ic40b3 )
Fixed issue where Rect function constructor with Offset and radius would create the Rect in the order of left, right, top, bottom instead of left, top, right, bottom.
Removed deprecated companion methods on Rect in favor of function constructors.
Added tests to verify methods in Rect.kt ( I08460 , b/165822356 )
Исправления ошибок
- Added MutableRect, a rectangle that can be modified. ( I71bd2 , b/160140398 )
- Matrix4 was replaced with Matrix. All other parts of vectormath package have been removed. ( Ibd665 , b/160140398 )
The calling convention for composable functions has changed. This is a binary breaking change. All libraries must be recompiled to work with this version of the compose compiler plugin.
This change does not create a source level breaking change as the only APIs that have changed are compiler APIs that have an explicit opt in. ( I7afd2 , b/158123185 )
Fixed crash that could occur when dispatch to a PointerInputFilter could cause the PointerInputFilter to be synchronously removed. ( I58f25 )
Version 1.0.0-alpha01
26 августа 2020 г.
androidx.compose.ui:ui-*:1.0.0-alpha01
is released. Version 1.0.0-alpha01 contains these commits.
Version 0.1.0-dev
Version 0.1.0-dev17
19 августа 2020 г.
androidx.compose.ui:ui-*:0.1.0-dev17
is released. Version 0.1.0-dev17 contains these commits.
API меняется
-
emitView
was deprecated. UseAndroidView
instead if possible for emitting Views inside Compose. Note that composing Views and ViewGroups directly will not be supported in the future unless these are leaves in the composition tree, case when this can be achieved using AndroidView. ( I29b1e , b/163871221 ) -
FocusState2
is deprecated and replaced byFocusState
( Ia8b79 , b/160822876 , b/160923332 ) - The deprecated AndroidView overloads were removed. ( I946b9 , b/163802393 )
- Custom emits can now declare that one or more of its setters can be skipped and recomposed independently of the emit. ( Ibbd13 )
Changed Vector classes to no longer be data classes as the same object instance is used for composition.
Added mutableStateOf flag for VectorPainter to conditionally re-draw if contents of the vector change.
Refactored VectorComponent instance to be part of VectorPainter as it is re-used across compositions.
Updated GroupComponent and PathComponent to have their name fields be mutable ( Ieae45 , b/151378808 )
Removed
onChildPositioned
andOnChildPositionedModifier
. Developers should useonPositioned
andOnPositionedModifier
on the child layout instead. ( I4522e , b/162109766 )Offset has become an inline class ( Iaec70 )
Added a modifier param to SelectionContainer ( I4aada , b/161487952 )
Removed deprecated FocusModifier ( I0b4ba , b/160922116 , b/160821157 , b/162441435 , b/160822875 , b/160921940 )
Added
mergePolicy
lambda toSemanticsPropertyKey
. This can be used to define a custom policy for mergeAllDescendants semantics merging. The default policy is to use the parent value if already present, otherwise the child value. ( Iaf6c4 , b/161979921 )Constraints is now an inline class ( I88736 )
Added FocusManager that moves common focus logic out of AndroidComposeView ( I528ef , b/161487952 , b/162206799 )
Updated PointerEventPass names for Alpha release. ( Ifda6f )
IntOffset is now an inline class ( Iac0bf )
IntSize is now an inline class ( I2bf42 )
PlacementScope.placeAbsolute()
was renamed toPlacementScope.place()
, and the previousPlacementScope.place()
was renamed toPlacementScope.placeRelative()
. As a result, thePlacementScope.place()
method will not automatically mirror the position in right-to-left contexts anymore. If this is desired, usePlacementScope.placeRelative()
instead. ( I873ac , b/162916675 )AlertDialog now uses FlowRow for buttons ( I00ec1 , b/161809319 , b/143682374 )
Made some test utilities non public because they are not where they belong. Will be made public in the future. ( I32ab1 )
Refactored organization of pointer input code. ( Ie3f45 )
Deprecated PxBounds in favor of Rect. Updated all usages of PxBounds with rect and added proper deprecate/replace with annotations to assist with the migration. ( I37038 , b/162627058 )
Removed Deprecated KeyEvent2. Use KeyEvent instead. ( Ied2d0 , b/162097587 )
KeyEvent has a unicode property that can be used to get the unicode character generated by the specified key and meta key state combination ( If3afc )
Made the DelayUp custom event and related classes an opt in API as it is very likely going to be changed. ( I56d6f )
Removed 2 PointerEventPasses that are no longer needed. ( I3dd9d )
Add parameter color, shadow and TextDecoration to Paragraph.paint This function is useful to avoid unnecessary Paragraph recreation. ( I81689 )
Исправления ошибок
- Removed onFocusChanged callbacks from TextField. Use Modifier.focusObserver instead. ( I51089 , b/161297615 )
- Modifier.drawBorder has been deprecated. Use Modifier.border instead. Border data class has been replaced by BorderStroke ( I4257d , b/158160576 )
Removed deprecated FrameManager calls.
Internal compose APIs have been changed to reduce the amount of overhead to track state objects such as
mutableStateof()
( I80ba6 )VerticalScroller and HorizontalScroller have been removed. Use ScrollableColumn/Row instead. Modifier.drawBackground has been removed. Use Modifier.background ( I73b0d , b/163019183 )
Crash when something which saves the state was used inside the for loop is fixed. Now having the same key in savedInstanceState() is allowed, api of UiSavedStateRegistry is now adjusted to this new requirement ( I4ab76 , b/160042650 , b/156853976 , b/159026663 , b/154920561 )
The
state { ... }
composable is now deprecated in favor of explicit calls toremember { mutableStateOf(...) }
for clarity. This reduces the overall API surface and number of concepts for state management, and matches theby mutableStateOf()
pattern for class property delegation. ( Ia5727 )Renamed RRect to RoundRect to better fit compose naming patterns Created similar function constructors to RRect and deprecated RRect function constructors ( I5d325 )
Version 0.1.0-dev16
5 августа 2020 г.
androidx.compose.ui:ui-*:0.1.0-dev16
is released. Version 0.1.0-dev16 contains these commits.
Изменения API
- OnChildPositioned has been deprecated. Use OnPositioned on the child instead. ( I87f95 , b/162109766 )
- setViewContent was deprecated. setContent should be used instead. ( I7e497 , b/160335130 )
- Added the AndroidViewBinding API for inflating and composing layout resources, based on ViewBinding. ( I081c6 )
- KeyEvent2 is replaced by KeyEvent ( I2d770 , b/162097585 )
- Added support for Alt hardware key ( I9036b )
- FocusManager is Deprecated. Use Modifier.focus(), Modifier.focusObserver() and Modifier.focusRequester() instead. ( I74ae4 , b/162211322 )
- loadVectorResource supports trimPath attributes ( I808fe )
- Move dialog to ui ( I47fa6 )
- Removed 2 PointerEventPasses that are no longer needed. ( I33ca7 )
- Implemented PointerInteropModifier which provides the ability to receive MotionEvents and interact with Compose as if you are an implementation of an Android View. ( Ieb08c )
- Removed the deprecated tag modifier. Please use layoutId instead. ( Idaa05 , b/162023919 )
- The APIs for right-to-left support has been updated. LayoutDirectionAmbient has been added, which can be used to read and change the layout direction. Modifier.rtl and Modifier.ltr have been removed. ( I080b3 )
- Support path trimming in vector graphics ( Ie16c9 , b/158188351 )
- Added Modifier.layout() that allows to create a custom layout modifier conveniently ( I73b69 , b/161355194 )
- Added a new AndroidView API and deprecated the existing ones. ( I5bcfd )
- Modifier.plus has been deprecated, use Modifier.then instead. 'Then' has a stronger signal of ordering, while also prohibits to type
Modifier.padding().background() + anotherModifier
, which breaks the chain and harder to read ( Iedd58 , b/161529964 ) - Add [Abstract]ComposeView View subclasses for hosting Compose content in a View hierarchy. ( I46357 )
-
Row
andColumn
are now inline function significantly reducing the overhead of using them. ( I75c10 ) - SubcomposeLayout is added. It is a low level primitive which allows to compose the children during the measuring if we want to use some values available only later during the measure for the subtree composition. For example WithConstraints is not implemented using SubcomposeLayout. ( I25cc8 )
- Added
SemanticsNode.positionInRoot
to get the position of a SemanticsNode relative to the root of the Compose hierarchy ( Icdf26 , b/161336532 ) - MotionEvents passed all the way through from Android, into Compose, and back into Android. ( I14be8 , b/158034713 )
- Removed dropdownPopup. ( I00430 )
- Fixed popup position on cut-out displays. ( Idd7dd )
- Add accessibility action to get TextLayoutResult ( I9d6e6 )
- RemeasurementModifier added. it allows to synchronously remeasure the layout. In general you never need it as remeasure/relayout is happening automatically, but we use it inside LazyColumnItems during the scroll. ( I5f331 , b/160791058 )
- Remove getLineEllipsisOffset/getLineEllipsisCount. Use getLineVisibleEnd/getLineEnd/isLineEllipsized instead. ( I85aa2 )
- Add some Marks/Annotations for best practice reason. ( I66b20 )
- expose more line APIs in TextLayoutResult. ( I79bd2 )
- Built-in vector converters to convert built-in units are now accessible via Foo.VectorConverter. eg Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter, etc ( I3e273 )
Исправления ошибок
- Address broad API fixes ( I077bc )
- Remove unused OffsetBase interface
- Align Offset and IntOffset classes to have a consistent API surface
- Rename IntOffset.Origin to IntOffset.Zero to be consistent with Offset API
- Moved nativeCanvas method off of Canvas interface to support consumers to create their own Canvas instances
- Created stub EmptyCanvas class to refactor DrawScope to be a non-null parameter instead of lateinit and ensure non-nullability of the field
- Renamed ClipOp enums to be Pascal Case
- Renamed FilterQuality enums to be Pascal Case
- Renamed StrokeJoin enums to be Pascal Case
- Renamed PointMode enums to be Pascal Case
- Renamed PaintingStyle enums to be Pascal Case
- Renamed PathFillType enums to be Pascal Case
- Renamed StrokeCap enums to be Pascal Case
- Updated DrawCache implementation to no longer use lateinit params
- Updated DrawScope to no longer use lazy delegation for fillPaint and strokePaint internal parameters
- Updated Image composable to avoid Box usage for less overhead
- Updated Outline class to have @Immutable annotations
- Updated PathNode to have @Immutable annotations for each path instruction
- Updated Vector subcomposition to remove redundant conditional checks for equality as compose already handles them
- Deprecated Rect companion constructor methods in favor of function constructors
- Updated Brush classes and function constructors with @Immutable and @Stable APIs
- Updated VertexMode enum to be PascalCase
- Updated DrawScope selectPaint method to conditionally overwrite stroke parameters on the paint if they have changed
- Updated Size to add destructuring API, rename UnspecifiedSize to Unspecified and removed unused methods
- Updated compose BlendMode API consumption to properly map between Android framework BlendModes and PorterDuff modes depending on API level. Introduced BlendMode#isSupported API to act as a capability query to determine if the BlendMode is supported on the device before it is used. ( I0ef42 )
- LazyItemScope was added for itemContent param of Lazy lists. It provides modifiers to fill the parent max size which solves the use case when the item should fill the viewport and the regular Modifier.fillMaxSize() doesn't work as the item is measured with infinity constraints. ( Ibd3b2 , b/162248854 )
- Removed
SemanticsNodeInteraction.performPartialGesture
. UseSemanticsNodeInteraction.performGesture
instead. ( Id9b62 ) -
LazyColumnItems
was renamed toLazyColumnFor
.LazyRowItems
was renamed toLazyRowFor
( I84f84 ) -
foundation.shape.corner
package was flattened tofoundation.share
( I46491 , b/161887429 ) - Renamed
AndroidComposeTestRule
tocreateAndroidComposeRule
. ( I70aaf ) - Added more APIs to
TextLayoutResult
. ( Id7e04 ) - Material
FilledTextField
was renamed toTextField
and foundationalTextField
was renamed toBaseTextField
to make simplest desired API easy to discover and use ( Ia6242 , b/155482676 ) - Modifier.drawBackground has been renamed to Modifier.background ( I13677 )
Version 0.1.0-dev15
22 июля 2020 г.
androidx.compose.ui:ui-*:0.1.0-dev15
is released. Version 0.1.0-dev15 contains these commits.
Dependencies Update
- To use the
0.1.0-dev15
version of Compose, you will need to update your dependencies according to the new code snippets shown above in Declaring dependencies .
API меняется
- FocusModifier is deprecated in favor of Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState and FocusDetailedState are deprecated in favor of FocusState2 ( I46919 , b/160822875 , b/160922136 )
- Added a modifier to observe focus state change. ( I05866 , b/160924455 , b/160923326 )
- Added a modifier to request focus changes ( I8dd73 , b/161182057 , b/160924778 )
- Ajdust the Toolbar Menu to show copy, cut, paste properly. ( Id3955 )
- Single-value semantics properties now use a calling style. For example, 'semantics { hidden = true }' is now written as:
semantics { hidden() }
. ( Ic1afd , b/145951226 , b/145955412 ) - Added Modifier.focus which replaces FocusModifier. ( Ib852a , b/160924778 )
- Add FloatingToolbar for TextField Selection. ( Ie8b07 )
- Added an experimental api annotation for key input related API ( I53c0a )
- Added an experimental api annotation for all Focus-related API ( I53b24 , b/160903352 )
- Added FocusState2 which will replace FocusDetailedState ( I0a3ba , b/160822595 )
- Added ExperimentalFocus which is an @OptIn annotation for Focus API. ( I1544b , b/160820961 )
- An IntBounds unit class has been added, representing integer pixel bounds from layout. The API of PopupPositionProvider has been updated to use it. ( I0d8d0 , b/159596546 )
- Applier now requires a clear() method for disposing compositions ( Ibe697 )
- KeyEvent is deprecated and replaced by KeyEvent2 ( I68730 )
- A new optional flag useUnmergedTree was added to test finders. ( I2ce48 )
- Made LayoutNode experimental API ( I4f2e9 )
Added copy methods to various inline class types including:
- Компенсировать
- Размер
- Радиус
- Движение
TransformOrigin
Deprecated Size.copy companion object method favor of instance copy method ( Ife290 , b/159905651 )
Popups, Dialogs and Menus are now inheriting the contextual MaterialTheme ( Ia3665 , b/156527485 )
TextDirection is renamed as ResolvedTextDirection ( I3ff38 )
Removed layout direction parameter from the measure block of the Layout() function. Layout direction is however available inside the callback through the measure scope object ( Ic7d9d )
Refactor SelectionHandles for reusing. ( I420e0 )
Clickable was removed. Use Modifier.clickable ( I84bdf )
TestTag and Semantics have been deleted. Use Modifier.testTag and Modifier.semantics instead ( I15ff0 , b/158841414 )
Prior to this change, the compose compiler plugin would non-trivially intercept calls to constructors inside of a @Composable function if there was an ( I5205a , b/158123804 )
Modifier.tag was renamed to Modifier.layoutId, to avoid confusion with Modifier.testTag. ( I995f0 )
Alignment line Int positions returned from Placeable#get(AlignmentLine) are now non-null. If the queried alignment line is missing, AlignmentLine.Unspecified will be returned. ( I896c5 , b/158134875 )
The AndroidView composable was added a modifier parameter. ( I48a88 , b/158746303 )
Semantics() is deprecated. Use Modifier.semantics() instead. ( I72407 , b/158841414 )
Add viewModel() composable which allows to create or get already created ViewModel similarly to how it works in Activity or Fragment ( I5fdd1 )
Replaced usage of IntPx with Int. Replaced IntPxPosition with IntOffset. Replaced IntPxSize with IntSize. ( Ib7b44 )
In order to consolidate the number of classes used to represent sizing information, standardize on usage of the Size class instead of PxSize. This provides the benefits of an inline class to leverage a long to pack 2 float values to represent width and height represented as floats. ( Ic0191 )
In order to consolidate the number of classes used to represent positioning information, standardize on usage of the Offset class instead of PxPosition. This provides the benefits of an inline class to leverage a long to pack 2 float values to represent x and y offsets represented as floats. ( I3ad98 )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters. Deleted Px class in its entirety ( I3ff33 )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( I086f4 )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( Id3434 )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( I97a5a )
TestTag is now deprecated. Use Modifier.testTag instead. ( If5110 , b/157173105 )
The default, no-op, implementation of ParentDataModifier#modifyParentData has been removed - it was equivalent to not implementing the interface in the first place. ( I0deaa )
Previously deprecated ScaleFit as removed. Use ContentScale instead. ( Ifbc5b )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( I19d02 )
Added the DropdownMenu component in ui-material, a Material Design menu implementation. ( I9bb3d )
Removed deprecated LayoutTag(), please use Modifier.tag() instead. Removed deprecated Modifier.matchParent(), please use Modifier.matchParentSize() instead. ( If8044 )
Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( I57bff )
Modifier.semantics has been undeprecated to allow usages for high level components. ( I4cfdc )
Consolidated CanvasScope implementations so there is now just DrawScope and ContentDrawScope Renamed CanvasScope to DrawScope. Updated DrawScope to implement Density interface and provide LayoutDirection Deleted DrawScope subclass in ContentDrawScope Painter and PainterModifier have been updated to no longer maintain an RTL property themselves as DrawScope provides this already without manually providing it ( I1798e )
DoubleTapGestureFilter now disambiguates SingleTapGestureFilter across the tree. ( If92b1 )
Updated Alignment API and added support for absolute alignment (which does not auto-mirror in Rtl context) ( I38cd3 )
DrawLayer modifiers api has been changed: outlineShape renamed to shape and has the RectangleShape default value and now non-nullable; clipToOutline renamed to clip; clipToBounds removed as it is the same as clip == true with RectangleShape ( I7ef11 , b/155075735 )
Updated higher level compose APIs that expose a Canvas to expose CanvasScope instead. This removes the need for consumers to maintain their own Paint objects. For consumers that still require access to a Canvas they can use the drawCanvas extension method which provides a callback to issue drawing commands with the underlying Canvas. ( I80afd )
WithConstraints trailing lambda API has been changed. Now instead of two params it has a receiver scope which in addition to constraints and layoutDirection provides minWidth, maxWidth, minHeight and maxHeight properties in Dp ( I91b9a , b/149979702 )
Renamed LayoutModifier2 to LayoutModifier. ( Id29f3 )
Removed deprecated LayoutModifier interface. ( I2a9d6 )
Intrinsic measurements functions in Layout and LayoutModifier2 have an IntrinsicMeasureScope receiver now which provides intrinsics query API with implicitly propagated layout direction. ( Id9945 )
Layout and LayoutModifier children can be measured with a different layout direction. ( Ibd731 )
New Modifier.zIndex() is added to control the drawing order of the children within the same parent layout. elevation property on DrawLayerModifier is renamed to shadowElevation and doesn't control the drawing order anymore. The params order fo DrawShadow is changed: elevation is now the first one and the shape is the second one with a RectangleShape default. ( I20150 , b/152417501 )
Removed onSizeChange and onPositionChange in Owner. ( I5c718 )
Added Constraints2, a copy of Constraints that does only supports Int connstraints values rather than IntPx. IntPx will be removed and all integer constraints will be assumed to be pixels like Android.
- Added IntSize as well, which will eventually replace IntPxSize. ( I4b43a )
Made Alignment instantiable with arbitrary values. Added 1D Alignments. ( Ia0c05 )
alignToSiblings now accepts a Measured instead of Placeable. ( I5788d )
( I45f09 , b/152842521 )
- Renamed ScaleFit to ContentScale
- Moved ContentScale from ui-graphics to ui-core module to live in the same module as the Alignment API.
- Renamed FillMaxDimension to Crop
- Renamed FillMinDimension to Fit
- Renamed Fit to Inside to better match
- ImageView.ScaleType equivalents
- Added documentation indicating that the combination of Crop and Alignment.Center achieves the same result as ImageView.ScaleType.CENTER_CROP and Fit used with Alignment.Center achieves the same result as ImageView.ScaleType.FIT_CENTER Inside used with Alignment.Center achieves the same result as ImageView.ScaleType.CENTER_INSIDE
Rtl support for draw modifiers. ( I0aaf9 )
Released API for inflating Android Views from XML. See ViewInCompose demo for more details. ( I42916 )
Improve DrawModifier API:
- Made the receiver scope for draw() ContentDrawScope
- Removed all parameters on draw()
- DrawScope has same interface as former CanvasScope
- ContentDrawScope has drawContent() method ( Ibaced , b/152919067 )
Added positionInParent and boundsInParent for LayoutCoordinates. ( Icacdd , b/152735784 )
DrawLayerModifier and drawLayer() now default clipToBounds and clipToOutline to false. ( I0eb8b , b/152810850 )
Renamed LayoutResult to MeasureResult. ( Id8c68 )
Added LayoutModifier2, a new API for defining layout modifiers; deprecated LayoutModifier ( If32ac )
Replaced Modifier plus operator with factory extension functions ( I225e4 )
Added translationX/Y properties to support offseting the display list of drawing commands for a given Layer. This is useful to move content in response to animations or touch events. ( I8641c )
Added pivotX, pivotY parameters to Layer APIs to support rotation and scaling around a particular point on a layer ( Icf7c3 )
Add OnPositionedModifier and OnChildPositionedModifier to replace OnPositioned and OnChildPositioned composable functions. ( I2ec8f )
Added LayerModifier, a modifier that allows adding a RenderNode for a Layout. It allows setting clipping, opacity, rotation, scaling, and shadows. This will replace RepaintBoundary. ( I7100d , b/150774014 )
Made the layout direction be propagated from parent layout node to children. Added layout direction modifier. ( I3d955 )
Stack component supports right-to-left directionality ( Ic9e00 )
Initial support for Rtl in Compose layout ( Ia5519 )
Density and DensityScope were merged into one interface. Instead of ambientDensity() you can now use DensityAmbient.current. Instead of withDensity(density) just with(density) ( I11cb1 )
Changed LayoutCoordinates to make providedAlignmentLines a Set instead of a Map and have LayoutCoordinates implement the get() operator instead for retrieving a value. This makes it easier for modifiers to modify one or more value of the set without creating a new collection for each modifier. ( I0245a )
LayoutCoordinates no longer has a position property. The position property does not make sense when considering LayoutModifiers, rotation, or scaling. Instead, developers should use parentCoordinates and childToLocal() to calculate the transform from one LayoutCoordinate to another.
LayoutCoordinates uses IntPxSize for the size property instead of PxSize. Layouts use integer pixel sizes for layouts, so all layout sizes should use integers and not floating point values. ( I9367b )
Improvements to the API surface of Constraints ( I0fd15 )
Created CanvasScope API that wraps a Canvas object to expose a stateless, declarative drawing API surface. Transformations are contained within their own receiver scope and sizing information is also scoped to corresponding inset bounds. It does not require a consumer to maintain its own Paint state object for configuring drawing operations.
- Added CanvasScopeSample as well as updated the demo app to include a declarative graphics demo ( Ifd86d )
Removed unused MaskFilter API as it has limited usage and is not optimized for hardware acceleration in most use cases ( I54f76 )
RectangleShape moved from androidx.ui.foundation.shape.* to androidx.ui.graphics.* ( Ia74d5 , b/154507984 )
Replaced all nullable Color uses in API with non-nullable and use Color.Unset instead of null ( Iabaa7 )
Introduce additional optional rect parameter to ImagePainter to support drawing a subsection of underlying ImageAsset ( I0ea9e )
Added Unset Color to represent an unset value without boxing Colors. ( If901a )
Added Canvas.rotate and Canvas.scale extension methods to consume optional pivot coordinates for transformations. These default to the top left corner of the current canvas translation.
Also moved Canvas.rotateRad to be an extension method for consistency ( Ibaca6 )
Created PixelMap API to support querying pixel information from an ImageAsset. ( I69ad6 )
Renamed toFrameworkRect/toFrameworkRectF to toAndroidRect/toAndroidRectF to match naming convention for object conversions between compose and the Android framework APIs they are built on top of. Also updated docs on these APIs ( I86337 )
Added VectorPainter API to replace existing subcomposition API for vector graphics. Result of subcomposition is a VectorPainter object instead of a DrawModifier. Deprecated previous DrawVector composables in favor of VectorPainter.
Renamed Image(Painter) API to PaintBox(Painter) Created Vector composable that behaves like the Image composable except with a VectorAsset instead of an ImageAsset ( I9af9a , b/149030271 )
Renamed Image to ImageAsset to better differentiate the difference between the Image data and the upcoming Image composable used to participate in layout and draw content. _Body:Created extension method on android.graphics.Bitmap, Bitmap.asImageAsset(), to create an instance of an ImageAsset useful for combining traditional Android application development with the compose framework ( Id5bbd )
Added TextDirection.Content ( I48f36 )
Added TextDecoration.plus operator ( I0ad1a )
Force
is removed from TextDirectionAlgorithm enum values ( Icc944 )TextDirectionAlgorithm is renamed as TextDirection ( I75ce8 )
Implements LongPressAndDrag for TextField Selection. ( I17919 )
Added AnnotatedString.getStringAnnotations that returns all annotations within the range. ( I1fa00 )
Changed the package name for Locale and LocaleList from androidx.ui.text to androidx.ui.intl ( I8132c )
TextField's cursor has a blinking animation ( Id10a7 )
API change: AnnotatedString(builder: Builder) is renamed to annotatedString(builder: Builder). ( Ia6377 )
API change: AnnotatedString.Item is renamed to AnnotatedString.Range. ( I2d44d )
Rename AnnotatedString.Builder.addAnnotationString to addStringAnnotation. ( I5059e )
Now it is possible to hide/show software keyboard by using SoftwareKeyboardController which is delivered by onTextInputStarted callback ( I8dc44 , b/151860051 )
Added plus operator for (Text/Paragraph/Span)Style which delegates to merge() function. ( Ia1add )
FontWeight.lerp does not snap anymore. It is still a data class. ( I521c2 )
FontWeight constructor is now public, it is not data class anymore. ( Id6b1f )
Add getLineStart, getLineEnd, getEllipsisOffset and getEllipsisCount to TextLayoutResult ( Ibc801 )
ui-text module is renamed as ui-text-core ( I57dec )
Removed unused Size class as there is a duplicate Size class in the ui-geometry module that is being consumed. ( I1b602 )
Added AdapterList, a scrolling list component that only composes and lays out the visible items. Currently known issues include that it is vertical-only and does not fully handle all cases of changes to its children. ( Ib351b )
Add paddings, border, shape and background param to Box ( I05027 , b/148147281 )
Исправления ошибок
- onFocusChange callback in text fields renamed to onFocusChanged ( Ida4a1 )
- VerticalScroller and HoriziontalScroller have been deprecated. Use ScrollableColumn and ScrollableRow for build-in experience with Column/Row behaviour and parameters, or Modifier.verticalScroll and Modifier.horizontalScroll on your own element. Similarly, ScrollerPosition has been deprecated in favor of ScrollState' ( I400ce , b/157225838 , b/149460415 , b/154105299 )
-
runOnIdleCompose
renamed torunOnIdle
( I83607 ) - Several testing APIs were renamed to be more intuitive. All findXYZ APIs were renamed to onNodeXYZ. All doXYZ APIs were renamed to performXYZ. ( I7f164 )
- Compose UI can now be composed inside ViewGroups without requiring a new composition. See ViewInteropDemo for an example. ( I9ab0b , b/160455080 )
- Added sortWith and removeRange to MutableVector ( Icccf7 )
- Implement Drag Selection Handles to change selection for TextField. ( I27032 )
- Removed Shader inline class that wrapped the NativeShader expect class Renamed NativeShader to Shader. The wrapped Shader inline class did not add anything valuable to the API surface and was an inline class, so use the NativeShader class directly. ( I25e4d )
Refactored PainterModifier to no longer provide scaling based on the given constraints and ContentScale parameter. Implementations of Painter are to scale their drawing content themselves based on the given size of the DrawScope they are drawing into.
Fixed issue where VectorPainter's cache bitmap was sized to its default size instead of the given size to draw into.
Updated ImagePainter to scale its content instead of relying on PainterModifier to do so on its behalf. ( I6ba90 )
add top-level withFrameNanos function for animation timing ( Ie34c5 )
@Untracked annotation has been deprecated. Replace with @ComposableContract(tracked=false) ( Id211e )
androidx.ui.foundation.TextFieldValue and androidx.ui.input.EditorValue is deprecated. TextField, FilledTextField and CoreTextField composables that uses that type is also deprecated. Please use androidx.ui.input.TextFieldValue instead ( I4066d , b/155211005 )
Fixed issue where pointer input dispatch would cause a crash if PointerInputFilters were removed via subcomposition during disptach. Теперь это исправлено. ( I1f48b , b/157998762 )
Fixed issue where pointer input dispatch would cause a crash if PointerInputFilters were removed via subcomposition during disptach. Теперь это исправлено. ( Iab398 , b/157998762 )
Refactored Radius class to be an inline class. Removed companion creation methods in favor of function constructor with default parameter to have the radius along the y-axis match that of the mandatory x-axis radius parameter.
Updated DrawScope.drawRoundRect to consume a single Radius parameter instead of 2 separate float values for the radius along the x and y axis ( I46d1b )
The Recompose composable is no longer a useful abstraction. Most recomposition should happen as a result of MutableState assignments. For anything beyond that, it is recommended that you use the
invalidate
function to trigger a recomposition of the current scope. ( Ifc992 )Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( Iede0b )
Changes the code generation strategy of Compose's compiler. Prior to the change, the compose compiler would transform calls to composable functions. With this change, we now transform the body of a composable function and leave the callsite unaltered (mostly).
This means that most of the logic communicating with the compose runtime happens at the start of the function body, instead of at the callsite.
This should be a source-compatible change for all usage of compose. Most users of compose should not have to update any code as a result of this change.
In order to support this work, the JVM signature of all composable functions has changed. A Composable function accepting a single parameter is transformed into a function accepting 3 parameters, the additional parameters are the Composer, a 'key' integer. a bitmask integer used to propagate metadata through calls.
Compose now also transforms default arguments to a composable function. It does this without introducing an additional synthetic default overload of the function itself, so this change will result in fewer functions being defined.
Known intentional behavioral changes resulting from this:
- Some calls will skip where they wouldn't have previously
- Composable expressions in default argument expressions are now correctly subscribed to and handled
This work included some optimizations: 1. The result of comparisons of parameters are propagated through the call graph to other composable functions. This will result in fewer comparisons at runtime, reduces the slot table size, as well as more skipping of composable functions that were previously not skipped 2. Paremeters which are determined to be “static” at compile time are no longer compared or stored in the время выполнения. This reduces the number of comparisons and reduces slot table size. 3. Control flow structure of the body of functions is used to minimize the number of groups that are generated. This reduces slot table size and results in less work for the runtime 4. Unused dispatch and receiver parameters to functions are not included in determining skippability of the function if they are not used inside of the body of the function.
Most breaking changes were for APIs that the compiler targets directly, and typical use of compose will not be affected: 1. Composer::startExpr was removed 2. Composer::endExpr was removed 3. Composer::call was deprecated 4. The non-varargs overloads of
key
have been removed. Use thevararg
version going forward. 5. The Pivotal annotation was deprecated. Usekey
as a replacement. 6. ScopeUpdateScope::updateScope was changed to expect a Function3 instead of Function1 7. restartableFunction and restartableFunctionN were updated to include additional compile time parameters ( I60756 , b/143464846 )Removed deprecated LayoutAlign modifiers. ( I10877 )
Removed RepaintBoundary in favor of DrawLayerModifier ( I00aa4 )
Button, FloatingActionButton and Clickable now have a separate
enabled
param. Some of the params on Button were renamed or reordered. ( I54b5a )Replaced ButtonStyle with distinct functions and removed text (string) overload. See updated samples for usage information. ( If63ab , b/146478620 , b/146482131 )
Breaking changes to the ambients API. See log and
Ambient<T>
documentation for details ( I4c7ee , b/143769776 )Changed the behavior of default TextDirection to be determined by LayoutDirection. ie If LayoutDirection is RTL, default TextDirection will be RTL. Previously it was TextDirection.ContentOrLtr/Rtl ( I4e803 )
Bug fix: When font weight and font style are nested on an AnnotatedString, text is not rendered correctly. ( I77a9d )
Adds commonly used parameters to Text(). If you are currently creating a local text style to pass a small number of these parameters, such as Text(style = TextStyle(textAlign = TextAlign.Center)), you can now just provide the parameters directly: Text(textAlign = TextAlign.Center) ( I82768 )
ui-android-text module is renamed as ui-text-android ( I68cbe )