Создать интерфейс

Фундаментальные компоненты пользовательского интерфейса, необходимые для взаимодействия с устройством, включая макет, рисование и ввод.
Последнее обновление Стабильный выпуск Кандидат на выпуск Бета-версия Альфа-релиз
13 ноября 2024 г. 1.7.5 - - 1.8.0-альфа06

Структура

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 для вашего приложения или модуля:

Groovy

dependencies {
    implementation "androidx.compose.ui:ui:1.7.5"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.ui:ui:1.7.5")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

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

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

Создать новую задачу

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

Версия 1.8

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

13 ноября 2024 г.

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

Изменения API

  • Добавляет модификатор stylusHoverIcon . ( Iff20a , b/331289114 )
  • Превращает диспетчер автозаполнения в интерфейс. ( I84914 , б/376080755 )
  • Добавляет requestFocus(FocusDirection) как в focusRequester , так и FocusTargetModifierNode чтобы разрешить фокусировку в определенном направлении. ( I5d9ec , б/245755256 )
  • FocusProperties.enter и FocusProperties.exit были заменены на onEnter и onExit с использованием области получателя вместо параметра FocusDirection . ( I6e667 )
  • Добавление поддержки автозаполнения на текстовой панели инструментов. ( Ie6a4c )
  • Изменения API в Modifier.focusRestorer() ( I99c03 ):
    • имя параметра изменено на «резервный»
    • параметр теперь является FocusRequester , а не лямбда-выражением
    • параметр теперь не равен NULL, а значением по умолчанию является значение по умолчанию.
  • Удаление аннотации @Experimental из интерфейса менеджера автозаполнения. Эта функция все еще находится в стадии разработки и ориентирована на этот выпуск, но мы не хотим вводить @Expemiental API ( Id8398 ).
  • LocalHapticFeedback теперь предоставляет реализацию HapticFeedback по умолчанию, когда API-интерфейс Vibrator указывает, что тактильные ощущения поддерживаются. В HapticFeedbackType были добавлены следующие параметры: Confirm , ContextClick , GestureEnd , GestureThresholdActivate , Reject , SegmentFrequentTick , SegmentTick , ToggleOn , ToggleOff , VirtualKey . Компоненты Wear Compose, активируемые при длительном нажатии, такие как Button , IconButton , TextButton и Card теперь выполняют тактильный эффект LONG_PRESS , когда предоставлен обработчик длительного щелчка. ( I5083d )
  • Удаляет OverscrollConfiguration и LocalOverscrollConfiguration и добавляет rememberPlatformOverscrollFactory для создания экземпляра/настройки параметров реализации чрезмерной прокрутки по умолчанию. Чтобы отключить избыточную прокрутку, вместо LocalOverscrollConfiguration provides null , используйте LocalOverscrollFactory provides null . Чтобы изменить цвет свечения/отступы, вместо LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding) , используйте LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding) . ( Ie71f9 , б/255554340 , б/234451516 )
  • Удален экспериментальный API GlobalAssertions . Его предполагаемое использование заключалось в запуске проверок доступности, вместо этого см. enableAccessibilityChecks() для этой цели. ( I59322 )

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

30 октября 2024 г.

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

Новые возможности

В этом выпуске автозаполнение отображается за флагом функции. Мы работаем над повышением производительности и ждем скорейших отзывов об API. Ожидается, что API будут развиваться до стабильной версии на основе отзывов.

  • Чтобы включить автозаполнение, установите для ComposeUiFlags.isSemanticAutofillEnabled значение true в onCreate и используйте последний моментальный снимок создания.
  • Эта версия автозаполнения поддерживает сохранение учетных данных вручную, с помощью предложения надежного пароля и навигации. Он также поддерживает заполнение, когда автозаполняемое поле получает фокус или когда автозаполнение запускается через текстовую панель инструментов в текстовых компонентах. Компонент станет выделенным, указывая на завершение автозаполнения.

Изменения API

  • Измените интерфейс автозаполнения, чтобы он соответствовал expect / actual структуре. ( I22dce )
  • Представьте CompositionLocal , который можно использовать для изменения оттенка выделения успешного заполнения автозаполнения. ( I32092 )
  • Добавлен Modifier.onRectChanged API, который позволяет подписаться на положение и размер LayoutNode относительно корня/окна/экрана. API решает многие варианты использования, которые решает существующий модификатор onGloballyPositioned , однако он делает это с гораздо меньшими накладными расходами, а API имеет средства для устранения дребезга и регулирования обратного вызова в соответствии с требованиями конкретного варианта использования. ( Id28c7 , б/372765423 , б/372757007 , б/372994338 )
  • Расширяет диспетчер автозаполнения, включив в него API-интерфейсы commit() и cancel() , которые помогают пользователям сохранять вновь введенные учетные данные. ( I2da00 )
  • Представляет новый интерфейс AutofillManager , который можно использовать для точной настройки пути пользователя к автозаполнению, а также флаг isSemanticAutofillEnabled для включения этой новой версии автозаполнения. ( I9d484 )
  • Добавлен Modifier.onRectChanged API, который позволяет подписаться на положение и размер LayoutNode относительно корня/окна/экрана. API решает многие варианты использования, которые решает существующий модификатор onGloballyPositioned , однако он делает это с гораздо меньшими накладными расходами, а API имеет средства для устранения дребезга и регулирования обратного вызова в соответствии с требованиями конкретного варианта использования. ( I3c8fa )
  • Добавьте семантические свойства и типы данных для расширенной поддержки автозаполнения. ( I52c7d )
  • Все методы в построителе AnnotatedString теперь не являются экспериментальными ( Ia89c8 , b/261561823 ).

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

  • Представления, встроенные в Compose, теперь могут получать события поворота, если они сфокусированы ( I4d53a , b/320510084 ).
  • Исправлена ​​проблема, из-за которой различные типы ресурсов не обновлялись при изменении конфигурации ( Ia9b99 , b/352336694 ).
  • Устранена проблема, из-за которой TextField не работал правильно при использовании японской клавиатуры POBox на некоторых старых устройствах Sony. ( Ia9b99 , б/373743376 )
  • Исправлена ​​проблема с отображением диалогов внизу экрана вместо центрирования ( Ia2ec , b/373093006 ).
  • Таргетинг API 35+ больше не требует, чтобы в диалогах для decorFitsSystemWindows было установлено значение false. ( Ibc94 , б/364492593 )
  • Исправлен сбой при перемещении слоев между окнами (например, диалог и основной контент) ( I675ba , b/330955281 ).

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

16 октября 2024 г.

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

Изменения API

  • Добавляет обратные вызовы DelegatableNode#onDensityChange и DelegatableNode#onLayoutDirectionChange , чтобы разрешить обновление состояния узла при их изменении ( I04f3e , b/340662451 )
  • Добавляет WindowInfo#containerSize , чтобы указать размер контейнера содержимого текущего окна. Его можно получить с помощью LocalWindowInfo . ( Idc38c , б/369334429 , б/360343819 )
  • Внедрить исправление для вложенных прокручиваемых элементов, которые удаляются из дерева узлов во время текущего выброса. Теперь эти узлы отменят бросок и правильно отправят событие onPostFling с оставшейся скоростью. Мы также вводим флаг NewNestedScrollFlingDispatchingEnabled для управления поведением в случае регрессии. Флаг будет удален перед бета-тестированием. ( I05c37 , б/371168883 )
  • Представлен PointerInputModifierNode#touchBoundsExpansion , который можно использовать для увеличения границ касания одного модификатора ввода указателя. ( Iccf02 , б/335339283 )
  • Добавляет WindowInfo#containerSize , чтобы указать размер контейнера содержимого текущего окна. Его можно получить с помощью LocalWindowInfo . ( I27767 , б / 369334429 , б / 360343819 )
  • Удалите readOnly из TextFields ', чтобы закрепить его за стабильной базовой версией. ( I3aaba )
  • Paragraph и ParagraphIntrinsics теперь принимают список всех аннотаций, примененных к AnnotatedString , раньше у него был только список SpanStyles ( I12f80 ).

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

  • Обновлен способ обработки абзацев в AnnotatedString . Раньше можно было создавать только непересекающиеся абзацы. Теперь AnnotatedString допускает полностью перекрывающиеся абзацы, которые будут объединены вместе, и вложенные абзацы, и в этом случае внешний абзац будет разделен по границам внутреннего, а стиль внутреннего абзаца будет объединен со стилем внешнего абзаца ( Ic9554 ).
  • Исправлен сбой в AnnotatedString с LinkAnnotation нулевой длины. ( 89aac6 )

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

2 октября 2024 г.

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

Изменения API

  • Обновление версии Kotlin до 1.9 ( I1a14c )
  • Представлена ​​новая роль семантики под названием «Карусель» для эмуляции поведения списка в пейджерах для служб a11y. ( Id354b , б/354109776 , б/239672673 )
  • Переименуйте invisibleToUser() в hideFromAccessibility . Его функция остается прежней. Более подробную информацию смотрите в документации. ( Ib43a3 )

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

  • Обновление документации для модификатора SensitiveContent ( Ib0442 )
  • Исправлена ​​проблема, из-за которой некоторые общие клипы контуров игнорировались в сочетании с тенями высот в некоторых версиях Android.
  • Исправлена ​​проблема, из-за которой в некоторых версиях Android применялись пустые клипы, если были указаны общие контурные клипы.
  • Исправлено исключение, возникающее, когда IME активен во внешнем представлении, а действие «Далее» используется для перехода к фокусу на ComposeView . ПоведениеclearFocus clearFocus() соответствует поведению представления в API <28, где clearFocus() может привести к фокусировке представления по умолчанию.
  • Исправлена ​​проблема, из-за которой размещение происходило на отдельных узлах в LazyList за счет разделения управления подкомпозицией для разных этапов макета.
  • Исправлена ​​проблема, из-за которой программная клавиатура мерцала при переключении фокуса с TextField на EditText или любой другой редактор на основе представления.
  • Вложенные узлы прокрутки теперь корректно отправляют события onPostFling после отсоединения.
  • Общие улучшения производительности

Версия 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.5

30 октября 2024 г.

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

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

  • Исправлены проблемы, из-за которых возвышение и обрезка с использованием пользовательских контуров не отображались должным образом.
  • Исправляет сбой текста, который происходит с LinkAnnotation нулевой ширины. ( Ic1e2e )
  • Исправлено объявление в Talkback кнопки, когда она создана в виде интерактивного составного текста. ( I1f588 )

Версия 1.7.4

16 октября 2024 г.

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

Версия 1.7.3

2 октября 2024 г.

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

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

  • Исправлена ​​проблема, из-за которой указание общего контурного клипа приводило к пустой границе клипа в некоторых версиях Android.
  • Исправлено исключение, возникающее, когда IME активен во внешнем представлении и действие «Далее» используется для перехода к фокусу на ComposeView . ПоведениеclearFocus clearFocus() соответствует поведению представления в API <28, где clearFocus() может привести к фокусировке представления по умолчанию.
  • Исправлена ​​проблема, из-за которой неправильный placeOrder использовался для аннулирования просмотра с опережением, что исправляет крайний случай, когда размещение с упреждением было пропущено.

Версия 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 вводят систему отсчета, и только при прямом манипулировании свойство будет ложным. Чтобы запросить позицию только тех, которые вводят систему отсчета, используйте 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 . По умолчанию реализация выполняет предварительную выборку первых двух вложенных элементов, однако этим поведением можно управлять с помощью новых API LazyLayoutPrefetchStrategy(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 для поддержки создания пользовательской логики подхода в явном узле модификатора. Также добавлен новый экспериментальный API DeferredTargetAnimation для анимаций, цель которых неизвестна при создании экземпляра. ( 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 из метода копирования в общедоступном API PointerInputChange . ( 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 на его основе), которые сохраняются для повторного использования в будущем, считаются деактивированными. Для тестирования таких узлов был представлен новый тестовый API assertIsDeactivated() . Остальные тестовые 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

  • Добавлен API asComposePaint , позволяющий использовать экземпляр 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 Traversal (более низкие значения приходят раньше). ( I9a81b , b/1864443263 )
  • Переименование свойства семантики isContainer в isTraversalGroup ( I121f6 ).
  • ColorProducer теперь имеет operator fun invoke вместо produce ( i4a9a2 )
  • Добавьте API преобразования Path , чтобы применить преобразование перевода/масштаба/вращения в объекты пути. ( I23434 , B/233772232 )
  • Метод ColorProducer называется produce . ( I78bde )
  • Переименовать toFrameworkColorSpace в toAndroidColorSpace ( i4F547 )
  • Переименовать ColorLambda до ColorProducer . ( I73b1a )
  • Введите API для преобразования между Android и составлением типов цветов. ( IE7DB4 , B/2799979665 )
  • В 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 , b/261581564 , b/261581931 , b/261561245 )
  • PlatformTextStyle.includeFontPadding недостаточно. Нашим первоначальным намерением было удалить поле, однако обратная связь показывает, что разработчикам нужна эта опция конфигурации. Поэтому удаление облегания с поля ( I98E96 , B/277703184 )
  • Добавлен публичный метод TextRange.constrain . ( I97912 )
  • UrlAnnotation в AnnotatedString теперь можно открыть через службы специальных возможностей, такие как TalkBack . ( If4d82 , b/253292081 )
  • Добавлено семантическое действие InsertTextAtCursor для текстовых полей. ( I11ed5 )
  • LineHeightStyle.Alignment(topRatio) Конструктор способствует стабильному API. ( I79c32 , b/261565383 )
  • TextMeasurer и связанные с ними API больше не экспериментальны. ( I74647 , b/261581753 )
  • Добавлено действие Semantics PerformImeAction , чтобы вызвать действие IME на узлах текстового редактора. ( IC606F , B/269633506 )
  • API PlatformTextInput больше не экспериментальны для Android. ( I668eb )
  • Имя параметра значения для Enum.valueOf изменено ( IA9B89 )
  • Более брошенные исключения из enum valueof ( i818fe )
  • Представил новый низкоуровневый API PlatformTextInputAdapter для создания пользовательских реализаций текста, которые непосредственно общаются с API платформы. ( I58df4 )
  • Добавлен параметр BlendMode в DrawScope.drawText , Paragraph.paint и MultiParagraph.paint Методы для поддержки различных алгоритмов смешивания при рисовании текста на холсте. ( I57508 )
  • Rename Font.MaximumAsyncTimeout в Font.MaximumAsyncTimeoutMillis . Только переименовать. ( I07af5 )
  • Обновленные значения DPI @Preview справочные устройства ( ID6151 , B/254528382 )
  • Добавьте brush , alpha -параметры в BasicText чтобы эффективно анимировать или установить текстовую щетку.
  • Определите беспроблемные типы Lambda для Float, Double, Long, Int, Short In: UI: UI-Unit ( i6f18d , b/246961787 )

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

  • Удалены множественные выделения при отслеживании скорости указателя ( I26bae ).
  • Снижение распределения в области макета и ввода указателя ( i5333a )
  • Оптимизировать использование векторной памяти и рендеринг первых кадров ( i2f3c6 )
  • Удаленные ассигнования при рисовании линий и точек с холстом ( 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 Улучшения делегирования DelegatingNode Modifier.Node Это можно сделать с помощью API -интерфейсов delegate и undelegate . До этого изменения каждый API из делегирующего узла должен был быть явно делегирован в делегированный узел. После этого изменения интерфейсы узлов будут неявно делегировать, если DelegatingNode явно их не переопределяет. ( 67352bc )

Изменения API

  • Введите NestedScrollModifierNode , NestedScroll Modifier.Node , который может быть делегирован. ( I69513 )
  • Добавлены параметры onReset и onRelease в композицию AndroidViewBinding , отражая композицию AndroidView и обеспечивая поддержку для повторного использования просмотра с помощью ViewBinding . ( I00b1e , b/276802519 )
  • Обновленные API Compose Path для поддержки операций повторной передачи для поддержки использования частых манипуляций с путем с более быстрым повторным использованием. ( I7b797 )
  • Добавлен оптимизированный TextStyle.merge(...) с полным списком параметров. ( Иад234 , б/246961787 )
  • Стабилизировал многие текстовые API, которые включают Brush , DrawStyle , TextMotion , DrawScope.drawText , Paragraph.paint(Brush) , MultiParagraph.paint(Brush) . ( I2f740 , b/261581564 , b/261581931 , b/261561245 )
  • PlatformTextStyle.includeFontPadding недостаточно. Нашим первоначальным намерением было удалить поле, однако обратная связь показывает, что разработчикам нужна эта опция конфигурации. Поэтому удаление облегания с поля ( I98E96 , B/277703184 )

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

  • Исправлена ​​регрессионная ошибка, при которой клавиатура не отображалась для текстовых полей внутри диалогов, не созданных с помощью компонуемого Dialog . ( I82551 , б / 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 и т. Д.) Теперь хорошо работают с анимациями Lookahead.

Изменения API

  • Новая intermediateMeasurePolicy , которая повторно использует политику измерения из прохода LookaHead, позволяет подтипам SubcomposeLayout без условных слотов, таких как Scaffold , TabRow и BoxWithConstraints для работы с Lookahead по умолчанию. ( ID84C8 )
  • Recomposer, созданный для окна Andide, теперь будет блокировать вызовы withFrameNanos вместо всей композиции, когда он получает уведомление ON_STOP . Это означает, что Windows, связанные с остановленными активиями, будут продолжать переоценивать для изменений данных, но анимации или любой другой вызывающий абонент withFrameNanos будут блокировать. ( Id9e7f , b/2409755572 )
  • Изменения motionEventSpy на стабильный. ( IC5EC4 , B/261560988 )
  • Добавлен публичный метод TextRange.constrain . ( I97912 )
  • PlatformTextStyle.includeFontPadding больше не устарел, чтобы поощрять разработчиков использовать этот API совместимости для переключения и настройки теста, includeFontPadding FALSE. ( I98E96 , B/277703184 )

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

5 апреля 2023 г.

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

Изменения API

  • Новый API SubcomposeLayout , который принимает дополнительную политику промежуточной меры для обработки меры/логики макета во время анимации на основе Lookahead. ( I017D3 )
  • PointerInput теперь ленив и использует Modifier.node для лучшей производительности ( прочитайте о незначительном изменении поведения ). ( 15dab9 )
  • Изменения экспериментальных API на стабильные с ключевыми событиями. ( I9c7d8 , b/261566839 , b/261567368 )
  • Изменит экспериментальные API на стабильные в PointerInputChange . ( I1b543 , b/261560988 , b/261565762 , b/261565749 )
  • Добавляет способ создать экземпляр приостановки SuspendingPointerInputModifierNode для более сложного Modifier.Node . ПРИМЕНЕНИЯ. ( IC4933 )
  • UrlAnnotation в AnnotatedString теперь можно открыть через службы специальных возможностей, такие как TalkBack . ( If4d82 , b/253292081 )
  • Добавлен API для перехвата аппаратных клавиш, прежде чем они будут отправлены на мягкую клавиатуру ( i4f4c6 , b/186800395 )
  • Добавлено семантическое действие InsertTextAtCursor для текстовых полей. ( I11ed5 )
  • Тестовые действия, связанные с текстами (например, performTextInput ), теперь будут запрашивать фокус напрямую, используя действие семантики, вместо того, чтобы нажать на поле. ( I6ed05 )

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

  • Действия текстового теста теперь требуют включения текстовых полей. ( IAB328 )

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

22 марта 2023 г.

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

Изменения API

  • Modifier.InterMediateLayout теперь не требует явного LookaHeadScope. Блок меры в IntermediateLayout имеет IntermediaTemeAsurescope в качестве приемника, который обеспечивает удобный CoroutinesCope, LookaHeadScope и Seard -Cope. ( IBE2E5 )
  • LookaHeadlayout был заменен LookaHeadScope, который больше не является макетом. Это позволяет непосредственно контролировать содержание ChID в LookaheAdeScope. ( Ibe2e5 )
  • Добавляет Modifier.Node#coroutineScope , чтобы разрешить MODIFIER.NODES для запуска CORUTINES. ( I76ef9 )
  • Разрешить модификатор. ( IB44DF )
  • Распространение @deprecated class в собственности. ( I882d1 )

Версия 1.4

Версия 1.4.3

3 мая 2023 г.

androidx.compose.ui:ui-*:1.4.3 выпускается. Версия 1.4.3 содержит эти коммиты.

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

  • Исправлена ​​проблема, где AndroidView может быть неправильно выложен при использовании с определенными модификаторами. ( I4dc77 , b/2747977771 )
  • Исправлена ​​ошибка в поиске 2D Focus, который повлиял DropDown меню ( B/276811828 )
  • Исправлена ​​ошибка в пользовательских свойствах Focus Enter/Exit, которая запустила только блок Enter/Exit в первый раз, когда Lambda была вызвана ( B/277234245 )
  • Исправлена ​​регрессия в системе фокусировки, которая вызвала сбой во время чтения focusProperties . ( B/271324781 , B/274897776 )

Версия 1.4.2

19 апреля 2023 г.

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

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

  • Исправлена ​​проблема, в которой AndroidView неправильно повторно использует свои модификаторы, потенциально приведя к неожиданному поведению и сбоям. ( IB67EE , B/275919849 )
  • Фиксированная регрессия, где клавиатура не отображалась для текстовых полей внутри диалогов, не созданных Dialog композицией ( i82551 , b/262140644 )

Версия 1.4.1

5 апреля 2023 г.

androidx.compose.ui:ui-*:1.4.1 выпускается. Версия 1.4.1 содержит эти коммиты.

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

  • Исправляет проблему с ParentDataModifier не влияющим на AndroidView ( B/2747977771 )

Версия 1.4.0

22 марта 2023 г.

androidx.compose.ui:ui-*:1.4.0 выпускается. Версия 1.4.0 содержит эти коммиты.

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

  • Добавлен новый API PinnableContainer , который позволяет прикреплять ленивые элементы списка, чтобы они не были утилизированы, когда они прокручиваются из границ. Например, Modifier.focusable() использует этот механизм для прикрепления в настоящее время сфокусированный элемент. ( IB8881 , B/259274257 , B/195049010 )
  • Система фокусировки переписывается с использованием нового экспериментального Modifier.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 , B/236159001 )
  • Теперь вы можете использовать PlatformTextStyle(emojiSupportMatch) чтобы необязательно отключить обработку поддержки эмодзи для одного абзаца. ( IA7100 , B/139326806 )
  • Android Compose Compose Tests теперь запускают пропуски макета для каждого кадра при выполнении кадров, чтобы добраться до холостого хода (например, через waitForIdle ). Это может повлиять на тесты, которые утверждают на отдельных кадрах анимации макета. ( I8ea08 , b/222093277 )
  • Добавлен экспериментальный TextMotion в TextStyle чтобы определить текст, чтобы быть Static(default) или анимированной. Используйте TextMotion.Animated , если текст будет масштабирован, переведен или повернут с помощью анимации. ( I24dd7 )

Версия 1.4.0-rc01

8 марта 2023 г.

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

Изменения API

  • Добавлена ​​перегрузка композиционной функции AndroidView , которая принимает параметр onReset . Это позволяет повторно использовать экземпляры просмотра, когда их узел в композиции отбрасывается и повторно используется совместимым. Это особенно полезно для LazyRows и LazyColumns видов. ( I3f10d , b/230099236 )
  • Представил новый низкоуровневый API PlatformTextInputAdapter для создания пользовательских реализаций текста, которые непосредственно общаются с API платформы. ( I58df4 )

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

  • Действие SetText Semantics 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

  • Удал modifierElementOf() API. Пожалуйста, продлитесь от ModifierNodeElement напрямую. ( I2256b )
  • Добавлен новый обратный вызов Modifier.Node.onReset() позволяющий сбросить какое -то локальное состояние для правильного обработки случая, когда Layout будет использоваться повторно (например, в качестве предмета LazyColumn ). Фиксированный FocusTargetModifierNode для правильного сброса сфокусированного состояния. ( I65495 , B/265201972 )
  • Добавлен параметр BlendMode в DrawScope.drawText , Paragraph.paint и MultiParagraph.paint Методы для поддержки различных алгоритмов смешивания при рисовании текста на холсте. ( 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 , расширяя API waitUntil , чтобы принять любого сопоставления и любого подсчета узлов. См. ComposeTestRule для дальнейшей документации. ( IFA1B9 , B/226934294 )
  • Rename 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 , B/265177763 )
  • Добавить новый API, чтобы отслеживать 1 размерную скорость ( IF5A82 )
  • FocusRequester теперь помечен как @Stable . ( I580ee )
  • Удалите экспериментальное аннотацию из конструктора DialogProperties , который принимает параметр usePlatformDefaultWidth . ( IC4048 )
  • Добавлена ​​функция в положение расчета и касание на расстоянии на пути - с PathMeasure.getPosition() и PathMeasure.getTangent() ( i3b47c )
  • Удален случайно открытый общедоступный сеттер на PlatformParagraphStyle . ( I07F47 )
  • Больше типа/нуляции встроенных/устаревших функций ( I24F91 )
  • Добавить AnnotatedString.hasStringAnnotations , чтобы запросить аннотации с нулевыми расщеплениями. ( I94DFE , B/246960758 )
  • Добавлена ​​новая перегрузка для функции TextMeasurer.measure , которая принимает String в качестве текста. ( I47b2d , b/242705342 )
  • API -интерфейсы LineBreak и Hyphens в TextStyle градуированы до стабильной. ( IC1E1D )

Внешний вклад

  • notifyFocusedRect методах TextInputSession и TextInputService больше не устарели. ( I23a04 , b/262648050 )

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

11 января 2023 г.

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

Новые возможности

  • Добавлен новый API PinnableContainer , который позволяет прикреплять ленивые элементы списка, чтобы они не были утилизированы, когда они прокручиваются из границ. Например, Modifier.focusable() использует этот механизм для прикрепления в настоящее время сфокусированный элемент. ( IB8881 , B/259274257 , B/195049010 )
  • Система фокусировки переписывается с использованием нового экспериментального 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 , B/236159001 )
  • Теперь вы можете использовать PlatformTextStyle(emojiSupportMatch) чтобы необязательно отключить обработку поддержки эмодзи для одного абзаца. ( IA7100 , B/139326806 )
  • Android Compose Compose Tests теперь запускают пропуски макета для каждого кадра при выполнении кадров, чтобы добраться до холостого хода (например, через waitForIdle ). Это может повлиять на тесты, которые утверждают на отдельных кадрах анимации макета. ( I8ea08 , b/222093277 )
  • Добавлен экспериментальный TextMotion в TextStyle чтобы определить текст, чтобы быть Static(default) или анимированной. Используйте TextMotion.Animated , если текст будет масштабирован, переведен или повернут с помощью анимации. ( I24dd7 )

Изменения API

  • Заменил maxSize: IntSize Argrege в drawText с size: Size который должен быть встроен с другими функциями DrawScope . size устанавливается на Size.Unspecified по умолчанию, что не должно изменять предыдущее поведение по умолчанию. ( ICD27D )
  • Удаленный устаревший экспериментальный конструктор шрифта. ( I8a724 , b/261435386 )
  • Group класса данных пользовательского интерфейса теперь имеет поле isInline , которое указывает, является ли группа для вызова встроенной композиционной функции. Если isInline true , то вызов к встроенной композиционной функции. Тем не менее, значение может быть ложным для вызовов для внедренных композиционных функций, которые взяты из модулей, которые составлены с версией плагина Compose Compiler, который не генерирует встроенную информацию о функции. ( IDB846 )
  • Окончил ряд ранее экспериментальных API до стабильных
  • API API -прокрутки ротари -прокрутки теперь стабилен ( i42AD3 , b/261561229 )
  • API FontVariation теперь стабилен ( I8779F , B/241016309 )
  • Все конструкторы Font() теперь являются стабильными API ( I5948B , B/261435386 )
  • DeviceFontFamilyName теперь стабилен ( I8B640 , B/261435386 )
  • Конструктор AndroidFont с variationSettings теперь является стабильным API и может использоваться для создания новых типов дескрипторов шрифтов. ( I5ADCC , B/261565807 )
  • API createFontFamilyResolver теперь стабилен. Это может быть использовано для ловушки непредуденных исключений во время асинхронной загрузки шрифтов. ( IBB481 , B/261435386 )
  • Font.loadingStrategy API теперь стабилен. ( I5937c , b/261435386 )
  • GoogleFont API теперь стабилен. ( IC90B0 , B/261435386 )
  • TextUnit(float, TextUnitType) теперь стабильный API. ( I90c84 , b/261561612 )
  • pluralStringResource теперь стабильный API. ( I09849 , B/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 Parameter View от root View в представление хоста. ( IA5200 )
  • Добавлен API-модификатор для запроса информации о прокрутке предков. ( I2ba9d , б / 203141462 )
  • Используется в Clickable для правильной задержки взаимодействия с нажатием, когда жесты могут стать событиями прокрутки.
  • Исправлены Clickables , которые неправильно задерживали пульсацию при использовании внутри Scrollable ViewGroup .
  • Обновлены ящики и листы для правильной задержки нажатия на случай, если жесты могут стать событиями прокрутки.
  • graphicsLayer Offscreen CompositingStrategy.Always
  • Перегрузка макета с несколькими слотами контента теперь стабильна ( i10566 , b/248294649 )
  • Добавлено экспериментальное новое APIS PerfettoTrace.record {} и PerfettoTraceRule для захвата трассов перфетто (также известных как системные следы) как часть теста, чтобы осмотреть поведение и производительность тестирования. ( I3ba16 )
  • В тестах пользовательского интерфейса с использованием правила композиции продолжения возобновлялись во время обратных вызовов withFrameNanos , не будут отправлены до тех пор, пока не завершены все обратные вызовы кадров. Это соответствует поведению сочинения при нормальном запуске. Тем не менее, тесты, которые полагаются на старое поведение, могут потерпеть неудачу. Это должно повлиять только на код, который вызывает withFrameNanos или withFrameMillis напрямую, и имеет логику вне обратного вызова, передаваемую к тем функциям, которые, возможно, потребуются перемещать внутри обратных вызовов. См. Изменения в анимационном тесте в этом CL для примеров.
  • Добавлены дополнительные onPerformTraversals: (Long) -> Unit для тестирования конструктора TestMonotonicFrameClock и заводской функции для запуска кода после обратных вызовов withFrameNanos но перед возобновлением кораток вызывающих абонентов. ( IDB413 , B/254115946 , B/222093277 , B/255802670 )
  • Добавлен Emojicompat для составления ( IBF6F9 , B/139326806 )
  • Добавлен новый параметр обоев в @Preview для динамической поддержки цвета ( i9f512 )

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

  • Уведомления о применении снимка теперь отправляются после того, как Recomposer заканчивает применение изменений. ( IAD6C0 , B/222093277 )
  • Введены изменения в captureToImage , чтобы учесть многокшиновые скриншоты. Это полезно для экранных тестов, которые используют составные всплывающие окна. ( I169C5 )

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

  • Интерфейс 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 в зависимости от композиционного размера. ( 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 в 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 )
  • Уничтожение утилизации объектов 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 )

Внешний вклад

  • Спасибо за 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 выпускается. Версия 1.3.2 содержит эти коммиты.

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

  • Обновлено для использования 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 выпускается. Версия 1.3.1 содержит эти коммиты.

Версия 1.3.0

24 октября 2022 г.

androidx.compose.ui:ui-*:1.3.0 выпускается. Версия 1.3.0 содержит эти коммиты.

Важные изменения с версии 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 выпускается. Версия 1.3.0-rc01 содержит эти коммиты.

Изменения API

  • Добавлено новые экспериментальные гайфины API для поддержки автоматической гифенации в тексте ( IAA869 )

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

  • Шрифты DeviceFontFamilyName Typeface будут настраиваться по умолчанию wght и ital . ( IA7A6D , B/246989332 )
  • Фиксированная утечка памяти LazyColumn - onModifierLocalsUpdated не вызывалась с значением по умолчанию при повторном использовании модификаторов ( B/230168389 )

Версия 1.3.0-beta03

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

androidx.compose.ui:ui-*:1.3.0-beta03 выпускается. Версия 1.3.0-beta03 содержит эти коммиты.

Изменения API

  • Добавьте параметры для настройки разрыва строки в тексте. ( I86907 )
  • Измененный size:IntSize 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-beta02 содержит эти коммиты.

Изменения 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 )

Версия 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 )

Сводка изменений

Добавленный экспериментальный 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-альфа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 , 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-альфа02

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-альфа01

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 )

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

Внешний вклад

  • Добавлен новый API WindowInfo.keyboardModifiers .

Версия 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 Core BeyondBoundsLayout
    • Новые API настройки поведения в FocusOrder и FocusProperties
    • Улучшенное поведение с помощью физической клавиатуры или телевизора
  • Новые 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 , b/229831515 )
  • Был введен экспериментальный OverscrollEffect , чтобы обеспечить пользовательские эффекты перегодности, наряду с модификатором. Modifier.scrollable перегрузки, которые принимают его.
  • Экспериментальная LocalOverScrollConfiguration была перенесена из foundation.gesture в Foundation Package и переименован в LocalOverscrollConfiguration ( IF19FB , B/204650733 )
  • Rename runComposeUiTestWithoutActivity {} to 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 , 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 )

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

18 мая 2022 г.

androidx.compose.ui:ui-*:1.2.0-beta02 выпускается. Версия 1.2.0-beta02 содержит эти коммиты.

Изменения API

  • Повторное использование функциональности в других типах предварительного просмотра ( I19F39 )

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

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer был переименован в утилизацию, чтобы DisposeOnDetachedFromWindowOrReleasedFromPool чтобы лучше отразить, что когда возникают утилизации, а не просто, когда они не возникают. ( If15ca )

Версия 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 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 Recope ComposeUiTest , которые являются такими же, как и в 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 выпускников для стабильного API ComposeContentTestRule и ComposeTestRule будут изменены, чтобы продлиться с ComposeUiTest . ( IB4E90 )

  • LineHeightBehavior переименован в LineHeightStyle

  • LineVerticalAlignment переименован в LineHeightStyle.Alignment

  • Переименовать LineHeightTrim переименован в LineHeightStyle.Trim

  • Значения конструктора по умолчанию из LineHeightStyle удалены ( i582bf , b/181155707 )

  • Добавлена Brush в TextStyle и SpanStyle чтобы обеспечить способ нарисовать текст с градиентным окрашиванием. ( I53869 , B/187839528 )

  • trimFirstLineTop , trimLastLineBottom Атрибуты LineHeightBehavior изменились на единый переход: LineHeightTrim . LineHeightTrim имеет значения 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 )

Внешний вклад

  • MouseInjectionScope.scroll(delta = someDelta) теперь перевернут на Android, если мы прокручиваем вертикально (если когда -нибудь положительно, он прокрутится вниз) ( IFB697 , b/224992993 )

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

20 апреля 2022 г.

androidx.compose.ui:ui-*:1.2.0-alpha08 выпускается. Версия 1.2.0-alpha08 содержит эти коммиты.

Изменения API

  • Функции pluralStringResource были отмечены как экспериментальные, чтобы позволить эволюции поддерживать лучшую интернационализацию в будущем. ( If24e4 )
  • Параграф и многократный параграф теперь принимают параметр ограничений. Прохождение Constraints.maxHeight -это неоперация в данный момент, но позволит сделать некоторые расчеты в будущем, например, эллипсип на основе высоты. ( I6afee , b/168720622 )
  • SubcomposeSlotReusePolicy.getSlotsToRetain() теперь принимает пользовательский класс, похожий на муки, который не позволяет добавлять в него новые элементы. ( ICD314 )
  • Pointericon теперь интерфейс @Stable ( i9dafe )
  • Частичное потребление (позиция вниз ИЛИ) устарело в PointerInputChange . Вы можете использовать consume() чтобы полностью использовать изменения. Вы можете использовать isConsumed , чтобы определить, использовал ли это изменение кто-то другой ранее.
  • PointerInputChange::copy() теперь всегда создает неглубокую копию. Это означает, что копии PointerInputChange будут использованы после использования одной из копий. Если вы хотите создать несвязанный PointerInputChange , используйте вместо этого конструктор. ( Ie6be4 , б/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 )

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

6 апреля 2022 г.

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

Изменения API

  • Новая функция Snapshot.withoutReadObservation { ... } был добавлен. Это позволяет пользователям запускать пропущенную Lambda, не подписываясь на изменения значений состояния, прочитанных в этом блоке. Вы можете найти его полезным в использовании, когда вы хотите извлечь выгоду из поток на основе снимка безопасной записи/чтения, но хотите иметь возможность читать значение, не вызывая ненужного переоборудования или переработки. ( I9f365 , b/214054486 )
  • Свойство расширения consumeWindowInsets в ComposeView позволяет разработчикам отключить потребление Android WindowInsets . Это позволяет отдельно ComposeViews в иерархии для каждого применения WindowInsets не вмешиваясь друг на друга. ( I0ef08 , b/220943142 )
  • Добавлен KeyboardType.Decimal в качестве альтернативы Keyboard.Number . ( IEC4C8 , B/209835363 )
  • PointerEventType.Scroll и PointerEvent.scrollDelta сейчас стабильные API ( i574c5 , b/225669674 )
  • Enable Nested Scroll interop between View and Compose for cooperating View classes. This means compose is now able to dispatch scroll deltas to a (cooperating) View parent. ( I5d1ac , b/174348612 )
  • Обновленная FontFamily.Resolver для интеграции настройки доступности жирного шрифта в масштабах общесистемой ( i6c1e7 )
  • Font(AssetManager, String, ...) is deprecated, replaced with Font(String, AssetManager, ...) . This is an experimental API. ( I1c7a4 )
  • Добавьте новый Font(DeviceFontFamilyName) в опционально поиск системных шрифтов во время запасных цепочек шрифта. ( I30468 , B/219754572 )
  • Добавлена ​​конфигурация временной совместимости для includeFontPadding в TextStyle/ParagraphStyle. includeFontPadding может быть изменен с помощью TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)) . Это временная опция конфигурации для включения миграции и будет удален. ( If47be , b/171394808 )
  • Add GoogleFont.Provider.isAvailableOnDevice extension for debugging help. ( I64e31 )
  • Add GoogleFont.Provider constructor for use with @ArrayRes ( Ic5ee1 , b/225984280 )
  • Compose GoogleFont is now called Font(GoogleFont) , API remains stable otherwise. ( I125f2 )

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

  • Added lint check to material/Scaffold to ensure that the inner padding is being used ( Ifb111 )

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

23 марта 2022 г.

androidx.compose.ui:ui-*:1.2.0-alpha06 is released. Версия 1.2.0-alpha06 содержит эти коммиты.

Изменения API

  • Добавлено RequestFocus Semantics Action, чтобы запросить фокус на фокусируемой цели. ( I17B71 )
  • Updated parsing of vector drawables to support auto mirroring to flip the content of a VectorPainter if the current layout direction is RTL. ( I79cd9 , b/185760237 )
  • Updated shadow/ambient colors to be trailing parameters of Modifier.graphicsLayer for API compatibility ( I3f864 , b/160665122 )

  • Added default implementations to shadow/ambient color on GraphicsLayerScope to ensure non-breaking API changes

  • Added event time to RSB events ( Ief8ae )

  • FocusOrder в настоящее время объединен в FocusProperties , а focusProperties() теперь обладает всеми возможностями focusOrder() . FocusOrder и focusOrder() установились. focusOrder() , который принимает focusRequester должен быть заменен модификатором focusRequester() в сочетании с focusProperties() . This allows the modifiers to have a stronger separation of concerns. ( I601b7 )

  • Upgrading both RecyclerView and Compose will now result in much better scrolling performance for RecyclerViews with Compose views as children.

  • Add ViewCompositionStrategy.Default as a means of retrieving the built-in default strategy

  • Add ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer , which is the new default strategy and properly handles pooling containers such as RecyclerView. ( If7282 )

  • Added support for annotating annotations classes with @Preview as a first step for adding the Multipreview feature. Such annotations could be used to annotate Composable methods or other annotation classes, which could then be considered as indirectly annotated with the given @Preview. ( I12eff )

  • Reference devices added to the Devices list for @Preview ( I071c9 )

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

  • Updated Vector graphics APIs to use the proper composable annotation @VectorComposable instead of @UiComposable ( I942bc )
  • Remove crossinline from AnnotatedString.Builder.withStyle ( If84d5 )

Внешний вклад

  • compose-ui: Add ambientShadowColor and spotShadowColor properties to GraphicsLayerScope ( I1ba1a , b/160665122 )
  • Plural resources are now supported via the pluralStringResource functions. ( Ib2f23 , b/191375123 )

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

9 марта 2022 г.

androidx.compose.ui:ui-*:1.2.0-alpha05 is released. Версия 1.2.0-alpha05 содержит эти коммиты.

Изменения API

  • TextToolbar now takes lambda arguments instead of ActionCallback . ( Ib2eb9 , b/197950089 )
  • Updated nullability in core and appcompat to match Tiramisu DP2 ( I0cbb7 )
  • Measured interface now exposes parentData property ( I3313f )
  • Modifier.onPlaced and the OnPlacedModifier interface are now stable. ( Ib5482 )
  • Ура! Compose animation now supports 'Animator duration scale' setting from Developer Options. ( I5a4fc , b/161675988 )
  • Added a BeyondBoundsLayout modifier local ( If8b51 , b/184670295 )
  • Текст: includeFontPadding теперь отключен по умолчанию. Проблемы с отсечением, возникающие в результате includeFontPadding=false обрабатываются, и для длинных скриптов обрезка происходить не должна. ( I31c84 , б / 171394808 )

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

  • ComposeContentTestRule.setContent will now throw an IllegalStateException if you try to set content when there already is content. ( I888a5 , b/199631334 )
  • Исправлен сбой, вызванный содержимым буфера обмена при чтении из буфера обмена на Android. ( I06020 , б/197769306 )
  • Improve RSB scrolling samples. ( I6a596 )

Внешний вклад

  • Updated to use Kotlinx coroutines 1.6.0 ( I3366d )

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

23 февраля 2022 г.

androidx.compose.ui:ui-*:1.2.0-alpha04 is released. Версия 1.2.0-alpha04 содержит эти коммиты.

Изменения API

  • Добавлены ComposableTarget , ComposableTargetMarker и ComposableOpenTarget , которые позволяют во время компиляции сообщать о том, когда компонуемая функция вызывается с таргетингом на приложение, для которого она не предназначена.

    В большинстве случаев аннотации могут быть выведены плагином компилятора Compose, поэтому непосредственное использование этих аннотаций должно быть редким. Случаи, которые не могут быть выведены, включают создание и использование пользовательского приложения, абстрактных составных функций (таких как методы интерфейса), полей или глобальных переменных, которые являются составными лямбда-выражениями (выводятся локальные переменные и параметры), или при использовании ComposeNode или связанных составных функций. .

    For custom appliers the composable functions that calls ComposeNode or ReusableComposeNode need to add a ComposableTarget annotation for the function and any composable lambda parameter types. Однако рекомендуется создать аннотацию, помеченную с помощью ComposableTargetMarker , а затем помеченную аннотацию использовать непосредственно вместо ComposableTarget . Составная аннотация, помеченная ComposableTargetMarker эквивалентна ComposbleTarget с полным именем класса атрибута в качестве параметра применения. Пример использования ComposableTargetMarker см. в anroidx.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 into FontFamily.Resolver . ( Ia0060 )

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

  • Provided FontFamily.Resolver are passed to subcompositions such as Popup.
  • Provided Font.ResourceLoader are passed to subcompositions such as Popup. ( I48fa5 )

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

9 февраля 2022 г.

androidx.compose.ui:ui-*:1.2.0-alpha03 is released. Версия 1.2.0-alpha03 содержит эти коммиты.

Изменения API

  • notifyFocusedRect methods in TextInputSession and TextInputService are now deprecated and won't be called. Use BringIntoViewRequester instead. ( Ia4302 , b/192043120 , b/216842427 , b/178211874 )
  • Introduced destroyDisplayListData method on RenderNode 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 via LocalFontFamilyResolver.current

  • Added createFontFamilyResolver(context) and createFontFamilyResolver(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, deprecated TextLayoutResult.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 see AndroidFont .

  • Font.AndroidResourceLoader extension function allows construction of a Font.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 use FontFamilyResolver.preload .

  • fontResource(FontFamily): Typeface is deprecated. This was previously used to preload fonts, which may take up to 10 seconds for downloadable fonts. Instead use FontFamilyResolver.preload ( If8e7c , b/174162090 )

  • SubcomposeLayoutState constructor accepting maxSlotsToRetainForReuse is now deprecated. Instead there is a new constructor accepting SubcomposeSlotReusePolicy - 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 returns State<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 )

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

26 января 2022 г.

androidx.compose.ui:ui-*:1.2.0-alpha02 is released. Версия 1.2.0-alpha02 содержит эти коммиты.

Изменения API

  • Added Modifier.onRotaryScrollEvent() and Modifier.onPreRotaryScrollEvent() for wear devices with a rotating side button ( I18bf5 , b/210748686 )
  • Add experimental View.createLifecycleAwareRecomposer extension ( I0cde6 )

Внешний вклад

  • PointerEvent.scrollDelta.y is now inverted on Android (now it returns 1 instead of -1 if we tilt mouse wheel to the right) ( Ia9811 )

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

12 января 2022 г.

androidx.compose.ui:ui-*:1.2.0-alpha01 is released. Версия 1.2.0-alpha01 содержит эти коммиты.

Изменения 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 )

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

  • Теперь зависит от Kotlin 1.6.10 .

Версия 1.1

Версия 1.1.1

23 февраля 2022 г.

androidx.compose.ui:ui-*:1.1.1 is released. Версия 1.1.1 содержит эти коммиты.

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

  • Исправьте NullPointerException в androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList ( aosp/1947059 , b/206677462 ).
  • Исправлен сбой, вызванный содержимым буфера обмена при чтении из буфера обмена на Android. ( I06020 , б/197769306 )
  • Исправлено RTL в LazyVerticalGrid ( aosp/1931080 , b/207510535 )

Версия 1.1.0

9 февраля 2022 г.

androidx.compose.ui:ui-*:1.1.0 is released. Версия 1.1.0 содержит эти коммиты.

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

  • Стабильная поддержка эффекта Overscroll Android 12.
  • Улучшения в сенсорном изменении целевого размера.
    • Обратите внимание, что в Compose 1.0 компоненты Material будут расширять свое пространство макета, чтобы соответствовать рекомендациям по доступности Material для сенсорного размера цели . Например, цель касания кнопки расширится до минимального размера 48x48dp, даже если вы установите меньший размер кнопки. Это приводит Compose Material в соответствие с тем же поведением компонентов Material Design, обеспечивая единообразное поведение при смешивании представлений и Compose. Это изменение также гарантирует, что при создании пользовательского интерфейса с использованием компонентов Compose Material будут соблюдены минимальные требования к доступности сенсорной цели.
  • Стабильная поддержка навигационного рельса
  • Стабильный уровень ряда ранее экспериментальных API.
  • Поддержка новых версий Kotlin

Версия 1.1.0-rc03

26 января 2022 г.

androidx.compose.ui:ui-*:1.1.0-rc03 is released. Версия 1.1.0-rc03 содержит эти коммиты.

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

  • Updated to support Compose Material 1.1.0-rc03

Версия 1.1.0-rc01

15 декабря 2021 г.

androidx.compose.ui:ui-*:1.1.0-rc01 is released. Версия 1.1.0-rc01 содержит эти коммиты.

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

  • Fixed a bug that caused missing accessibility scroll actions ( I7cbfb )
  • SemanticsNodeInteraction.captureToImage() will now also work if HardwareRenderer.isDrawingEnabled() is false , by enabling it for the duration of the call ( Idf3d0 )

Версия 1.1.0-beta04

1 декабря 2021 г.

androidx.compose.ui:ui-*:1.1.0-beta04 is released. Версия 1.1.0-beta04 содержит эти коммиты.

Новые возможности

  • Обновлен для совместимости с 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 from Exception instead of directly from Throwable . Note that this means that catch clauses that were catching Exception might now catch ComposeNotIdleException s, where they wouldn't do that previously. ( I9c217 )

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

  • Fix text handles not moving when IME visibility changes. ( I25f2e )

Версия 1.1.0-beta03

17 ноября 2021 г.

androidx.compose.ui:ui-*:1.1.0-beta03 is released. Версия 1.1.0-beta03 содержит эти коммиты.

Изменения 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() and InjectionScope.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 and MultiModalInjectionScope.Mouse . In order to inject touch and mouse events for multi-modal gestures, you can now use MultiModalInjectionScope.touch() and MultiModalInjectionScope.mouse() , both of which accept a lambda that has the receiver scope of that modality. ( Idde18 )

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

  • The default value for durationMillis in TouchInjectionScope.swipeWithVelocity is now calculated such that the swipe is feasible. ( I19deb )

Версия 1.1.0-beta02

3 ноября 2021 г.

androidx.compose.ui:ui-*:1.1.0-beta02 is released. Версия 1.1.0-beta02 содержит эти коммиты.

Изменения 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 )

Внешний вклад

  • Added Modifier.pointerHoverIcon ( I95f01 )

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

27 октября 2021 г.

androidx.compose.ui:ui-*:1.1.0-beta01 is released. Версия 1.1.0-beta01 содержит эти коммиты.

Изменения 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 )

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

13 октября 2021 г.

androidx.compose.ui:ui-*:1.1.0-alpha06 is released. Версия 1.1.0-alpha06 содержит эти коммиты.

Изменения API

  • Remove ExperimentalComposeUiApi from ViewRootForInspector and LayoutInfo.ownerViewId ( I5c2e3 )
  • Была добавлена ​​бездетная перегрузка для Layout с повышенной эффективностью ( Ib0d9a ).
  • Removed InternalCompilerApi from Composer methods that are required to be called cross-module ( I1aa0b )
  • SemanticsNodeInteraction.performSemanticsAction now returns the SemanticsNodeInteraction on which the function was called. ( I9e5db )
  • Added LocalInputModeManager CompositionLocal to detect TouchMode/NonTouchMode. ( I6a83c , b/175899786 )
  • Added viewConfiguration: ViewConfiguration to LayoutInfo to allow consumers get the correct value for things like long press timeout. ( I76ca6 )
    • Added viewConfiguration: ViewConfiguration to InjectionScope 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 .
  • Реализация ExpedDropdownMenu на основе ExpedDropdownMenuBox с TextField и DropdownMenu внутри ( If60b2 )
  • dismissOnOutsideClick was added to PopupProperties, replacing dismissOnClickOutside which was deprecated. Новое свойство получает позицию щелчка и границы привязки, обеспечивая более точный контроль над тем, следует ли вызывать onDismissRequest или нет. Например, это может быть полезно для предотвращения отклонения якоря при касании якоря.
    • updateAndroidWindowManagerFlags was added to PopupProperties, offering low-level control over the flags passed by the popup to the Android WindowManager. Параметром лямбды будут флаги, рассчитанные на основе значений PopupProperties, которые приводят к флагам WindowManager: например, фокусируемый. Результатом лямбды будут окончательные флаги, которые будут переданы в Android WindowManager. По умолчанию updateAndroidWindowManagerFlags оставит без изменений флаги, рассчитанные на основе параметров. Этот API следует использовать с осторожностью, только в тех случаях, когда всплывающее окно имеет очень специфические требования к поведению. ( I6e9f9 )
  • Recomposer.state has been deprecated and replaced by Recomposer.currentState to change its type to a StateFlow ( Ic2ab3 , b/197773820 )
  • Added flush() and dispose() to InjectionScope . 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 implements Density , allowing you to easily convert between px and dp in performTouchInput 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 )

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

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

androidx.compose.ui:ui-*:1.1.0-alpha05 is released. Версия 1.1.0-alpha05 содержит эти коммиты.

Изменения API

  • Added support for inter-modifier communication ( Id5467 , b/198826874 )
  • Added experimental historical pointers to PointerEventChange. ( Ic1fd8 , b/197553056 , b/199921305 )
  • Added density: Density and layoutDirection: LayoutDirection to LayoutInfo . This allows consumers of LayoutInfo to interpret the dimensions and position exposed in LayoutInfo properly. ( I002f1 )
  • Added experimental support for injecting mouse events. Use performMouseInput to start sending mouse events, or send mouse events through the Mouse property of MultiModalInjectionScope during a multi modal input gesture with performMultiModalInput . See MouseInjectionScope 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 )

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

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

androidx.compose.ui:ui-*:1.1.0-alpha04 is released. Версия 1.1.0-alpha04 содержит эти коммиты.

Изменения API

  • PointerEvent now has a PointerEventType 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 )
  • Устаревшие performGesture и GestureScope заменены на performTouchInput и TouchInjectionScope . ( Ia5f3f , б/190493367 )
  • В SemanticsNode добавлен touchBoundsInRoot , который включает минимальный размер цели касания, чтобы разработчики могли гарантировать, что цели касания соответствуют минимальным требованиям доступности. ( I2e14b , б/197751214 )
  • Redo implementation of inspectable ( I927bc , b/191017532 )
  • Changed parameter name of inspectable to match composed ( I3a482 , b/191017532 )
  • Introduced performTouchInput and TouchInjectionScope as a replacement for performTouchInput and TouchInjectionScope , paving the way for other modalities (like mouse).

    TouchInjectionScope has the same methods as GestureScope , with the exception of movePointerTo and movePointerBy , which have been renamed to updatePointerTo and updatePointerBy . All other methods are the same.

    The behavior of TouchInjectionScope is almost identical to GestureScope , with two small details:

    1. When sending a down event while pointers had been moved without sending a move event (in other words, updatePointerTo() has been used, but not move() , and then down() 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.
    2. 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 method currentPosition(pointerId: Int) to get the current position of the given pointer. ( If1191 , b/190493367 )

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

  • Разрешить клипу расширять границы цели касания за пределы области клипа для целей минимального касания цели. ( I43e10 , б/171509422 )
  • Support for stretch overscroll has been added on Android 12 devices. ( Iccf3c , b/171682480 )

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

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

androidx.compose.ui:ui-*:1.1.0-alpha03 is released. Версия 1.1.0-alpha03 содержит эти коммиты.

Новые возможности

  • Обновлен Compose 1.1.0-alpha03 для зависимости от Kotlin 1.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 )
  • В ViewConfiguration добавлен минимальный размер сенсорного объекта для использования в семантике и вводе указателя для обеспечения доступности. ( Ie861c )
  • Add TileMode.Decal support which is useful in defining edge behavior for blur based RenderEffects. ( I7e8ed , b/166927547 )
  • performScrollToIndex , performScrollToKey , hasScrollToIndexAction and hasScrollToKeyAction are now stable API ( I142ae , b/178483889 )
  • Добавлен тестовый метод для получения обрезанных границ. ( I6b28e )

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

  • Removed isBounded method from BlurredEdgeTreatment in favor of explicitly checking if the shape parameter is null. ( I85d68 )

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

18 августа 2021 г.

androidx.compose.ui:ui-*:1.1.0-alpha02 is released. Версия 1.1.0-alpha02 содержит эти коммиты.

Изменения 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 )

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

4 августа 2021 г.

androidx.compose.ui:ui-*:1.1.0-alpha01 is released. Версия 1.1.0-alpha01 содержит эти коммиты.

Изменения 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 new androidx.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 )

  • Обновлен метод DrawScope#drawImage, который использует прямоугольники источника и назначения для использования дополнительного параметра FilterQuality. Это полезно для пиксельной графики, которая должна быть пикселизированной при масштабировании для пиксельной графики. Обновлен состав BitmapPainter + Image, теперь он также использует дополнительный параметр FilterQuality ( 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 )
  • Диалоги теперь соответствуют поведению при изменении размера платформы. Установите для usePlatformDefaultWidth false, чтобы переопределить это поведение. ( Иффаед , р/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. Версия 1.0.5 содержит эти коммиты.

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

  • Исправлен сбой при отслеживании экземпляров производныхStateOf. ( аосп/1792247 )

Версия 1.0.4

13 октября 2021 г.

androidx.compose.ui:ui-*:1.0.4 is released. Версия 1.0.4 содержит эти коммиты.

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

  • Обновлено в зависимости от Kotlin 1.5.31

Версия 1.0.3

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

androidx.compose.ui:ui-*:1.0.3 is released. Версия 1.0.3 содержит эти коммиты.

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

  • Обновлено в зависимости от Kotlin 1.5.30

Версия 1.0.2

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

androidx.compose.ui:ui-*:1.0.2 is released. Версия 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 is released. Версия 1.0.1 содержит эти коммиты.

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

  • Обновлено в зависимости от Kotlin 1.5.21 .

Версия 1.0.0

28 июля 2021 г.

androidx.compose.ui:ui-*:1.0.0 is released. Версия 1.0.0 содержит эти коммиты.

Основные особенности версии 1.0.0

Это первая стабильная версия Compose. Более подробную информацию можно найти в официальном блоге Compose Release !

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

  • Если вы используете Android Studio Bumblebee Canary 4 или AGP 7.1.0-alpha04 / 7.1.0-alpha05 , вы можете столкнуться со следующим сбоем:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    Чтобы исправить это, временно увеличьте minSdkVersion до 24+ в файле build.gradle . Эта проблема будет исправлена ​​в следующей версии Android Studio Bumblebee и AGP 7.1 . ( р/194289155 )

Версия 1.0.0-rc02

14 июля 2021 г.

androidx.compose.ui:ui-*:1.0.0-rc02 is released. Версия 1.0.0-rc02 содержит эти коммиты.

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

  • Диалоги теперь соответствуют поведению при изменении размера платформы. Установите для usePlatformDefaultWidth false, чтобы переопределить это поведение. ( Иффаед , р/192682388 )

Версия 1.0.0-rc01

1 июля 2021 г.

androidx.compose.ui:ui-*:1.0.0-rc01 is released. Версия 1.0.0-rc01 содержит эти коммиты.

Новые возможности

  • Split ui-tooling module into ui-tooling and ui-tooling-preview ( Iefa28 , b/190649014 )

Изменения API

  • Removed deprecated experimental FocusManager#moveFocusIn and FocusManager#moveFocusOut ( I227d7 , b/170154986 , b/186567354 , b/168510304 )
  • Canvas now supports a contentDescription parameter for accessibility. ( Ib547c )
  • useDefaultMaxWidth в PopupProperties был переименован в usePlatformDefaultWidth . ( I05710 )
  • Диалоги теперь могут использовать всю ширину экрана. ( I83929 , р/190810877 )
  • Added experimental support for HSV and HSL color representations. ( Id7cf8 , b/180731008 )

Изменения поведения

  • Compose @Preview now provides a LocalActivityResultRegistryOwner that allows you to preview Composables that use APIs like rememberLauncherForActivityResult() that depend on that owner existing. ( Ib13d1 , b/185693006 )
  • Compose @Preview now provides a LocalOnBackPressedDispatcherOwner that allows you to preview Composables that use APIs like BackHandler that depend on that owner existing. ( Ia1c05 , b/185693006 )

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

  • Moved InfiniteAnimationPolicy to androidx.compose.ui:ui ( I5eb09 , b/160602714 )
  • AnimatedImageVector was temporarily removed in order to change the module structure. ( I41906 , b/160602714 )

Версия 1.0.0-beta09

16 июня 2021 г.

androidx.compose.ui:ui-*:1.0.0-beta09 is released. Версия 1.0.0-beta09 содержит эти коммиты.

Изменения 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 изменен на встроенный класс. ( 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 as ComposeTestRule.mainClock.advanceTimeUntil {} More limitations are expected to be identified in the future. ( I284fa )

Добавлены правила профиля

В этом выпуске правила профиля добавлены в следующие модули составления ( I14ed6 ):

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

Что такое правила профиля?

  • Правила профиля для библиотеки указаны в текстовом файле baseline-prof.txt расположенном в каталоге src/main или его эквиваленте. В файле указывается правило для каждой строки, где правило в данном случае представляет собой шаблон для сопоставления с методами или классами в библиотеке. Синтаксис этих правил представляет собой расширенный набор удобочитаемого формата профиля ART, который используется при использовании adb shell profman --dump-classes-and-methods ... . Эти правила принимают одну из двух форм и ориентированы либо на методы, либо на классы.

  • Правило метода будет иметь следующий шаблон:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • И правило класса будет иметь следующий шаблон:

    <CLASS_DESCRIPTOR>
    
  • Здесь <FLAGS> — это один или несколько символов H , S и P , указывающие, следует ли пометить этот метод как «Горячий», «Запуск» или «После запуска».

  • <CLASS_DESCRIPTOR> — это дескриптор класса, которому принадлежит целевой метод. Например, класс androidx.compose.runtime.SlotTable будет иметь дескриптор Landroidx/compose/runtime/SlotTable; .

  • <METHOD_SIGNATURE> является сигнатурой метода и включает имя, типы параметров и типы возвращаемых данных метода. Например, метод fun isPlaced(): Boolean в LayoutNode имеет подпись isPlaced()Z .

  • Эти шаблоны могут содержать подстановочные знаки ( ** , * и ? ), чтобы одно правило охватывало несколько методов или классов.

Что делают правила?

  • Метод с флагом H указывает, что этот метод является «горячим» и его следует скомпилировать заранее.

  • Метод с флагом S указывает, что этот метод вызывается при запуске и его следует скомпилировать заранее, чтобы избежать затрат на компиляцию и интерпретацию метода во время запуска.

  • Метод с флагом P указывает, что это метод, который вызывается после запуска.

  • Класс, присутствующий в этом файле, указывает на то, что он используется во время запуска и должен быть предварительно выделен в куче, чтобы избежать затрат на загрузку классов.

Как это работает?

  • Библиотеки могут определять эти правила, которые будут упакованы в артефакты AAR. 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. Обратите внимание, что это не повлияет на отлаживаемые приложения.

Версия 1.0.0-beta08

2 июня 2021 г.

androidx.compose.ui:ui-*:1.0.0-beta08 is released. Версия 1.0.0-beta08 содержит эти коммиты.

Изменения API

  • NestedScrollSource enum is replaced by an inline class. ( Ie321b , b/187055290 )
  • FocusManager.clearFocus(forcedClear = true) is renamed to FocusManager.clearFocus(force = true) ( Ia0c41 )
  • Использование перечислений изменено на встроенные классы, чтобы избежать проблем с исчерпывающими операторами if при добавлении новых значений перечисления. ( I2b5eb )
  • Remove @ExperimentalComposeUiApi from PopupProperties . ( I01fa6 )
  • PointerType was changed from an enum to an inline class ( If5058 )
  • Свойства семантики ContentDescription и Text больше не являются отдельными значениями, а являются списками. Это позволяет объединять их как есть, а не конкатенировать. Также предоставлены улучшенные API-интерфейсы тестирования для использования этих изменений ( Ica6bf , b/184825850 ).
  • Modifier.focusModifier() устарел и заменен на Modifier.focusTarget() ( I6c860 ).
  • Modifier.onSizeChanged() and Modifier.onGloballyPositioned() are not inlined functions anymore ( I727f6 , b/186109675 )
  • KeyboardType enum is replaced by an inline class. ( I73045 , b/187055290 )
  • Перечисление FocusState заменено на интерфейс FocusState ( 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 , and detectHorizontalGestures 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() был изменен, чтобы сообщать координаты этого модификатора в цепочке модификаторов, а не координаты макета после применения всех модификаторов. Это означает, что теперь порядок модификаторов влияет на то, какие координаты будут сообщаться. ( Ieb67d , р/177926591 )

Версия 1.0.0-beta07

18 мая 2021 г.

androidx.compose.ui:ui-*:1.0.0-beta07 is released. Версия 1.0.0-beta07 содержит эти коммиты.

Изменения 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 and TextDecoration on AnnotatedString will be applied as given. ( I61900 , b/184760917 )

Версия 1.0.0-beta06

5 мая 2021 г.

androidx.compose.ui:ui-*:1.0.0-beta06 is released. Версия 1.0.0-beta06 содержит эти коммиты.

Изменения API

  • Solve Conflict with Navigation Gesture ( I1145e )
  • @ComposeCompilerApi no longer @RequiresOptIn ( Iab690 )
  • Добавлены API доступности CollectionInfo и CollectionItemInfo, которые позволяют помечать коллекцию и ее элементы для служб доступности ( Id54ef , b/180479017 ).
  • Added SemanticsActions.ScrollToIndex to scroll a list with indexed items to the item with a certain index, and SemanticsProperties.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, and SemanticsNodeInteraction.performScrollToKey that scrolls a list to the item with the given key. ( I4fe63 , b/178483889 , b/161584524 )
  • Added ownerViewId to GraphicLayerInfo ( I19f62 )
  • Added Font() overloads to load fonts from assets, File and FileDescriptor ( I5d382 )
  • Добавлена error API доступности, которая позволяет пометить узел, содержащий недопустимые входные данные ( I12997 , b/180584804 , b/182142737 ).
  • Added Font() overloads to load fonts from assets, File and FileDescriptor ( I43007 )
  • AnnotatedString save support to TextFieldValue.Saver . Added addTtsAnnotation and withAnnotation utility functions to AnnotatedString.Builder ( I8cbdc , b/178446304 )
  • Added TextUnit constructor function TextUnit(value: Float, type: TextUnitType) ( I7ecce , b/178446304 )

Версия 1.0.0-бета05

21 апреля 2021 г.

androidx.compose.ui:ui-*:1.0.0-beta05 is released. Версия 1.0.0-beta05 содержит эти коммиты.

Изменения API

  • Added experimental FocusManager.moveFocus(In) and FocusManager.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 and accessibilityActionScrollDown 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 )

Версия 1.0.0-beta04

7 апреля 2021 г.

androidx.compose.ui:ui-*:1.0.0-beta04 is released. Версия 1.0.0-beta04 содержит эти коммиты.

Изменения API

  • Переименуйте hideSoftwareKeyboard и showSoftwareKeyboard в SoftwareKeyboardController в hide() и show() соответственно.
    • Предоставить полный интерфейс CompositionLocal для LocalSoftwareKeyboardController, позволяющий его устанавливать (особенно полезно в тестах) ( I579a6 ).
  • Добавлен API доступности LiveRegion. Если узел помечен как активный регион, службы доступности автоматически уведомят пользователя о его изменениях ( 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 via FragmentContainerView when the AndroidViewBinding is removed from the compose hierarchy. ( Ib0248 , b/179915946 )
  • AndroidViewBinding now correctly nests fragments inflated via FragmentContainerView when your ComposeView is within a Fragment , 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 via FragmentContainerView after configuration changes. ( I0743d , b/179915946 )

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

24 марта 2021 г.

androidx.compose.ui:ui-*:1.0.0-beta03 is released. Версия 1.0.0-beta03 содержит эти коммиты.

Изменения API

  • Deferred check for ViewTree dependencies of ComposeView ( I8dbbf , b/182466548 )
  • Added optional startX / endX and startY / endY parameters to swipeUp / swipeDown / swipeLeft / swipeRight functions in GestureScope . ( I49e2d , b/182063305 )

Версия 1.0.0-beta02

10 марта 2021 г.

androidx.compose.ui:ui-*:1.0.0-beta02 is released. Версия 1.0.0-beta02 содержит эти коммиты.

Изменения API

  • Добавлен новый локальный API композиции LocalSoftwareKeyboardController для замены предыдущего интерфейса SoftwareKeyboardController в TextField. ( I5951e , б / 168778053 )
  • Добавлен новый локальный API композиции LocalSoftwareKeyboardController для замены предыдущего интерфейса SoftwareKeyboardController в 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 )

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

  • Ввести ограничения на публичное использование экспериментальных API ( I6aa29 , b/174531520 ).
  • androidx.compose.ui:ui больше не зависит от AppCompat или Fragment. Если вы используете ComposeView в своем приложении и используете Fragment и/или AppCompat, убедитесь, что вы используете AppCompat 1.3+/Fragment 1.3+ — эти версии необходимы для правильной установки владельцев жизненного цикла и сохраненного состояния, необходимых для ComposeView. ( I1d6fa , б/161814404 )
  • Fix for broken rememberSaveable { mutableStateOf(0) } when used inside a destination of navigation-compose. ( I1312b , b/180042685 , b/180701630 )
  • Добавлен новый локальный API композиции LocalSoftwareKeyboardController для замены предыдущего интерфейса SoftwareKeyboardController в TextField. ( I658b6 , b/168778053 )
  • Fixed rare NoSuchElementException in ComposeRootRegistry 's tearDownRegistry() ( Iddce1 )

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

24 февраля 2021 г.

androidx.compose.ui:ui-*:1.0.0-beta01 is released. Версия 1.0.0-beta01 содержит эти коммиты.

Это первый выпуск бета-версии Compose 1.0.0.

Изменения API

  • onStart callback has been added to detectDragGestures ( I67269 , b/179995594 )
  • Модификаторы для определения размера встроенных функций больше не являются экспериментальными. ( 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 заменено на [Mutable]InteractionSource
    • Интерфейсы отвечают за отправку/сбор событий взаимодействия.
    • Вместо передачи interactionState = remember { InteractionState() } таким компонентам, как Button и Modifier.clickable() , используйте interactionSource = remember { MutableInteractionSource() } .
    • Вместо: Interaction.Pressed in interactionState вам следует использовать функции расширения InteractionSource, такие как InteractionSource.collectIsPressedAsState().
    • В сложных случаях использования вы можете использовать InteractionSource.interactions для наблюдения за потоком взаимодействий. Дополнительные сведения см. в документации и примерах InteractionSource.
    • ( I85965 , б/152525426 , б/171913923 , б/171710801 , б/174852378 )
  • Добавьте интерфейс AccessibilityMananger и LocalAccessibilityMananger в CompositionLocals ( I53520 ).
  • Удалены устаревшие методы LayoutCoordinates, используйте функцию вместо свойства для PositionInParent и BoundsInParent ( I580ed , b/169874631 , b/175142755 ).
  • Typealiases replaced by underlying types:
    • ColorStop is now Pair<Float, Color>
    • SpanStyleRange is now `AnnotatedString.Range
    • ParagraphStyleRange is now AnnotatedString.Range<ParagraphStyle>
    • StringAnnotation is now AnnotatedString.Range<String>
    • ( I8dd1a )
  • Создан новый TextInputSession для сеансов ввода из текстовых компонентов низкого уровня, таких как CoreTextField. ( I8817f , б / 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 )
  • Добавить модификатор selectGroup, который позволяет помечать коллекцию вкладок или радиокнопок в целях доступности ( Ie5c29 ).
  • The defaultFactory for compositionLocalOf and staticCompositionLocalOf 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 )

  • Модификаторы размера были переименованы. Modifier.width/height/size были переименованы в requireWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize были переименованы в ширину/высоту/размер. ( I5b414 )

  • Modifier.tapGestureFilter has been removed. Use Modifier.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 )

  • Ориентация перенесена в пакет фундамента. VelocirtTracker перешёл с ui.gesture на ui.input.pointer. ( Iff4a8 , б/175294473 )

  • imageResource и VectorResource теперь являются функциями расширения сопутствующих изображений ImageBitmap и ImageVector соответственно. load{Image,Vector,Font}Resource были удалены. ( I89130 )

  • AnimationClockObservable and subclasses have been removed. AnimatedFloat has been removed. ( Icde52 , b/177457083 )

  • Поставщики переименованы в CompositionLocalProvider.

    • Конструктор композиции больше не принимает ключевой параметр и считается устаревшим.
    • currentCompositeKeyHash превращен в составное свойство верхнего уровня вместо составной функции верхнего уровня.
    • CompositionData и CompositionGroup были перемещены в пространство имен androidx.compose.runtime.tooling.
    • ComposableLambda стал интерфейсом, а не конкретным классом, и больше не имеет параметров типа.
    • ComposableLambdaN стал интерфейсом, а не конкретным классом, и больше не имеет параметров типа.
    • Функция snapshotFlow была перенесена в пространство имен androidx.compose.runtime.
    • метод слияния SnapshotMutationPolicy больше не является экспериментальным
    • Функция ClearRoots верхнего уровня @TestOnly была удалена. В этом больше нет необходимости.
    • Функции keySourceInfoOf и resetSourceInfo были удалены. Они больше не нужны.
    • Composer.collectKeySourceInformation удален. В этом больше нет необходимости.
    • Методы isJoinedKey, joinKeyLeft и joinKeyRight были удалены. Они больше не нужны.
    • Различные API верхнего уровня были перемещены и реорганизованы в разные файлы. Из-за семантики классов файлов Kotlin это нарушит двоичную совместимость, но не совместимость исходного кода, поэтому не должно быть проблемой для большинства пользователей.
    • ( I99b7d , б/177245490 )
  • ComponentActivity.setContent() was removed from compose:ui. Use the one from androidx.activity:activity-compose:1.3.0-alpha01 . viewModel() and LocalViewModelStoreOwner were removed from compose:ui. Use the ones from androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 ( I6f36b )

  • Modifier.scrollable был переработан. Теперь он использует интерфейс Scrollable вместо класса ScrollableController ( I4f5a5 , b/174485541 , b/175294473 ).

  • CustomEvens support from PointerInputModifier has been removed ( I02707 , b/175294473 )

  • SnapshotStateObserver is not Experimental anymore ( Id2e6a )

  • Удалены некоторые ранее устаревшие API ( 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 )

  • Удалены утверждения dp ( I798d2 ).

  • Removed androidx.compose.runtime:runtime-dispatch ( I55feb )

  • Text actions now check focus automatically ( I13777 , b/179648629 )

  • Removed runBlockingWithManualClock ( I15cdc , b/179664814 )

  • Позиция прокрутки в Modifier.verticalScroll()/horizontalScroll() теперь представлена ​​с помощью Ints ( I81298 ).

  • FlingConfig был переименован в FlingBehavior, теперь позволяет настраивать анимацию приостановки, а не предопределенные Decays. ( I02b86 , б/175294473 )

  • Added a helper function that is helpful to set the same action for all ImeAction callbacks ( I63447 , b/179226323 )

  • Удален обратный вызов SoftwareKeyboardController из всех текстовых полей, который вскоре будет заменен новым API. ( Iae869 , б / 168778053 )

  • FontSpan and FontWeigthStyleSpan are no longer used and removed. ( Ie5b56 , b/177423444 )

  • Внесены следующие изменения в API материалов:

    • Добавлен параметр contentPadding в Top/BottomAppBar, позволяющий настраивать отступы по умолчанию.
    • Параметры в BackdropScaffold изменены в соответствии с рекомендациями API: обязательные параметры должны располагаться перед необязательными параметрами.
    • Параметр icon в BottomNavigationItem перемещен после selected и onClick .
    • Параметр alwaysShowLabels в BottomNavigationItem переименован в alwaysShowLabel .
    • Параметры bodyContent в некоторых компонентах переименованы в просто content .
    • Переупорядочены параметры в ButtonDefaults.buttonColors() . Обратите внимание: поскольку тип параметров не изменился, это не приведет к ошибке в вашем коде. Убедитесь, что вы либо используете именованные параметры, либо обновите порядок вручную, иначе ваш код не будет работать так же, как раньше.
    • Добавлен secondaryVariant параметр в darkColors() . Этот цвет, как правило, такой же, как и secondary в темной теме, но добавление для последовательности и дальнейшей настройки.
    • Удаленные возвышения и оживления () с общественной поверхности API, поскольку они не использовались / полезны.
    • Переименовано в onValueChangeEnd в Slider , чтобы onValueChangeFinished и сделать его нулевым.
    • Переименованный параметр text в Snackbar к content для последовательности.
    • Добавлен параметр contentPadding в DropdownMenuItem чтобы позволить настройку настройки по умолчанию, а content - расширение на RowScope .
    • Переименован ModalDrawerLayout в ModalDrawer .
    • Переименован в BottomDrawerLayout до BottomDrawer .
    • ( 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 )
  • Добавлен новый локальный API композиции LocalSoftwareKeyboardController для замены предыдущего интерфейса SoftwareKeyboardController в TextField. ( I658b6 , b/168778053 )

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

10 февраля 2021 г.

androidx.compose.ui:ui-*:1.0.0-alpha12 is released. Версия 1.0.0-alpha12 содержит эти коммиты.

Изменения API

  • Support for ViewGroups was removed from UiApplier. The Deprecated emitView composables were removed. ( Ifb214 )
  • Modifier.PointerInput теперь требует, чтобы ключи запомнить, чтобы указать, когда коратика обнаружения ввода указателя должна перезапустить для новых зависимостей. ( 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 )
  • Чтобы лучше соответствовать соглашениям об именах с ImageBitmap и ImageVector, ImagePainter был переименован в Bitmappainter для параллельного векторпейтера. ( 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 перенесла на Androidx.Activity.compose.SetContent в модуле AndroidX.Activity: Compose-Compose. ( Icf416 )
  • Методы разрушения и копии () были удалены из нескольких классов, где они редко использовались. ( I26702 , B/178659281 )
  • Moved Popup to be platform specific. AndroidPopupProperties has been renamed to PopupProperties, and isFocusable has been moved to a focusable parameter in PopupProperties ( 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 устарел. Вместо этого используйте Fontresource. ImagerSource, LoadImagerSource, VectorResource и LoadVectorResource устаревают. Вместо этого используйте Painterresource. ( 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 () был переименован в Roundtopx (). ( I9b7e4 , b/173502290 )
  • Intbounds был переименован в интеграцию, и API был улучшен. ( I1f6ff )
  • Snapshot API was updated to be more consistent with API guideline as well as hiding internal implementation classes from the public API. ( Id9e32 )
  • Добавлены действия по расширению и обрушению семантики. Добавлены Expand и Halfexpand в ModalbottomSheetState ( IB5064 )
  • MODIFIER.Draggesturefilter был устарел. Используйте Modifier.pointerInput { detectDragGestures (...)} вместо этого. В качестве альтернативы, используйте модификатор.daggeable для одной оси сопротивления ( i0ba93 , b/175294473 )
  • Переименованные в окружающую среду, чтобы соответствовать окружающей среде -> композиционное переименование. Амбиденты раньше назывались AmbientFoo, теперь композиции называются Localfoo. ( I2d55d )
  • The deprecated BaseTextField is now removed. Вместо этого используйте BasicTextField. ( I71368 )
  • Отбор был перенесен в фундамент. ( I7892b )
  • Подобно тому, как мы ранее удалили state { 0 } композиционное и теперь продвигаем использование, как remember { mutableStateOf(0) } мы собираемся удалить savedInstanceState { 0 } . Вместо этого вы должны использовать rememberSaveable { mutableStateOf(0) } и он будет сохранять и восстановить автоматически, если тип, используемый внутри мутабестата, может храниться в пакете. Если ранее вы передали пользовательский объект Save Saver, теперь вам нужно использовать новую перегрузку Remememberableable, которая имеет параметр stateSaver . Использование будет выглядеть следующим образом: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } ( ib4c26 , b/177338004 )
  • Added password semantics for accessibility ( I231ce )
  • Добавлен ProgressBarrangeInfo.inteTermate, чтобы отметить неопределенные бары прогресса для доступности ( i6Fe05 )
  • emptyContent() и (@Composable () -> Unit).orEmpty() Утилиты устарели, поскольку они больше не оказывают положительного воздействия на производительность или значения ( I0484D )
  • snapshotFlow and withMutableSnapshot 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 )
  • Введенный API Colormatrix, используемый для изменения значений RGB исходного контента рефакторированного цветового API, чтобы быть интерфейсом и соответствовать реализации PathEffect. ( ICA1E8 )
  • Добавьте Param MayoutDirection в SHAME'S CREATEOUTLINE. Это позволяет создавать формы, осведомленные на направлении макета. ( I57c20 , b/152756983 )
  • OnimeactionPerformed устарел. Вместо этого используйте клавишники ( 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 with ComposeTestRule . ( 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 )
  • Тупессоифильтер, DoubleTapGestureFilter, LongpressGessureFilter и PressIndicaitongestureFilter были устарели. Используйте MODIFIER.CLICKABLE или MODIFIER.POINTERINPUT с функцией DETECTTAPSTUREREURS. ( I6baf9 , b/1752944473 )
  • SaveableStateRegistry's unregisterProvider was removed. Instead registerProvider() now returns SaveableStateRegistry.Entry object which you can use to unregister ( Ic4274 , b/178583739 )
  • RemembersAvedInstanceState () был переименован в Rememmersableable () и перенесен на Androidx.compose.runtime.savable 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(). [Аннотация] ComposeView теперь по умолчанию для лениво созданных, рецимпозиторов с окнами, управляемыми ViewTreelifeCycleowner для окна. Клеки анимации на основе переоборудования и Framenanos приостановлены, а жизненный цикл хозяина остановлен. ( 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 был перенесен с androidx.compose.runtime.savedinStancestate на androidx.compose.runtime.savable ( 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 )
  • Параметры на Roundercornershape, Cutcornershape и угловой основе были переименованы слева/справа, чтобы запустить/конец, чтобы поддержать автоза зеркало формы в направлении RTL. Absoluteroundercornershape и Absolutecutcornershape были введены для тех случаев, когда автомирация не желается. ( 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 )

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

28 января 2021 г.

androidx.compose.ui:ui-*:1.0.0-alpha11 is released. Версия 1.0.0-alpha11 содержит эти коммиты.

Изменения API

  • С Constraints был переработан как BoxWithConstraints и переехал на 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 )
  • Изменения PopuppositionProvider для использования оконных координат, а не глобальных координат. Переименование ParentGlobalBounds в якорьи и изменения WindowsGlobalbounds для Windowsize: Intsize ( i2994a )
  • Продолжительность и время безотказной работы будут заменены длинными миллисекундами, и этот шаг удаляет зависимость ввода указателя от этих классов. ( 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 )
  • Устаревшие глобальные координаты и создали новые координаты на основе окон. ( IEE284 )
  • Добавлен MODIFIER.TOOLINGGRAPHICSLAYER, который добавляет модификатор графического уровня при включении проверки. ( I315df )
  • FocusRequester.createrefs теперь отмечается настолько экспериментальным, насколько это может измениться. ( I2d898 , b/177000821 )
  • SemanticsPropertyReceiver.hidden был переименован в Invisibletouser и помечен @ExperimentalComposeuiapi. Доступность RangeInfo была переименована в ProgressBarrangeInfo. STATERSCRENCERANGE был переименован в ProgressBarrangeInfo. Доступность Crollstate была переименована в ScrollaxRange. HorizontalAccessibuityScrollstate был переименован в HorizontalsCrollaxRange. VerticalCaseBessibilityScrollstate был переименован в 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 )
  • Удаленные экспериментальные методы монотонического фрамеанимации ( 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
    • ТекстСтиль
    • ШрифтВес
    • TextDecoration
    • TextGeometricTransform
    • Текстиндекс
    • 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 и Onactive были устарели в пользу API -интерфейсов SideEffect и OndayableEffect ( 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 )
  • Введен ComposeContentTestRule , который расширяет ComposeTestRule и определяет setContent , который был удален из ComposeTestRule . Добавлен заводской метод createEmptyComposeRule() который возвращает ComposeTestRule и не запускает для вас деятельность. Используйте это, когда вы хотите запустить свою деятельность во время теста, например, используя ActivityScenario.launch ( i9d782 , b/174472899 )

  • AnimateSstate теперь AnimateFoosState, где Foo - это тип переменной, которая анимированная. Например, Float, DP, смещение и т. Д. ( IE7E25 )

  • Параметр описания содержания был добавлен в изображение и значок. Он используется для предоставления описания услугам доступности ( i2ac4c )

  • Удалите DisplaySize, как следует избегать. Как правило, лучше использовать размер orroot () или размер окна, по крайней мере. ( 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 )
  • Invalidate и CompositionReference () в настоящее время устанавливаются в пользу CurrentRecomposeScope и MamescompositionReference соответственно. ( 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 for CompositionLifecycleObserver 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 composition onRemembered is called for each reference where onEnter is only called once. onEnter was called multiple time if the object was used in subcompositions, such as WithConstraints and Scaffold making the single onEnter call guarantee unreliable and it was removed for RememberObserver .

    RememberObserver adds onAbandoned which is called if the RememberObserver instance is returned from the callback passed to remember but was not remembered in the composition state and, therefore, will never have onRemembered 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 of RememberObserver following the single reference recommendation above is tracking an external resource both onForgotten and onAbandoned each indicate that the resource is no longer needed. If the object is tracking work started or resources allocated in onRemembered , onAbandoned can be ignored as it will not be called if onRemembered 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/ряд были устарели. 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. Пользователи все еще могут решить, что им не нужно ленивое поведение, и использовать модификаторы непосредственно: Column (modifier.verticalScroll (RemembersCrollState ())) ( IB976B , B/170468083 )

  • Новые items(count: Int) Фабричный метод для объема Lazycolumn/Lazyrow/LazyverticalGrid. items(items: List) и itemsIndexed(items: List) теперь являются функциями расширения, поэтому вам приходится вручную импортировать их при использовании. Новые перегрузки расширения для массивов: items(items: Array) и itemsIndexed(Array) ( i803fc , b/175562574 )

  • Please use ImeAction.None instead of ImeAction.NoAction

    • Please use ImeAction.Default instead of ImeAction.Unspecified ( Ie1bcc )
  • Использовать тестовый тестовый

  • Renamed TextInputService.onStateUpdated as updateState ( Id4853 )

  • Переход на основе перехода на основе на основе рефиниции устарел ( I0AC57 )

  • TextUnitType.Inherit is removed. Please use TextUnitType.Unspecified instead. ( I9ff64 )

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

13 января 2021 г.

androidx.compose.ui:ui-*:1.0.0-alpha10 is released. Версия 1.0.0-alpha10 содержит эти коммиты.

Критические изменения

  • 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 )
  • Модифицированная скорость, чтобы иметь компонентные части и математические операции. ( IB0447 )
  • Переименовано @ExperimentalTesting в @ExperimentalTestApi чтобы соответствовать аналогичным экспериментальным аннотациям API ( 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 )

  • Добавить переключатель к фонду strings.kt ( i4a5b7 , b/172366489 )

  • Перенесите NativeClass в модуль пользовательского интерфейса и сделал его внутренним. Обновленные использование nativeClass в равенных реализациях для использования «MyClass». ( I4f734 )

  • MODIFIER.FOCUS () и MODIFIER.FOCUSREQUESTER () устарели. Используйте modifier.focusmodifier () и modifier.focusReference () вместо этого. ( 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 )
  • Переименованное положение в DPOFFSET и удаление 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() теперь заменяется animateAsState() , который возвращает State<T> вместо T . Это обеспечивает лучшую производительность, так как область недействительной может быть сужена до того места, где считывается значение состояния. ( IB179E )
  • Добавьте API роли семантики и добавьте роль в качестве параметра к кликабельному, выбираемому и переоборудованию SemanticsModifier. Изменен Modifier.ProgressSemantics, чтобы слайдер также мог его использовать. ( I216cd )
  • New coroutine-based API Animatable that ensures mutual exclusiveness among its animations.
    • New DecayAnimationSpec to support multi-dimensional decay animation
    • ( I820f2 , b/168014930 )

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

16 декабря 2020 г.

androidx.compose.ui:ui-*:1.0.0-alpha09 is released. Версия 1.0.0-alpha09 содержит эти коммиты.

Изменения 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 устарел. Вместо этого используйте модификатор .
  • For suspending pointer input APIs, renamed HandlePointerInputScope to AwaitPointerEventScope and handlePointerInput() to awaitPointerEventScope(). ( Idf0a1 , b/175142755 )
  • API AutoBill API теперь экспериментальный API и требует OPT-In ( I0A1EC )
  • Adding destructuring declarations to create FocuSRequester instances ( I35d84 , b/174817008 )
  • AccessibilityLabel была переименована в ContentDescription. Доступность Value была переименована в привлечение. ( 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 to insertTopDown() .

    A new method, insertBottomUp() , was added.

    An applier either inserts nodes into the tree it is editing using insertTopDown() or insertBottomUp() depending on which performs better.

    Some trees, such as LayoutNode and View , 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 an Applier overrides insertBottomUp() to build a tree bottom-up and insertTopDown() 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 )

  • Добавлен MODIFIER.CLEARANDSETSEMANTICS, чтобы очистить семантику потомков и установить новые. ( I277ca )

  • Перенос ContentDrawScope в модуль UI-Graphics, чтобы быть с 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 в смещенных модификаторах теперь возвращают Intoffset, а не плавают. ( 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, чтобы лениво создать экземпляр шейдера, когда доступны размеры информации об среде рисования. Это полезно для определения градиентов, которые занимают полные границы рисунка композиции во время композиции, без необходимости реализовать пользовательские реализации DrawModifier.

    Униженные API -интерфейсы функции градиента в пользу заводских методов на градиентном объекте. ( I511FC , B/173066799 )

  • Отрешить Lazycolumnfor, Lazyrowfor, Lazycolumnforindexed и Lazyrowforindexed. Вместо этого используйте Lazycolumn и Lazyrow ( 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 )

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

2 декабря 2020 г.

androidx.compose.ui:ui-*:1.0.0-alpha08 is released. Версия 1.0.0-alpha08 содержит эти коммиты.

Изменения API

  • Добавить семантическое действие увольнение ( i2b706 )
  • Перенесенные API -интерфейсы DrawModifier из пакета Androidx.compose.ui в пакет androidx.compose.ui.draw. Создан файл draitmodifierdeprecated.kt, чтобы включить методы Typealiases/Helper, чтобы помочь с миграцией от устаревшего в текущие API. ( ID6044 , B/173834241 )
  • Переименованный модификатор.drawlayer to modifier.graphicslayer также обновил связанные классы для GraphicsLayer в соответствии с обратной связью API. ( 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> был удален из объявления SubCompoSelayout. Вы можете использовать его, не указав тип сейчас. ( IB60C8 )
  • Добавлен MODIFIER.SCALE/OTE API в качестве удобств для Drawlayer.
    • Переименованный Modifier.drawOpacity Modifier.alpha
    • Переименованный Modifier.drawShadow to Modifier.shadow ( I264CA , B/173208140 )
  • Made PointerInputData's uptime and position fields non-nullable. ( Id468a )
  • MaterialTheme теперь устанавливает правильные цвета для ручек выбора и фона выбора. Нестацированные приложения могут вручную использовать AmbientTextexTectectionColors для настройки цветов, используемых для выбора. ( 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 and pivotFractionY as component1 and component2 ( If43c4 , b/173586560 )
  • Добавлена ​​проверка на пробег для композиционного именования параметров Lambda, чтобы проверить согласованность с руководящими принципами составления. Также мигрировал некоторые API, используя children в качестве названия для их запекания Lambda до content , согласно проверке и руководству. ( IEC48E )
  • Added API to check if Alt, Ctrl, Meta or Shift modifier keys were pressed when a keyevent was dispatched. ( I50ed9 )
  • Добавлен новый Modifier.drawLayer() . Это требует блока Lambda на новой GraphicsLayerscope, где вы определяете параметры слоя таким образом, что позволяет пропустить перекосирование и реле, когда произойдет изменение состояния. Drawlayermodifier в настоящее время является внутренним при подготовке к миграции своей логики в Placebule.placewithlayer () Метод LayoutModifier ( I15E9F , B/173030831 )
  • Установившись в окружающей среде, названные с Ambient в качестве суффикса, и заменили их новыми свойствами, префиксированными окружающей средой, следуя за другими окружающими, и составил руководящие принципы API. ( I33440 )
  • Moved androidx.compose.ui.text.Typeface to androidx.compose.ui.text.font.Typeface ( Ic2b81 )
  • Семантика аргументов Mergealldescendants был переименован в 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. Добавлены типовые векторасетболдера для связи с ImageVector.Builder для compat. ( ICFDC8 )
  • Переименованные в ImageAsset и связанные с ними методы 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 )
  • Передетные свойства семантики Foundation в пользовательский интерфейс ( 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 )
  • Интерфейс выравнивания был обновлен и сделан функциональным. ( 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 to layoutId for LayoutIdParentData . Measurable.id was renamed to Measurable.layoutId . ( IADBCB , B/172449643 )
  • New multitouch gesture detector, including helpers for detecting rotation, zoom, and panning. ( Ic459d )
  • Введены API API SweepGradientShader и SweepGradientBrush. ( IA22C1 )
  • Контроль времени в тестах (TestanimationClock и его использование) в настоящее время экспериментально ( 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 )

  • Обновлено API TextfieldValue

    • сделано TextFieldValue.composition Readonly
    • Удаленное исключение, брошенное для неверного диапазона выбора ( I4A675 , B/172239032 )
  • Support TtsAnnotation for text to speech engine. ( I54cc6 )

  • New APIs for running animations in coroutines ( Ied662 )

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

  • Параметр выравнивания коробки был переименован в ContentalEnment. ( I2c957 )
  • Модификаторы OffsetPX были переименованы в смещение. Сейчас они принимают параметры Lambda вместо состояния. ( IC3021 , B/173594846 )
  • Added resetInput parameter to TextInputService#onStateUpdated ( I3e8f5 , b/172239032 , b/171860947 )
  • Добавлена ​​проверка стыков для параметров модификатора в композиционных функциях. Эта проверка ворса проверяет именование, тип возврата, значение по умолчанию и порядок параметра для согласованности с руководящими принципами составления. ( 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 ie typeface(Typeface.DEFAULT) . Also renamed typefaceFromFontFamily() to typeface() ( I52ab7 )
  • Added lint check to check that Modifier factory functions are defined as extensions on Modifier, so they can be fluently chained together. ( I07981 )
  • Удалить старый модуль UI-теста и его заглушки ( 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 переименован в TextUnit.Unpasified для согласованности с другими единицами. ( IFCE19 )

Создание пользовательского интерфейса версии 1.0.0-alpha07

11 ноября 2020 г.

androidx.compose.ui:ui-*:1.0.0-alpha07 is released. Версия 1.0.0-alpha07 содержит эти коммиты.

Изменения 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 )
  • Экспериментальскую аннотацию была удалена. Subcomposelayout теперь можно использовать без добавления @optin ( i708AD )
  • Firstbaseline и Lastbaseline были перенесены на пакет androidx.compose.ui.layout ( IED2E7 )
  • Removed opacity from drawShadow() modifier as it was confusing. ( I82c62 , b/171624638 )
  • Measersult был выброшен из -за мер. ( IBF96D , B/1711844002 )
  • Несколько символов, связанных с макетом, были перемещены с Androidx.compose.ui на 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 был устарел и заменен на материал. Текст. Для базового, неопинозированного текстового API, который не потребляет значения из темы, см. Androidx.compe.foundation.basictext. ( IF64CB )
  • Обновите TextFields, чтобы принять клавишники ( IDA7F3 )
  • Переименовать клавиатуры как imeoptions ( i82f36 )
  • Перемещенные клавиатуры и ImeAction в клавишники ( 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 устарел. Вместо этого используйте BasicTextField. ( I896EB )
  • Introduce ui-test-junit4 module ( Ib91f8 )
  • relativePaddingFrom was renamed to paddingFrom . Был добавлен модификатор paddingFromBaseline , в качестве удобства для определения расстояний от границ макета до текстовых базовых линий. ( I0440A , B/170633813 )
  • Запущенная и была переименована в запуск для согласованности с API API -интерфейсом SideEffect и OndayableEffect. Запущенное вмешательство без предмет Params не разрешено для того, чтобы поощрять передовые практики. ( 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 multiple Modifier.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 )

Внешний вклад

  • Disabled publication of internal artifact androidx.compose.ui:ui-text-android ( Ib93fa )

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

28 октября 2020 г.

androidx.compose.ui:ui-*:1.0.0-alpha06 is released. Версия 1.0.0-alpha06 содержит эти коммиты.

Изменения API

  • Recomposer is now a CompositionReference and a valid composition parent. Explicit Recomposer is now required in fewer places. ( I4036f )
  • Умоляйте вектарпаинтер в пользу MemplyVectorpainter, чтобы лучше указать, что композиционный API внутренне использует «помните» для сохраняющихся данных в разных композициях. ( 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 и ContentDrawScope - это интерфейсы вместо абстрактных классов
    • Созданная реализация Canvasdrawscope of DrawScope
    • Рефакторированные реализации DrawScope для использования CanVassCope вместо этого
    • Создан DrawContext для обертывания зависимостей для 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 from PointerInputFilter.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 )
  • Включить переходы в Composetestrule; Удалите опцию, чтобы включить мигающий курсор из Composetestrule. ( If0de3 )
  • Added KeyboardCapitalization IME Option ( I8ac38 )
  • Добавлена ​​параметр «Клавиатура с одной линией» в Coretextfield ( i72e6d )
  • Move SimpleContainer into PopupTestUtils.kt ( I65c3e )
  • Переименован Radius API в Cornererradius, чтобы лучше выразить, как он используется на протяжении всей Compose. Обновленная документация, чтобы указать, что отрицательные угловые радиусы зажимаются до нуля. ( 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 )
  • Коробка была сделана встроенной функцией. ( IBCE0C , B/155056091 )

Внешний вклад

  • Support different locales for AnnotatedString.capitalize and AnnotatedString.decapitalize ( I4aa7f )

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

14 октября 2020 г.

androidx.compose.ui:ui-*:1.0.0-alpha05 is released. Версия 1.0.0-alpha05 содержит эти коммиты.

Изменения 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 )
  • Всплывающие окна и диалоги теперь наследуют flag_secure от родительского окна. Также добавлена ​​опция для явного настройки ( 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 from PointerInputFilter.onPointerEvent(...) . ( Id067e )

  • Disable Selection in Text, and a Demo. ( Ie7e97 )

  • Made onGloballyPositioned an inline function ( I15830 )

  • OnPositionEdModifier переименован в OnGloballyPositionEdModifier, а OnPosited () переименован в OnGloballyPosited (). ( 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 )
  • В рамках стандартизации значений страданцев для встроенных классов, переименовать Color.unset to Color.Unpasifified для согласованности с другими встроенными классами ( I97611 , B/169797763 )

  • TextOverflow.NONE не введен. Когда переполнение не будет, текст больше не будет обрабатывать переполнение, и он сообщит о своем фактическом размере для майора. ( 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 )

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

1 октября 2020 г.

androidx.compose.ui:ui-*:1.0.0-alpha04 is released. Версия 1.0.0-alpha04 содержит эти коммиты.

Изменения 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 )

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

16 сентября 2020 г.

androidx.compose.ui:ui-*:1.0.0-alpha03 is released. Версия 1.0.0-alpha03 содержит эти коммиты.

Изменения API

  • Remove scroll forward/backward semantics actions. Added steps in AccessibilityRangeInfo. ( Ia47b0 )
  • Removed onInvalidate() from Owner -- 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 and AndroidInputDispatcher from androidx.ui.test.android to androidx.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 )

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

2 сентября 2020 г.

androidx.compose.ui:ui-*:1.0.0-alpha02 is released. Версия 1.0.0-alpha02 содержит эти коммиты.

Изменения 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 )

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

26 августа 2020 г.

androidx.compose.ui:ui-*:1.0.0-alpha01 is released. Версия 1.0.0-alpha01 содержит эти коммиты.

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. Use AndroidView 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 by FocusState ( 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 and OnChildPositionedModifier . Developers should use onPositioned and OnPositionedModifier 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 to SemanticsPropertyKey . 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 to PlacementScope.place() , and the previous PlacementScope.place() was renamed to PlacementScope.placeRelative() . As a result, the PlacementScope.place() method will not automatically mirror the position in right-to-left contexts anymore. If this is desired, use PlacementScope.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 to remember { mutableStateOf(...) } for clarity. This reduces the overall API surface and number of concepts for state management, and matches the by 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 and Column 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 )
    1. Remove unused OffsetBase interface
    2. Align Offset and IntOffset classes to have a consistent API surface
    3. Rename IntOffset.Origin to IntOffset.Zero to be consistent with Offset API
    4. Moved nativeCanvas method off of Canvas interface to support consumers to create their own Canvas instances
    5. Created stub EmptyCanvas class to refactor DrawScope to be a non-null parameter instead of lateinit and ensure non-nullability of the field
    6. Renamed ClipOp enums to be Pascal Case
    7. Renamed FilterQuality enums to be Pascal Case
    8. Renamed StrokeJoin enums to be Pascal Case
    9. Renamed PointMode enums to be Pascal Case
    10. Renamed PaintingStyle enums to be Pascal Case
    11. Renamed PathFillType enums to be Pascal Case
    12. Renamed StrokeCap enums to be Pascal Case
    13. Updated DrawCache implementation to no longer use lateinit params
    14. Updated DrawScope to no longer use lazy delegation for fillPaint and strokePaint internal parameters
    15. Updated Image composable to avoid Box usage for less overhead
    16. Updated Outline class to have @Immutable annotations
    17. Updated PathNode to have @Immutable annotations for each path instruction
    18. Updated Vector subcomposition to remove redundant conditional checks for equality as compose already handles them
    19. Deprecated Rect companion constructor methods in favor of function constructors
    20. Updated Brush classes and function constructors with @Immutable and @Stable APIs
    21. Updated VertexMode enum to be PascalCase
    22. Updated DrawScope selectPaint method to conditionally overwrite stroke parameters on the paint if they have changed
    23. 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 . Use SemanticsNodeInteraction.performGesture instead. ( Id9b62 )
  • LazyColumnItems was renamed to LazyColumnFor . LazyRowItems was renamed to LazyRowFor ( I84f84 )
  • foundation.shape.corner package was flattened to foundation.share ( I46491 , b/161887429 )
  • Renamed AndroidComposeTestRule to createAndroidComposeRule . ( I70aaf )
  • Added more APIs to TextLayoutResult . ( Id7e04 )
  • Material FilledTextField was renamed to TextField and foundational TextField was renamed to BaseTextField 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 to runOnIdle ( 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. This is now fixed. ( I1f48b , b/157998762 )

  • Fixed issue where pointer input dispatch would cause a crash if PointerInputFilters were removed via subcomposition during disptach. This is now fixed. ( 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:

    1. Some calls will skip where they wouldn't have previously
    2. 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 the vararg version going forward. 5. The Pivotal annotation was deprecated. Use key 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 )