Compose Material

Создавайте интерфейсы Jetpack Compose с помощью готовых компонентов Material Design. Это точка входа более высокого уровня для Compose, предназначенная для предоставления компонентов, соответствующих описанным на сайте www.material.io.
Последнее обновление Основная версия Release Candidate Бета-версия Альфа-версия
7 октября 2026 г. 1.12.1 - 1.13.0-beta01 -

Структура

Compose – это сочетание семи идентификаторов группы Maven в androidx. Каждая группа содержит определенный набор функций, для которых есть отдельные примечания к выпуску.

В таблице ниже перечислены группы и ссылки на примечания к каждому выпуску.

ГруппаОписание
compose.animationСоздавать анимацию в приложениях Jetpack Compose, чтобы повышать удобство для пользователей.
compose.compilerПреобразуйте функции @Composable и включите оптимизацию с помощью плагина компилятора Kotlin.
compose.foundationСоздавайте приложения Jetpack Compose с помощью готовых блоков и расширяйте их, чтобы создавать собственные элементы системы проектирования.
compose.materialСоздавайте интерфейсы Jetpack Compose с помощью готовых компонентов Material Design. Это точка входа более высокого уровня для Compose, предназначенная для предоставления компонентов, соответствующих описанным на сайте www.material.io.
compose.material3Создавайте интерфейсы Jetpack Compose с помощью компонентов Material Design 3 – следующего поколения Material Design. Material 3 включает обновленные темы и компоненты, а также функции персонализации Material You, такие как динамические цвета. Он разработан с учетом нового визуального стиля Android 12 и системного интерфейса.
compose.runtimeОсновные строительные блоки модели программирования и управления состоянием Compose, а также основная среда выполнения для плагина компилятора Compose.
compose.uiОсновные компоненты Compose UI, необходимые для взаимодействия с устройством, в том числе макет, отрисовка и ввод.

Как объявлять зависимости

Чтобы добавить зависимость от Compose, необходимо добавить в проект репозиторий Maven от Google. Подробная информация приведена в репозитории Google Maven.

Добавьте в файл build.gradle приложения или модуля зависимости для нужных артефактов:

Классный

dependencies {
    implementation "androidx.compose.material:material:1.12.1"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Котлин

dependencies {
    implementation("androidx.compose.material:material:1.12.1")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

Отзыв

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

Как создать новую проблему

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

Версия 1.13

Версия 1.13.0-beta01

7 октября 2026 г.

Выход androidx.compose.material:material-*:1.13.0-beta01. Версия 1.13.0-beta01 содержит эти коммиты.

Изменения в API

  • Теперь библиотеки предназначены для Kotlin 2.2 и требуют kotlinc 2.2 (I82396, b/498369605).

Версия 1.13.0-alpha03

9 сентября 2026 г.

Выход androidx.compose.material:material-*:1.13.0-alpha03. Версия 1.13.0-alpha03 содержит эти коммиты.

Изменения в API

  • Перегрузки текстового поля Material 2, принимающие параметры value, onValueChange, устарели. Перейдите на перегрузку, в которой для сохранения состояния используется TextFieldState. (I6b841, b/556234973)

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

  • compileSdk для библиотек Compose обновлены до версии 37.1. Это потребует транзитивного обновления compileSdk для всех приложений и библиотек, использующих Compose. (I05b0f)
  • Обновлены компоненты SecureTextField и OutlinedSecureTextField (а также устаревшие перегрузки BasicSecureTextField), чтобы в качестве режима обфускации по умолчанию использовался TextObfuscationMode.System вместо TextObfuscationMode.RevealLastTyped. (I76c7e)

Версия 1.13.0-alpha02

26 августа 2026 г.

Выход androidx.compose.material:material-*:1.13.0-alpha02. Версия 1.13.0-alpha02 содержит эти коммиты.

Версия 1.13.0-alpha01

12 августа 2026 г.

Выход androidx.compose.material:material-*:1.13.0-alpha01. Версия 1.13.0-alpha01 содержит эти коммиты.

Изменения в API

  • У пользователя androidx.benchmark теперь minSdk (24). (Ic2a85)

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

  • Оптимизированная инициализация на уровне файла свойств класса значений верхнего уровня material с помощью динамических методов получения. (Iae591)
  • Оптимизированная инициализация объектов-компаньонов классов значений material (FabPosition и Strings) с помощью динамических геттеров. (I0c7c0)
  • Удалить требование для compileSdk 37 (If78b4)

Версия 1.12

Версия 1.12.1

9 сентября 2026 г.

Выход androidx.compose.material:material-*:1.12.1. Версия 1.12.1 содержит эти коммиты.

Версия 1.12.0

12 августа 2026 г.

Выход androidx.compose.material:material-*:1.12.0. Версия 1.12.0 содержит эти коммиты.

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

Версия 1.12.0-rc01

29 июля 2026 г.

Выход androidx.compose.material:material-*:1.12.0-rc01. Версия 1.12.0-rc01 содержит эти коммиты.

Версия 1.12.0-beta02

1 июля 2026 г.

Выход androidx.compose.material:material-*:1.12.0-beta02. Версия 1.12.0-beta02 содержит эти коммиты.

Версия 1.12.0-beta01

17 июня 2026 г.

Выход androidx.compose.material:material-*:1.12.0-beta01. Версия 1.12.0-beta01 содержит эти коммиты.

Версия 1.12.0-alpha03

19 мая 2026 г.

Выход androidx.compose.material:material-*:1.12.0-alpha03. Версия 1.12.0-alpha03 содержит эти коммиты.

Версия 1.12.0-alpha02

6 мая 2026 г.

Выход androidx.compose.material:material-*:1.12.0-alpha02. Версия 1.12.0-alpha02 содержит эти коммиты.

Версия 1.12.0-alpha01

22 апреля 2026 г.

Выход androidx.compose.material:material-*:1.12.0-alpha01. Версия 1.12.0-alpha01 содержит эти коммиты.

Изменения в API

  • Изменено значение VelocityTracker, чтобы использовать реализацию, предоставленную фреймворком Android (настраивается с помощью AndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled). (Ibc7e2, b/359962905)

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

  • Обновлена версия Compose compileSdk до API 37. Это означает, что при использовании Compose требуется минимальная версия AGP 9.2.0. (Id45cd, b/413674743)

Версия 1.11

Версия 1.11.4

1 июля 2026 г.

Выход androidx.compose.material:material-*:1.11.4. Версия 1.11.4 содержит эти коммиты.

Версия 1.11.3

17 июня 2026 г.

Выход androidx.compose.material:material-*:1.11.3. Версия 1.11.3 содержит эти коммиты.

Версия 1.11.2

19 мая 2026 г.

Выход androidx.compose.material:material-*:1.11.2. Версия 1.11.2 содержит эти коммиты.

Версия 1.11.1

6 мая 2026 г.

Выход androidx.compose.material:material-*:1.11.1. Версия 1.11.1 содержит эти коммиты.

Версия 1.11.0

22 апреля 2026 г.

Выход androidx.compose.material:material-*:1.11.0. Версия 1.11.0 содержит эти коммиты.

Версия 1.11.0-rc01

8 апреля 2026 г.

Выход androidx.compose.material:material-*:1.11.0-rc01. Версия 1.11.0-rc01 содержит эти коммиты.

Версия 1.11.0-beta02

25 марта 2026 г.

Выход androidx.compose.material:material-*:1.11.0-beta02. Версия 1.11.0-beta02 содержит эти коммиты.

Версия 1.11.0-beta01

11 марта 2026 г.

Выход androidx.compose.material:material-*:1.11.0-beta01. Версия 1.11.0-beta01 содержит эти коммиты.

Версия 1.11.0-alpha06

25 февраля 2026 г.

Выход androidx.compose.material:material-*:1.11.0-alpha06. Версия 1.11.0-alpha06 содержит эти коммиты.

Версия 1.11.0-alpha05

11 февраля 2026 г.

Выход androidx.compose.material:material-*:1.11.0-alpha05. Версия 1.11.0-alpha05 содержит эти коммиты.

Версия 1.11.0-alpha04

28 января 2026 г.

Выход androidx.compose.material:material-*:1.11.0-alpha04. Версия 1.11.0-alpha04 содержит эти коммиты.

Версия 1.11.0-alpha03

14 января 2026 г.

Выход androidx.compose.material:material-*:1.11.0-alpha03. Версия 1.11.0-alpha03 содержит эти коммиты.

Версия 1.11.0-alpha02

17 декабря 2025 г.

Выход androidx.compose.material:material-*:1.11.0-alpha02. Версия 1.11.0-alpha02 содержит эти коммиты.

Версия 1.11.0-alpha01

3 декабря 2025 г.

Выход androidx.compose.material:material-*:1.11.0-alpha01. Версия 1.11.0-alpha01 содержит эти коммиты.

Версия 1.10

Версия 1.10.6

25 марта 2026 г.

Выход androidx.compose.material:material-*:1.10.6. Версия 1.10.6 содержит эти коммиты.

Версия 1.10.5

11 марта 2026 г.

Выход androidx.compose.material:material-*:1.10.5. Версия 1.10.5 содержит эти коммиты.

Версия 1.10.4

25 февраля 2026 г.

Выход androidx.compose.material:material-*:1.10.4. Версия 1.10.4 содержит эти коммиты.

Версия 1.10.3

11 февраля 2026 г.

Выход androidx.compose.material:material-*:1.10.3. Версия 1.10.3 содержит эти коммиты.

Версия 1.10.2

28 января 2026 г.

Выход androidx.compose.material:material-*:1.10.2. Версия 1.10.2 содержит эти коммиты.

Версия 1.10.1

14 января 2026 г.

Выход androidx.compose.material:material-*:1.10.1. Версия 1.10.1 содержит эти коммиты.

Версия 1.10.0

3 декабря 2025 г.

Выход androidx.compose.material:material-*:1.10.0. Версия 1.10.0 содержит эти коммиты.

Версия 1.10.0-rc01

19 ноября 2025 г.

Выход androidx.compose.material:material-*:1.10.0-rc01. Версия 1.10.0-rc01 содержит эти коммиты.

Версия 1.10.0-beta02

5 ноября 2025 г.

Выход androidx.compose.material:material-*:1.10.0-beta02. Версия 1.10.0-beta02 содержит эти коммиты.

Версия 1.10.0-beta01

22 октября 2025 г.

Выход androidx.compose.material:material-*:1.10.0-beta01. Версия 1.10.0-beta01 содержит эти коммиты.

Версия 1.10.0-alpha05

8 октября 2025 г.

Выход androidx.compose.material:material-*:1.10.0-alpha05. Версия 1.10.0-alpha05 содержит эти коммиты.

Версия 1.10.0-alpha04

24 сентября 2025 г.

Выход androidx.compose.material:material-*:1.10.0-alpha04. Версия 1.10.0-alpha04 содержит эти коммиты.

Версия 1.10.0-alpha03

10 сентября 2025 г.

Выход androidx.compose.material:material-*:1.10.0-alpha03. Версия 1.10.0-alpha03 содержит эти коммиты.

Версия 1.10.0-alpha02

27 августа 2025 года

Выход androidx.compose.material:material-*:1.10.0-alpha02. Версия 1.10.0-alpha02 содержит эти коммиты.

Версия 1.10.0-alpha01

13 августа 2025 г.

Выход androidx.compose.material:material-*:1.10.0-alpha01. Версия 1.10.0-alpha01 содержит эти коммиты.

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

Версия 1.9

Версия 1.9.5

19 ноября 2025 г.

Выход androidx.compose.material:material-*:1.9.5. Версия 1.9.5 содержит эти коммиты.

Версия 1.9.4

22 октября 2025 г.

Выход androidx.compose.material:material-*:1.9.4. Версия 1.9.4 содержит эти коммиты.

Версия 1.9.3

8 октября 2025 г.

Выход androidx.compose.material:material-*:1.9.3. Версия 1.9.3 содержит эти коммиты.

Версия 1.9.2

24 сентября 2025 г.

Выход androidx.compose.material:material-*:1.9.2. Версия 1.9.2 содержит эти коммиты.

Версия 1.9.1

10 сентября 2025 г.

Выход androidx.compose.material:material-*:1.9.1. Версия 1.9.1 содержит эти коммиты.

Версия 1.9.0

13 августа 2025 г.

Выход androidx.compose.material:material-*:1.9.0. Версия 1.9.0 содержит эти коммиты.

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

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

  • Для проверок Lint, поставляемых вместе с Compose, теперь требуется AGP версии 8.8.2 или более поздней. Если вы не можете обновить AGP, обновите Lint отдельно, указав в файле gradle.properties версию android.experimental.lint.version=8.8.2 или более новую. Чтобы выполнять проверки Compose lint в IDE, требуется Android Studio Ladybug или более новая версия.

Изменения в API

  • Для проектов, выпущенных с Kotlin 2.0, требуется KGP 2.0.0 или более поздней версии. (Idb6b5)
  • API для декоративных элементов текстовых полей больше не являются экспериментальными. (I7480f)

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

  • ExposedDropdownMenu совместима с более ранними версиями. (I133f7)

Версия 1.9.0-rc01

30 июля 2025 г.

Выход androidx.compose.material:material-*:1.9.0-rc01. Версия 1.9.0-rc01 содержит эти коммиты.

Версия 1.9.0-beta03

16 июля 2025 г.

Выход androidx.compose.material:material-*:1.9.0-beta03. Версия 1.9.0-beta03 содержит эти коммиты.

Версия 1.9.0-beta02

2 июля 2025 г.

Выход androidx.compose.material:material-*:1.9.0-beta02. Версия 1.9.0-beta02 содержит эти коммиты.

Версия 1.9.0-beta01

18 июня 2025 г.

Выход androidx.compose.material:material-*:1.9.0-beta01. Версия 1.9.0-beta01 содержит эти коммиты.

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

  • Гиперссылки в Text(AnnotatedString) теперь по умолчанию имеют стиль Material. (I0e8ed, b/339843816)

Версия 1.9.0-alpha04

4 июня 2025 г.

Выход androidx.compose.material:material-*:1.9.0-alpha04. Версия 1.9.0-alpha04 содержит эти коммиты.

Версия 1.9.0-alpha03

20 мая 2025 г.

Выход androidx.compose.material:material-*:1.9.0-alpha03. Версия 1.9.0-alpha03 содержит эти коммиты.

Версия 1.9.0-alpha02

7 мая 2025 г.

Выход androidx.compose.material:material-*:1.9.0-alpha02. Версия 1.9.0-alpha02 содержит эти коммиты.

Версия 1.9.0-alpha01

23 апреля 2025 г.

Выход androidx.compose.material:material-*:1.9.0-alpha01. Версия 1.9.0-alpha01 содержит эти коммиты.

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

  • Для проверок Lint, поставляемых вместе с Compose, теперь требуется AGP версии 8.8.2 или более поздней. Если вы не можете обновить AGP, обновите Lint отдельно, используя версию android.experimental.lint.version=8.8.2 (или более новую) в файле gradle.properties. Чтобы выполнять проверки Compose lint в IDE, требуется Android Studio Ladybug или более новая версия.

Изменения в API

  • Для проектов, выпущенных с Kotlin 2.0, требуется KGP 2.0.0 или более поздней версии. (Idb6b5)
  • API для создания декоративных элементов текстовых полей больше не являются экспериментальными (I7480f, b/269651160)
  • Мы отказались от использования параметра runWithTimingDisabled в пользу параметра runWithMeasurementDisabled, который более точно описывает поведение: все показатели приостановлены. Кроме того, мы добавили суперкласс MicrobenchmarkScope, поскольку нельзя переопределить функцию runWithMeasurementDisabled, чтобы открыть доступ, так как она встроена. (I9e23b, b/389149423, b/149979716)

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

  • ExposedDropdownMenu совместима с более ранними версиями. (I133f7)
  • Исправлен сбой в индикаторах выполнения и загрузки, который возникал, если в качестве значения прогресса передавался символ Float.NaN. (I4fa96, b/352364576)

Версия 1.8

Версия 1.8.3

18 июня 2025 г.

Выход androidx.compose.material:material-*:1.8.3. Версия 1.8.3 содержит эти коммиты.

Версия 1.8.2

20 мая 2025 г.

Выход androidx.compose.material:material-*:1.8.2. Версия 1.8.2 содержит эти коммиты.

Версия 1.8.1

7 мая 2025 г.

Выход androidx.compose.material:material-*:1.8.1. Версия 1.8.1 содержит эти коммиты.

Версия 1.8.0

23 апреля 2025 г.

Выход androidx.compose.material:material-*:1.8.0. Версия 1.8.0 содержит эти коммиты.

Версия 1.8.0-rc03

9 апреля 2025 г.

Выход androidx.compose.material:material-*:1.8.0-rc03. Версия 1.8.0-rc03 содержит эти коммиты.

Версия 1.8.0-rc02

26 марта 2025 г.

Выход androidx.compose.material:material-*:1.8.0-rc02. Версия 1.8.0-rc02 содержит эти коммиты.

Версия 1.8.0-rc01

12 марта 2025 г.

Выход androidx.compose.material:material-*:1.8.0-rc01. Версия 1.8.0-rc01 содержит эти коммиты.

Версия 1.8.0-beta03

26 февраля 2025 г.

Выход androidx.compose.material:material-*:1.8.0-beta03. Версия 1.8.0-beta03 содержит эти коммиты.

Версия 1.8.0-beta02

12 февраля 2025 г.

Выход androidx.compose.material:material-*:1.8.0-beta02. Версия 1.8.0-beta02 содержит эти коммиты.

Версия 1.8.0-beta01

29 января 2025 г.

Выход androidx.compose.material:material-*:1.8.0-beta01. Версия 1.8.0-beta01 содержит эти коммиты.

Версия 1.8.0-alpha08

15 января 2025 г.

Выход androidx.compose.material:material-*:1.8.0-alpha08. Версия 1.8.0-alpha08 содержит эти коммиты.

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

  • Добавляет displayCutout в группу отступов, которые по умолчанию учитываются компонентами Material, чтобы контент не перекрывал вырез на экране.
    • Это изменение повлияет на то, как компоненты, учитывающие вставки, будут вести себя вокруг выреза на экране. Это относится к значению по умолчанию параметра WindowInsets для компонентов Material 3 с учетом отступов и к значениям WindowInsets, указанным в компоненте.
    • Объекты по умолчанию для материалов 2 и 3. Если после этого изменения возникнут проблемы, вручную укажите параметр WindowInsets для каждого компонента. (I43ee9, b/362508045)
  • Активность, которая используется в качестве хоста для тестируемой composable-функции при использовании ComposeContentTestRule.setContent, теперь использует тему Theme.Material.Light.NoActionBar, чтобы избежать перекрытия ActionBar с тестовым контентом при таргетинге на SDK 35. Чтобы отключить это поведение, удалите зависимость от ui-test-manifest и добавьте запись об активности в AndroidManifest.xml тестового приложения для ComponentActivity с выбранной вами темой. (I7ae1b, b/383368165)

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

  • Показать sheetGesturesEnabled в ModalBottomSheetLayout. (I3f032, b/329543529)

Версия 1.8.0-alpha07

11 декабря 2024 г.

Выход androidx.compose.material:material-*:1.8.0-alpha07. Версия 1.8.0-alpha07 содержит эти коммиты.

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

  • Исправлена ошибка, из-за которой иногда не учитывались модификаторы размера текстового поля. (I90d4c, b/356905963)

Версия 1.8.0-alpha06

13 ноября 2024 г.

Выход androidx.compose.material:material-*:1.8.0-alpha06. Версия 1.8.0-alpha06 содержит эти коммиты.

Версия 1.8.0-alpha05

30 октября 2024 г.

Выход androidx.compose.material:material-*:1.8.0-alpha05. Версия 1.8.0-alpha05 содержит эти коммиты.

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

  • Оптимизируйте поведение Scaffold contentPadding, чтобы избежать постоянного перекомпоновки содержимого тела, когда contentPadding меняется. (I8c8e2, b/373904168)
  • Измените значение ползунка при нажатии клавиш управления. (I1c442)

Версия 1.8.0-alpha04

16 октября 2024 г.

Выход androidx.compose.material:material-*:1.8.0-alpha04. Версия 1.8.0-alpha04 содержит эти коммиты.

Изменения в API

  • Удалите readOnly из TextFields, чтобы закрепить стабильную версию. (I3aaba)

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

  • Добавлена поддержка эффекта волны в разворачивающихся компонентах на устройствах Android S+, например в карточках, которые раскрываются при нажатии. Раньше при изменении размера видео эффект пульсации не заполнял новые границы, а теперь будет. (If509a, b/183019123)

Версия 1.8.0-alpha02

18 сентября 2024 г.

Выход androidx.compose.material:material-*:1.8.0-alpha02. Версия 1.8.0-alpha02 содержит эти коммиты.

Версия 1.8.0-alpha01

4 сентября 2024 г.

Выход androidx.compose.material:material-*:1.8.0-alpha01. Версия 1.8.0-alpha01 содержит эти коммиты.

Изменения в API

  • Добавлен новый конструктор NavGraphBuilder.bottomSheet для создания нижнего листа с безопасными аргументами (I28589, I777db, b/351858980).
  • Добавлены новые перегрузки TextField и OutlinedTextField, которые принимают TextFieldState (I3b74c).

Версия 1.7

Версия 1.7.8

12 февраля 2025 г.

Выход androidx.compose.material:material-*:1.7.8. Версия 1.7.8 содержит эти коммиты.

Версия 1.7.7

29 января 2025 г.

Выход androidx.compose.material:material-*:1.7.7. Изменений по сравнению с версией 1.7.6 нет.

Версия 1.7.6

11 декабря 2024 г.

Выход androidx.compose.material:material-*:1.7.6. Версия 1.7.6 содержит эти коммиты.

Версия 1.7.5

30 октября 2024 г.

Выход androidx.compose.material:material-*:1.7.5. Версия 1.7.5 содержит эти коммиты.

Версия 1.7.4

16 октября 2024 г.

Выход androidx.compose.material:material-*:1.7.4. Версия 1.7.4 содержит эти коммиты.

Версия 1.7.2

18 сентября 2024 г.

Выход androidx.compose.material:material-*:1.7.2. Версия 1.7.2 содержит эти коммиты.

Версия 1.7.1

10 сентября 2024 г.

  • Объекты Android не изменились. Удалено -desktop артефактов, добавлено -jvmStubs и -linuxx64Stubs артефактов. Ни один из этих целевых показателей не предназначен для использования. Это плейсхолдеры, которые помогают Jetbrains Compose.

Версия 1.7.0

4 сентября 2024 г.

Выход androidx.compose.material:material-*:1.7.0. Версия 1.7.0 содержит эти коммиты.

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

  • Компоненты Material перенесены на новые API эффекта волны и больше не запрашивают RippleTheme.
  • Компоненты Material, которые ранее принимали значение MutableInteractionSource и по умолчанию использовали remember { MutableInteractionSource() }, теперь принимают допускающее значение null MutableInteractionSource и по умолчанию используют null. Если вы не используете подъем и параметр MutableInteractionSource, передайте значение null. Это позволяет некоторым компонентам создавать экземпляр только при необходимости, что повышает производительность. Рекомендуем внести аналогичные изменения в собственные компоненты.
  • BottomDrawer, ModalBottomSheet, BackdropScaffold и стандартный нижний лист теперь относятся к стабильному API.

Версия 1.7.0-rc01

21 августа 2024 г.

Выход androidx.compose.material:material-*:1.7.0-rc01. Версия 1.7.0-rc01 содержит эти коммиты.

Версия 1.7.0-beta07

7 августа 2024 г.

Выход androidx.compose.material:material-*:1.7.0-beta07. Версия 1.7.0-beta07 содержит эти коммиты.

Версия 1.7.0-beta06

24 июля 2024 г.

Выход androidx.compose.material:material-*:1.7.0-beta06. Версия 1.7.0-beta06 содержит эти коммиты.

Версия 1.7.0-beta05

10 июля 2024 г.

Выход androidx.compose.material:material-*:1.7.0-beta05. Версия 1.7.0-beta05 содержит эти коммиты.

Версия 1.7.0-beta04

26 июня 2024 г.

Выход androidx.compose.material:material-*:1.7.0-beta04. Версия 1.7.0-beta04 содержит эти коммиты.

Версия 1.7.0-beta03

12 июня 2024 г.

Выход androidx.compose.material:material-*:1.7.0-beta03. Версия 1.7.0-beta03 содержит эти коммиты.

Версия 1.7.0-beta02

29 мая 2024 г.

Выход androidx.compose.material:material-*:1.7.0-beta02. Версия 1.7.0-beta02 содержит эти коммиты.

Изменения в API

  • Обновлен API для оформления ссылок: TextLinkStyles перенесен в TextStyle, а TextDefaults удален из материала (I5477b).

Версия 1.7.0-beta01

14 мая 2024 г.

Выход androidx.compose.material:material-*:1.7.0-beta01. Версия 1.7.0-beta01 содержит эти коммиты.

Изменения в API

  • Обновлен API для получения ссылок с темами Material в тексте. В частности, удалены методы из TextDefaults для создания тематических LinkAnnotations и разбора HTML с тематическими ссылками. Вместо этого добавлен класс TextLinkStyles, который позволяет задавать стиль ссылок в качестве параметра для функции Text. (I31b93)

Версия 1.7.0-alpha08

1 мая 2024 г.

Выход androidx.compose.material:material-*:1.7.0-alpha08. Версия 1.7.0-alpha08 содержит эти коммиты.

Изменения в API

  • Исправлена ошибка, из-за которой backgroundColor не применялся к TextFieldDecorationBox и OutlinedTextFieldDecorationBox. Теперь в декоративных блоках можно использовать параметр shape. (I371c2, b/307694651)
  • Поле RippleConfiguration#isEnabled удалено, а поле LocalRippleConfiguration теперь может иметь нулевое значение. Чтобы отключить эффект пульсации, вместо значения RippleConfiguration с параметром isEnabled = false укажите null–LocalRippleConfiguration. (I22725)
  • У текстовых ссылок есть вариант форматирования для нажатого состояния в дополнение к обычному, наведенному и выбранному. В каждом методе TextDefaults есть аргумент pressedStyle, который позволяет это сделать. (Ic473f, b/139312671)

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

  • Теперь верхний отступ для ярлыка OutlinedTextField учитывает размер системного шрифта. (Idc781)

Версия 1.7.0-alpha07

17 апреля 2024 г.

Выход androidx.compose.material:material-*:1.7.0-alpha07. Версия 1.7.0-alpha07 содержит эти коммиты.

Изменения в API

  • Для текстовых ссылок добавлен стиль нажатия в дополнение к обычному стилю, стилю при наведении и стилю при фокусе. (I5f864, b/139312671)
  • Добавлен объект TextDefaults, содержащий методы для создания объекта LinkAnnotation и разбора строки с тегами HTML, которые применяют MaterialTheme к ссылкам. (I98532, b/139312671)

Версия 1.7.0-alpha06

3 апреля 2024 г.

Выход androidx.compose.material:material-*:1.7.0-alpha06. Версия 1.7.0-alpha06 содержит эти коммиты.

Объявление

  • androidx.compose.material больше не требует использовать одну и ту же версию каждого артефакта в этой группе Maven. Пользователи могут комбинировать разные версии базовых библиотек Compose (Ie5fba).

Изменения в API

  • Перемещены дополнительные значения по умолчанию ModalDrawer и BottomDrawer в объект DrawerDefaults. (Ib5b2e)

Версия 1.7.0-alpha05

20 марта 2024 г.

Выход androidx.compose.material:material-*:1.7.0-alpha05. Версия 1.7.0-alpha05 содержит эти коммиты.

Изменения в API

  • Флаг ScaffoldSubcomposeInMeasureFix удален. (I67363)

Версия 1.7.0-alpha04

6 марта 2024 г.

Выход androidx.compose.material:material-*:1.7.0-alpha04. Версия 1.7.0-alpha04 содержит эти коммиты.

Новые функции

Версия 1.7.0-alpha03

21 февраля 2024 г.

Выход androidx.compose.material:material-*:1.7.0-alpha03. Версия 1.7.0-alpha03 содержит следующие коммиты:

Изменения в API

  • BottomDrawer перешел из экспериментальной в стабильную версию. BottomDrawerState теперь показывает прогресс в виде функции, позволяющей запрашивать прогресс между определенными целями. BottomDrawerState теперь позволяет настраивать спецификацию анимации, а confirmStateChange больше не является конечной лямбда-функцией. (I9c029, b/261423850)
  • BackdropScaffold перешел из экспериментальной в стабильную версию. Спецификация анимации теперь является tween спецификацией в соответствии с правилами. Параметр snackbarHost функции BackdropScaffold больше не является последним, чтобы избежать путаницы с лямбда-функциями в конце. BackdropScaffoldState предоставляет API progress(from, to) для запроса прогресса между якорями. (I73f48, b/261423218)
  • Стандартные нижние листы перенесены из экспериментальной в стабильную версию. Удалены устаревшие конструкторы. Спецификация анимации теперь является спецификацией промежуточных кадров в соответствии с правилами. (I3c1a8, b/278692145, b/261409034)
  • Модальные нижние листы перешли из экспериментальной версии в стабильную. Удалены устаревшие конструкторы. Спецификация анимации теперь является tween спецификацией в соответствии с правилами. (Ic53f4, b/278692145, b/266780235, b/261409034)

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

  • Исправлена ошибка, из-за которой BackdropScaffold мог аварийно завершить работу в определенных сценариях в сочетании с LookaheadScope. (I51396)
  • Удалена вложенная композиция внутри BottomSheetScaffold для повышения производительности. Устранена проблема, из-за которой BottomSheetScaffold аварийно завершал работу в определенных сценариях при использовании вместе с LookaheadScope. (I2f90c)
  • Удалена вложенная композиция внутри ModalBottomSheetLayout, что повысило производительность. (I7a025)

Версия 1.7.0-alpha02

7 февраля 2024 г.

Выход androidx.compose.material:material-*:1.7.0-alpha02. Версия 1.7.0-alpha02 содержит следующие коммиты:

Версия 1.7.0-alpha01

24 января 2024 г.

Выход androidx.compose.material:material-*:1.7.0-alpha01. Версия 1.7.0-alpha01 содержит следующие коммиты:

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

  • Компоненты Material перенесены на новые API эффекта волны и больше не запрашивают RippleTheme.

Изменения в API

  • rememberRipple и RippleTheme были удалены из material-ripple, а новые API ripple и RippleConfiguration добавлены в material и другие библиотеки систем проектирования.

  • Компоненты Material, которые ранее принимали MutableInteractionSource и по умолчанию запоминали { MutableInteractionSource() }, теперь принимают допускающий значение NULL MutableInteractionSource и по умолчанию имеют значение NULL. Если вы не используете подъем и параметр MutableInteractionSource, передайте значение null. Это позволяет некоторым компонентам создавать экземпляр только при необходимости, что повышает производительность. Рекомендуем внести аналогичные изменения в собственные компоненты.

Версия 1.6

Версия 1.6.8

12 июня 2024 г.

Выход androidx.compose.material:material-*:1.6.8. Версия 1.6.8 содержит эти коммиты.

Версия 1.6.7

1 мая 2024 г.

Выход androidx.compose.material:material-*:1.6.7. Версия 1.6.7 содержит эти коммиты.

Версия 1.6.6

17 апреля 2024 г.

Выход androidx.compose.material:material-*:1.6.6. С момента последнего выпуска изменений нет.

Версия 1.6.5

3 апреля 2024 г.

Выход androidx.compose.material:material-*:1.6.5. Версия 1.6.5 содержит эти коммиты.

Версия 1.6.4

20 марта 2024 г.

Выход androidx.compose.material:material-*:1.6.4. Версия 1.6.4 содержит эти коммиты.

Версия 1.6.3

6 марта 2024 г.

Выход androidx.compose.material:material-*:1.6.3. Версия 1.6.3 содержит эти коммиты.

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

  • Устраните регрессию в ExposedDropdownMenu, чтобы снова сделать его доступным для фокуса. (c0e0ed, b/323694447)

Версия 1.6.2

21 февраля 2024 г.

Выход androidx.compose.material:material-*:1.6.2. Версия 1.6.2 содержит следующие коммиты:

Версия 1.6.1

7 февраля 2024 г.

Выход androidx.compose.material:material-*:1.6.1. Версия 1.6.1 содержит следующие коммиты:

Версия 1.6.0

24 января 2024 г.

Выход androidx.compose.material:material-*:1.6.0. Версия 1.6.0 содержит следующие коммиты:

Версия 1.6.0-rc01

10 января 2024 г.

Выход androidx.compose.material:material-*:1.6.0-rc01. Версия 1.6.0-rc01 содержит следующие коммиты:

Версия 1.6.0-beta03

13 декабря 2023 г.

Выход androidx.compose.material:material-*:1.6.0-beta03. Версия 1.6.0-beta03 содержит следующие коммиты:

Версия 1.6.0-beta02

29 ноября 2023 г.

Выход androidx.compose.material:material-*:1.6.0-beta02. Версия 1.6.0-beta02 содержит следующие коммиты.

Версия 1.6.0-beta01

15 ноября 2023 г.

Выход androidx.compose.material:material-*:1.6.0-beta01. Версия 1.6.0-beta01 содержит следующие коммиты:

Версия 1.6.0-alpha08

18 октября 2023 г.

Выход androidx.compose.material:material-*:1.6.0-alpha08. Версия 1.6.0-alpha08 содержит следующие коммиты.

Изменения в API

  • Устарела функция materialIcon, вместо которой теперь используется ее перегрузка с параметром autoMirror. (Ia338d)

Исправление ошибок - Автоматическое увеличение высоты элемента навигации для большого контента. (0c4ecc, b/272336962)

Версия 1.6.0-alpha07

4 октября 2023 г.

Выход androidx.compose.material:material-*:1.6.0-alpha07. Версия 1.6.0-alpha07 содержит следующие коммиты:

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

Версия 1.6.0-alpha06

20 сентября 2023 г.

Выход androidx.compose.material:material-*:1.6.0-alpha06. Версия 1.6.0-alpha06 содержит следующие коммиты:

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

  • Из BottomSheetScaffold удалена функция, связанная с панелью навигации. Чтобы получить прежнюю функциональность, оберните BottomSheetScaffold в компонуемый элемент Drawer. Пример см. в описании типа BottomSheetScaffoldWithDrawerSample. (I1dcc8)

Изменения в API

  • Добавлен временный флаг, позволяющий управлять тем, когда Scaffold должен измерять дочерние элементы: во время измерения или размещения. По умолчанию будет использоваться единица измерения, Если у вас возникли проблемы с новым поведением, сообщите нам об этом. (If6e3b)

Версия 1.6.0-alpha05

6 сентября 2023 г.

Выход androidx.compose.material:material-*:1.6.0-alpha05. Версия 1.6.0-alpha05 содержит следующие коммиты:

Новые функции

  • Добавлена поддержка автоматически зеркально отражаемых значков при отрисовке в макетах с письмом справа налево. В модулях material-icons-core и material-icons-extended теперь доступны дополнительные наборы значков, поддерживающие автоматическое зеркальное отображение, если это возможно. Новые наборы имеют префикс Icons.AutoMirrored.Filled... и содержат значки, которые автоматически зеркально отражаются в макетах с письмом справа налево. Ознакомьтесь со списком значков Material, которые могут (и должны) автоматически зеркально отражаться.

Изменения в API

  • Добавлена поддержка автоматически зеркально отражаемых значков при отрисовке в макетах с письмом справа налево. В модулях material-icons-core и material-icons-extended теперь доступны дополнительные наборы значков, поддерживающие автоматическое зеркальное отображение, если это возможно. Новые наборы имеют префикс Icons.AutoMirrored.Filled... и содержат значки, которые автоматически зеркально отражаются в макетах с письмом справа налево. Ознакомьтесь со списком значков Material, которые могут (и должны) автоматически зеркально отражаться. Свойства значков, предоставленные ранее, теперь отмечены как устаревшие, а в блоке замены предлагается альтернативный вариант. Если вы не используете специальные методы обработки для зеркального отображения значков в языках с письмом справа налево, рекомендуем перейти на новый набор значков. Например, Icons.Filled.ArrowBack следует переработать в Icons.AutoMirrored.Filled.ArrowBack. (I4b511)

Версия 1.6.0-alpha04

23 августа 2023 г.

Выход androidx.compose.material:material-*:1.6.0-alpha04. Версия 1.6.0-alpha04 содержит следующие коммиты:

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

  • Исправлена ошибка, из-за которой некоторые компоненты, использующие Subcomposition (например, BottomSheetScaffold) внутри Scaffold внутри LookaheadScope, пытались слишком рано определить свой размер. (If2c5d)
  • Исправлена ошибка в расчете DropdownMenu и offset, из-за которой смещения по оси X зависели только от направления макета, а смещения по оси Y не менялись на противоположные, когда меню находилось в нижней части экрана. (Iccc74, b/294103942)
  • Оптимизирована внутренняя структура макета BottomSheetScaffold и устранена потенциальная проблема с BottomSheetScaffold внутри LookaheadLayout. (Ic0afa)

Версия 1.6.0-alpha03

9 августа 2023 г.

Выход androidx.compose.material:material-*:1.6.0-alpha03. Версия 1.6.0-alpha03 содержит следующие коммиты:

Изменения в API

  • У компонентов Material2 теперь есть отдельный API для передачи windowInsets, чтобы поддерживать функцию "от края до края" в Android. В отличие от компонентов Material3, компоненты Material2 по умолчанию не поддерживают вставки, поэтому значение нужно передавать вручную. Обратитесь к соответствующим примерам. (I655e8)

Версия 1.6.0-alpha02

26 июля 2023 г.

Выход androidx.compose.material:material-*:1.6.0-alpha02. Версия 1.6.0-alpha02 содержит следующие коммиты:

Изменения в API

  • Теперь плотность будет зависеть от компонента. Это относится к следующим компонентам: SwipeToDismiss и компонентам на основе таблиц. Используйте новую перегрузку, в которой плотность является параметром. (I1846e)
  • Дополнительные аннотации для указания разрешенных входных данных для композиций (I51109)
  • Обновлены файлы API для аннотирования подавления совместимости (I8e87a, b/287516207)
  • Добавлено новое выравнивание по началу для FabPosition (Ib7aea, b/170592777)
  • TextFieldColorsWithIcons в Material 2 больше не поддерживается. Вместо него используется TextFieldColors. При переопределении leadingIconColor или trailingIconColor также переопределите перегрузку с помощью interactionSource. (Id57ed, b/199377790)

Версия 1.6.0-alpha01

21 июня 2023 г.

Выход androidx.compose.material:material-*:1.6.0-alpha01. Версия 1.6.0-alpha01 содержит следующие коммиты:

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

  • В типографике Material 2 по умолчанию используется false вместо includeFontPadding. Стиль высоты строки по умолчанию также изменен на Trim.None и Alignment.Center, а в TextStyles Typography добавлены явные значения lineHeight (в sp). Если вы хотите настроить эти значения, ознакомьтесь с документацией по API. Подробную информацию об этих изменениях можно найти в записи блога. (Icabc3, I3f801, I04c03)

Изменения в API

  • Поддержка API Swipeable для Material прекращена. Используйте AnchoredDraggable API Foundation, которые оптимизированы для простых и сложных сценариев. (I732e0)

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

  • BottomSheetState, ModalBottomSheetState и BottomDrawerState теперь имеют свойство progress, которое показывает прогресс между текущим (зафиксированным) якорем и ближайшим якорем в направлении прокрутки. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861)

Версия 1.5

Версия 1.5.4

18 октября 2023 г.

Выход androidx.compose.material:material-*:1.5.4. Версия 1.5.4 содержит следующие коммиты:

Версия 1.5.3

4 октября 2023 г.

Выход androidx.compose.material:material-*:1.5.3. В этой версии нет изменений

Версия 1.5.2

27 сентября 2023 г.

Выход androidx.compose.material:material-*:1.5.2. Версия 1.5.2 содержит следующие коммиты:

Версия 1.5.1

6 сентября 2023 г.

androidx.compose.material:material-*:1.5.1 выпущен без изменений. Версия 1.5.1 содержит следующие коммиты:

Версия 1.5.0

9 августа 2023 г.

Выход androidx.compose.material:material-*:1.5.0. Версия 1.5.0 содержит следующие коммиты:

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

Изменения в API

  • Внесены изменения в Swipeable1 API в BottomSheetScaffold. Параметр confirmStateChange пользователя BottomSheetState переименован в confirmValueChange. progress теперь представлен в виде числа с плавающей запятой. animateTo и snapTo – внутренние. Вместо него используйте правила expand() и collapse(). Удалены методы direction и overflow. offset заменен на requireOffset(). I323b4
  • Отметьте функцию snapTo в Drawer как неэкспериментальный API. (Ib9c18, b/261425368)
  • Добавлен параметр цвета дорожки для кольцевых индикаторов прогресса и параметр окончания штриха для кольцевых и линейных индикаторов прогресса. (Ie668c, b/216325962, b/222964817)
  • Переименованы confirmStateChange в confirmValueChange для ModalBottomSheetState, ModalBottomSheetState.Saver и rememberModalBottomSheetState. (Ib48d1)
  • Добавьте Modifier.minimumInteractiveComponentSize. Его можно использовать, чтобы зарезервировать область прикосновения размером не менее 48 dp, если элемент меньше. (I33f58, b/258495559)
  • Внесены изменения в Swipeable API в ModalBottomSheetLayout. Функция animateTo объекта ModalBottomSheetState больше не принимает параметр animationSpec, а смещение теперь может быть нулевым. Используйте requireOffset, чтобы сделать смещение обязательным. (Ia2e79)
  • Добавление аннотации @JvmDefaultWithCompatibility (I8f206)
  • В API для пролистывания в ModalDrawer. DrawerState animateTo заменен методами open и close, а смещение теперь может быть нулевым. Используйте requireOffset, чтобы сделать смещение обязательным. (I3de9e)
  • Внесены изменения в работу выдвижных панелей и таблиц, чтобы правильно обрабатывать нажатия, когда жесты могут быть преобразованы в события прокрутки.
  • Добавлен параметр minLines в компоненты Text, TextField и OutlinedTextField из библиотек material и material3, который позволяет задать минимальную высоту компонента в количестве строк (I4af1d).

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

  • Устранена проблема, из-за которой pullRefresh не использовал скорость, что приводило к появлению прокрутки за пределы экрана. Также изменена сигнатура API лямбда-функции onRelease в Modifier.pullRefresh, чтобы возвращать значение типа Float для потребленной скорости (I7db65, b/266874741).
  • BottomSheetState, ModalBottomSheetState и BottomDrawerState теперь имеют свойство progress, которое показывает прогресс между текущим (зафиксированным) якорем и ближайшим якорем в направлении прокрутки. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861)
  • Исправлена ошибка, из-за которой кнопка AlertDialog появлялась под кнопкой подтверждения, когда кнопки располагались друг над другом, чтобы поместиться в диалоговом окне. Это исправление приводит реализацию в соответствие со спецификацией Material Design. (I029de, b/235454277)
  • BottomSheetScaffold больше не будет участвовать во вложенной прокрутке, если для gesturesEnabled задано значение false. (I634f3, b/215403277)
  • Исправлена ошибка, из-за которой BottomSheetScaffold завершался со сбоем при предоставлении пустого контента для слотов. (Ib24a5, b/235588730)
  • Исправлена ошибка, из-за которой PullRefreshIndicator перехватывал клики и события указателя. (2494256, b/271777421)
  • Исправлена ошибка, из-за которой в редких случаях при изменении ориентации экрана происходил сбой ModalBottomSheetLayout. Анимация макета (например, Modifier.animateContentSize) в контенте таблицы теперь работает без сбоев. (I2f981, b/266780234)

Версия 1.5.0-rc01

26 июля 2023 г.

Выход androidx.compose.material:material-*:1.5.0-rc01. Версия 1.5.0-rc01 содержит следующие коммиты:

Версия 1.5.0-beta03

28 июня 2023 г.

Выход androidx.compose.material:material-*:1.5.0-beta03. Версия 1.5.0-beta03 содержит следующие коммиты:

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

  • BottomSheetState, ModalBottomSheetState и BottomDrawerState теперь имеют свойство progress, которое показывает прогресс между текущим (зафиксированным) якорем и ближайшим якорем в направлении прокрутки. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861)

Версия 1.5.0-beta02

7 июня 2023 г.

Выход androidx.compose.material:material-*:1.5.0-beta02. Версия 1.5.0-beta02 содержит следующие коммиты:

Версия 1.5.0-beta01

24 мая 2023 г.

Выход androidx.compose.material:material-*:1.5.0-beta01. Версия 1.5.0-beta01 содержит следующие коммиты:

Изменения в API

  • Смещение атрибутов "DrawerState" и "BottomDrawerState" теперь не может быть нулевым. Вместо этого они возвращают значение Float.NaN, чтобы указать на отсутствие смещения. (Ie9855)
  • Добавлена возможность передавать ScrollState при создании DropdownMenu или ExposedDropdownMenu для управления вертикальной прокруткой отображаемых пунктов меню. (Idb009, b/185304441)
  • Добавлена поддержка включения и отключения жеста ModalBottomSheetLayout, чтобы пользователи могли настраивать его для более функциональных нижних листов (I40af0).
  • В параметр BasicText добавлен цвет, чтобы можно было эффективно анимировать или задавать цвет текста. (Iffd88, b/246961787)
  • Переименование свойства "Семантика" isContainer в isTraversalGroup (I121f6)

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

  • Исправлена ошибка, из-за которой кнопка AlertDialog появлялась под кнопкой подтверждения, когда кнопки располагались друг над другом, чтобы поместиться в диалоговом окне. Это исправление приводит реализацию в соответствие со спецификацией Material Design. (I029de, b/235454277)

Версия 1.5.0-alpha04

10 мая 2023 г.

Выход androidx.compose.material:material-*:1.5.0-alpha04. Версия 1.5.0-alpha04 содержит следующие коммиты:

Изменения в API

  • Теперь плотность будет зависеть от компонента. Это относится к следующим компонентам: BottomDrawer, ModalBottomSheetLayout, BottomSheetScaffold, Switch, ModalDrawer. Используйте новую перегрузку, в которой плотность является параметром. (I8fbd8)

Версия 1.5.0-alpha03

19 апреля 2023 г.

Выход androidx.compose.material:material-*:1.5.0-alpha03. Версия 1.5.0-alpha03 содержит следующие коммиты:

Изменения в API

  • Обновите внутренние компоненты BottomDrawer, чтобы использовать новые API SwipeableV2. Из-за этого в BottomDrawerState будут только API, определенные на уровне класса, а не унаследованные от SwipeableState. Мы используем композицию с внутренним SwipeableV2State. Смещение теперь является свойством с плавающей запятой, допускающим нулевое значение. Текущее значение и целевое значение для пролистывания по-прежнему можно получить с помощью свойств currentValue и targetValue. Методы предыдущего уровня, такие как open/expand/close, и свойства, такие как isOpen/isClosed, по-прежнему поддерживаются. (Iad40c, b/178529942, b/220676296)

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

  • Обновлены внутренние компоненты Switch. При перетаскивании переключатель будет показывать ближайшее целевое состояние. (Id90d4)
  • Анимированный контент на листах (например, Modifier.animateContentSize на листе) в BottomSheetScaffold теперь работает без сбоев. (Ia913c, b/270518202, b/254446195)
  • Если для свойства gesturesEnabled задано значение false, элемент BottomSheetScaffold больше не будет участвовать во вложенной прокрутке. (I634f3, b/215403277)

Версия 1.5.0-alpha02

5 апреля 2023 г.

Выход androidx.compose.material:material-*:1.5.0-alpha02. Версия 1.5.0-alpha02 содержит следующие коммиты:

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

  • Исправлена ошибка, из-за которой BottomSheetScaffold завершался со сбоем при предоставлении пустого контента для слотов. (Ib24a5, b/235588730)
  • Исправлена ошибка PullRefreshIndicator, из-за которой перехватывались клики и события указателя (2494256, b/271777421).

Версия 1.5.0-alpha01

22 марта 2023 г.

Выход androidx.compose.material:material-*:1.5.0-alpha01. Версия 1.5.0-alpha01 содержит следующие коммиты:

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

  • Добавьте образец перекомпоновки chipgroup. Измените горизонтальные отступы между дочерними чипами в образце группы чипов в одну строку, чтобы они соответствовали спецификации. (I3b155)
  • Исправлена ошибка, из-за которой в редких случаях при изменении ориентации экрана происходил сбой ModalBottomSheetLayout. Анимация макета (например, Modifier.animateContentSize) в контенте таблицы теперь работает без сбоев. (I2f981, b/266780234)

Версия 1.4

Версия 1.4.3

3 мая 2023 г.

androidx.compose.material:material-*:1.4.3 выпущен без изменений (только с обновленной версией).

Версия 1.4.2

19 апреля 2023 г.

Выход androidx.compose.material:material-*:1.4.2. Версия 1.4.2 содержит следующие коммиты:

Версия 1.4.1

5 апреля 2023 г.

Выход androidx.compose.material:material-*:1.4.1. Версия 1.4.1 содержит следующие коммиты:

Версия 1.4.0

22 марта 2023 г.

Выход androidx.compose.material:material-*:1.4.0. Версия 1.4.0 содержит следующие коммиты:

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

Изменения в API

  • Добавьте Modifier.minimumInteractiveComponentSize. Его можно использовать, чтобы зарезервировать область прикосновения размером не менее 48 dp, если элемент меньше. (I33f58, b/258495559)
  • Внесены изменения в Swipeable API в ModalDrawer. animateTo класса DrawerState заменен методами open и close, а смещение теперь может быть нулевым. Используйте requireOffset, чтобы сделать смещение обязательным. (I3de9e)
  • Добавлен параметр minLines в компоненты Text, TextField и OutlinedTextField из библиотек material и material3, который позволяет задать минимальную высоту компонента в количестве строк (I4af1d).
  • В BasicText и BasicTextField добавлен параметр minLines. Она позволяет задать минимальную высоту этих объектов в строках (I24294, b/122476634).

Версия 1.4.0-rc01

8 марта 2023 г.

androidx.compose.material:material-*:1.4.0-rc01 выпущен без изменений. Версия 1.4.0-rc01 содержит следующие коммиты.

Версия 1.4.0-beta02

22 февраля 2023 г.

Выход androidx.compose.material:material-*:1.4.0-beta02. Версия 1.4.0-beta02 содержит следующие коммиты:

Изменения в API

  • Внесены изменения в Swipeable API в BottomSheetScaffold. Параметр confirmStateChange пользователя BottomSheetState переименован в confirmValueChange. progress теперь представлен в виде числа с плавающей запятой. animateTo и snapTo – внутренние. Вместо него используйте правила expand() и collapse(). Удалены методы direction и overflow. offset заменен на requireOffset(). (I323b4)

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

  • Удалены семантические роли из кликабельных и выбираемых элементов, а также обновлены компоненты, которые использовали эти роли, чтобы задавать их с помощью modifier.semantics (Ibb4ba).
  • Незначительное обновление расширенного набора значков Material, в котором изменены заполненные значки desktop_mac, directions и kitchen. (I65f5e)

Версия 1.4.0-beta01

8 февраля 2023 г.

Выход androidx.compose.material:material-*:1.4.0-beta01. Версия 1.4.0-beta01 содержит следующие коммиты:

Изменения в API

  • Устранена проблема, из-за которой pullRefresh не использовал скорость, что приводило к появлению прокрутки за пределы экрана. Также изменена сигнатура API лямбда-функции onRelease в Modifier.pullRefresh, чтобы возвращать значение типа Float для потребленной скорости (I7db65, b/266874741).
  • Восстановлен геттер свойства LocalMinimuTouchTargetEnforcement, отмечен как устаревший и перенаправлен на LocalMinimumInteractiveComponentEnforcement. (I60dd5)

Версия 1.4.0-alpha05

25 января 2023 г.

Выход androidx.compose.material:material-*:1.4.0-alpha05. Версия 1.4.0-alpha05 содержит следующие коммиты.

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

  • Исправлена ошибка, из-за которой неправильно рассчитывалось состояние ModalBottomSheetLayout's HalfExpanded и лист выглядел плавающим. (I8c615, b/265610459)
  • Исправлена ошибка в ModalBottomSheetLayout, из-за которой при определенных обстоятельствах происходил сбой при переходе из скрытого состояния в видимое. (Ia9265, b/265444789)

Версия 1.4.0-alpha04

11 января 2023 г.

Выход androidx.compose.material:material-*:1.4.0-alpha04. Версия 1.4.0-alpha04 содержит следующие коммиты:

Изменения в API

  • Добавлено свойство семантики IsContainer на поверхностях. Это свойство будет использоваться в дальнейшем изменении, которое определяет порядок перехода на основе семантического значения элементов, таких как поверхности. (I63379)
  • Отметьте функцию snapTo в Drawer как неэкспериментальный API. (Ib9c18, b/261425368)
  • Добавлен параметр цвета дорожки для кольцевых индикаторов прогресса и параметр окончания штриха для кольцевых и линейных индикаторов прогресса. (Ie668c, b/216325962, b/222964817)
  • Переименованы confirmStateChange в confirmValueChange для ModalBottomSheetState, ModalBottomSheetState.Saver и rememberModalBottomSheetState. (Ib48d1)
  • Дополнительные сведения о допустимости значения NULL для типа возвращаемого значения устаревших скрытых функций (Ibf7b0)
  • Добавьте Modifier.minimumInteractiveComponentSize. Его можно использовать, чтобы зарезервировать область прикосновения размером не менее 48 dp, если элемент меньше. (I33f58, b/258495559)
  • Внесены изменения в Swipeable API в ModalBottomSheetLayout. Функция animateTo в ModalBottomSheetState больше не принимает параметр animationSpec, а параметр offset теперь может иметь нулевое значение. Чтобы получить offset, используйте requireOffset. (Ia2e79)

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

  • Ширина листа ModalBottomSheetLayout теперь не может превышать 640 dp. (I71a4f, b/234927577)
  • Исправлена проблема, из-за которой rememberPullRefreshState не обновлял refreshThreshold и refreshingOffset с течением времени. (Ifed10, b/263159832)
  • Прогресс для индикаторов выполнения теперь правильно ограничен ожидаемым диапазоном. (I8a7eb, b/262262727)
  • Если ModalBottomSheetState ещё не получил ни одного якоря, то при вызове snapTo или animateTo вместо исключения будет обновлен currentValue без анимации. (I2c91b)
  • Исправлено состояние включения в реализации Material 2 FilterChip. (Id326a, b/261329817)
  • Исправлена ошибка, из-за которой приложение ModalBottomSheetLayout давало сбой, если оно было в режиме HalfExpanded при повороте экрана из вертикального в горизонтальное положение. Убедитесь, что вы передаете правильный параметр initialValue, например проверив конфигурацию. (Ie8df7, b/182882364)
  • Устранена проблема, из-за которой ModalBottomSheetLayout давал сбой, если содержимое таблицы было пустым. ModalBottomSheetLayout теперь позволяет создавать пустые таблицы. Если лист пуст, он будет только скрыт. (Ic2288, b/200980998, b/216693030)

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

  • При обновлении с androidx.compose.foundation:1.4.0-alpha03 до androidx.compose.foundation:1.4.0-alpha04 может возникнуть ошибка java.lang.NoSuchFieldError. Здесь можно посмотреть, где изначально была обнаружена проблема. Исправление отправлено и будет доступно в следующем обновлении Compose. Чтобы обойти эту проблему, обновите библиотеки androidx.compose.material и androidx.compose.material3 до последней версии (1.1.0-alpha04) или перейдите на более раннюю версию библиотеки androidx.compose.foundation (1.4.0-alpha03).

Версия 1.4.0-alpha03

7 декабря 2022 г.

Выход androidx.compose.material:material-*:1.4.0-alpha03. Версия 1.4.0-alpha03 содержит следующие коммиты:

Изменения в API

  • Добавление аннотации @JvmDefaultWithCompatibility (I8f206)
  • В ModalDrawer внесены изменения в API Swipeable. animateTo класса DrawerState заменен методами open и close, а смещение теперь может быть нулевым. Используйте requireOffset, чтобы сделать смещение обязательным. (I3de9e)
  • Добавлен API модификатора для запроса информации о прокрутке предков. (I2ba9d, b/203141462)
  • Используется в теге Clickable, чтобы правильно задерживать нажатия, когда жесты могут стать событиями прокрутки.
  • Исправлена ошибка, из-за которой Clickables неправильно задерживал пульсации при использовании внутри Scrollable ViewGroup.
  • Внесены изменения в работу выдвижных панелей и таблиц, чтобы правильно обрабатывать нажатия, когда жесты могут быть преобразованы в события прокрутки.

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

  • Исправлена проблема, из-за которой PullRefreshIndicator мог зависнуть после вызова onRefresh, если состояние обновления не было изменено на true. (Ie2416, b/248274004)

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

  • Compose UI и Compose Material теперь зависят от Lifecycle 2.5.1. (I05ab0, b/258038814)

Версия 1.4.0-alpha02

9 ноября 2022 г.

Выход androidx.compose.material:material-*:1.4.0-alpha02. Версия 1.4.0-alpha02 содержит следующие коммиты:

Изменения в API

  • Атрибуты "awaitFirstDown" и "waitForUpOrCancellation" теперь принимают значение "PointerEventPass", что делает их более гибкими. (I7579a, b/212091796)
  • Добавлен параметр minLines в компоненты Text, TextField и OutlinedTextField из библиотек material и material3, который позволяет задать минимальную высоту компонента в количестве строк (I4af1d).
  • В BasicTex и BasicTextField добавлен параметр minLines. Она позволяет задать минимальную высоту этих объектов в строках (I24294, b/122476634).

Версия 1.4.0-alpha01

24 октября 2022 г.

Выход androidx.compose.material:material-*:1.4.0-alpha01. Версия 1.4.0-alpha01 содержит следующие коммиты:

Изменения в API

  • Добавлен новый метод awaitEachGesture() для детекторов жестов. Он работает так же, как forEachGesture(), но цикл по жестам выполняется полностью в рамках AwaitPointerEventScope, поэтому события не могут быть потеряны между итерациями.
  • forEachGesture() больше не используется, так как при его работе между жестами могут теряться события. Вместо него используется awaitEachGesture(). (Iffc3f, b/251260206)

Версия 1.3

Версия 1.3.1

9 ноября 2022 г.

Выход androidx.compose.material:material-*:1.3.1. Версия 1.3.1 содержит следующие коммиты:

Версия 1.3.0

24 октября 2022 г.

Выход androidx.compose.material:material-*:1.3.0. Версия 1.3.0 содержит следующие коммиты:

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

Критическое изменение в поведении

  • Максимальная поддерживаемая высота в диалоговых окнах и всплывающих окнах уменьшена до 8 dp.

Изменения в API

  • Добавление компонента "Потяните, чтобы обновить" в Compose (I29168).
  • Изменение названия параметра с values на value в RangeSlider (I3b79a).

Версия 1.3.0-rc01

5 октября 2022 г.

Выход androidx.compose.material:material-*:1.3.0-rc01. Версия 1.3.0-rc01 содержит следующие коммиты:

Версия 1.3.0-beta03

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

Выход androidx.compose.material:material-*:1.3.0-beta03. Версия 1.3.0-beta03 содержит следующие коммиты:

Изменения в API

  • Добавление компонента "Потяните, чтобы обновить" в Compose (I29168)

Версия 1.3.0-beta02

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

Выход androidx.compose.material:material-*:1.3.0-beta02. Версия 1.3.0-beta02 содержит следующие коммиты:

Нет изменений с версии 1.3.0-beta01

Версия 1.3.0-beta01

24 августа 2022 г.

Выход androidx.compose.material:material-*:1.3.0-beta01. Версия 1.3.0-beta01 содержит следующие коммиты:

Критическое изменение в поведении

Максимальная поддерживаемая высота в диалоговых окнах и всплывающих окнах уменьшена до 8 dp.

Максимально поддерживаемая высота для диалоговых окон и всплывающих окон Compose была уменьшена с 30 до 8 dp. Это изменение затрагивает как диалоговые окна и всплывающие окна Material Design, так и пользовательские диалоговые окна и всплывающие окна. Это изменение необходимо, чтобы устранить ошибку специальных возможностей в версиях Android ниже S и обеспечить взаимодействие сервисов специальных возможностей в этих окнах с контентом диалогового окна или всплывающего окна.

Это изменение повлияет на вас, только если вы создаете собственное диалоговое окно или всплывающее окно с высотой, превышающей 8 dp. Попробуйте уменьшить высоту диалогового окна или всплывающего окна. Если вам нужно отказаться от этого нового поведения, создайте собственное диалоговое окно или всплывающее окно с нужным уровнем доступа. Мы не рекомендуем этого делать, так как это может негативно повлиять на доступность. Разработчик должен убедиться, что нижняя часть диалогового окна или всплывающего окна доступна для взаимодействия и чтения с помощью специальных возможностей.

Версия 1.3.0-alpha03

10 августа 2022 г.

Выход androidx.compose.material:material-*:1.3.0-alpha03. Версия 1.3.0-alpha03 содержит следующие коммиты:

Версия 1.3.0-alpha02

27 июля 2022 г.

Выход androidx.compose.material:material-*:1.3.0-alpha02. Версия 1.3.0-alpha02 содержит следующие коммиты:

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

  • Исправление проблемы AnimatedVisibility с помощью FloatingActionButton в Scaffold (I3a0ae, b/224005027)

Версия 1.3.0-alpha01

29 июня 2022 г.

Выход androidx.compose.material:material-*:1.3.0-alpha01. Версия 1.3.0-alpha01 содержит следующие коммиты:

Изменения в API

  • Изменение названия параметра с values на value в RangeSlider (I3b79a)

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

  • Обновите пример значка, чтобы добавить более подробное описание контента. (I10b9d)

Версия 1.2

Версия 1.2.1

10 августа 2022 г.

Выход androidx.compose.material:material-*:1.2.1. Версия 1.2.1 содержит следующие коммиты:

Версия 1.2.0

27 июля 2022 г.

Выход androidx.compose.material:material-*:1.2.0. Версия 1.2.0 содержит следующие коммиты:

Версия 1.2.0-rc03

29 июня 2022 г.

Выход androidx.compose.material:material-*:1.2.0-rc03. Версия 1.2.0-rc03 содержит следующие коммиты:

  • Изменений по сравнению с версией 1.2.0-rc02 нет.

Версия 1.2.0-rc02

22 июня 2022 г.

Выход androidx.compose.material:material-*:1.2.0-rc02. Версия 1.2.0-rc02 содержит следующие коммиты:

Версия 1.2.0-rc01

15 июня 2022 г.

Выход androidx.compose.material:material-*:1.2.0-rc01. Версия 1.2.0-rc01 содержит следующие коммиты:

Изменения в API

  • Интерфейсы в библиотеках Compose теперь создаются с помощью методов интерфейса по умолчанию из JDK8 (I5bcf1).

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

  • Обновление значка с вкладкой ведущего значка, чтобы прикрепить значок к ярлыку, а не к значку. (I90993)

Версия 1.2.0-beta03

1 июня 2022 г.

Выход androidx.compose.material:material-*:1.2.0-beta03. Версия 1.2.0-beta03 содержит следующие коммиты:

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

  • Исправлена ошибка, из-за которой значок BottomSheetScaffold отображался поверх тени верхней панели приложения. BottomSheetScaffold теперь также учитывает состояние листа при размещении уведомлений Snackbars: в свернутом состоянии уведомления размещаются над листом и плавающей кнопкой действия; в развернутом состоянии уведомления прикрепляются к нижней части листа. (Ia80b5, b/187771422)

Версия 1.2.0-beta02

18 мая 2022 г.

Выход androidx.compose.material:material-*:1.2.0-beta02. Версия 1.2.0-beta02 содержит следующие коммиты:

Версия 1.2.0-beta01

11 мая 2022 г.

Выход androidx.compose.material:material-*:1.2.0-beta01. Версия 1.2.0-beta01 содержит следующие коммиты:

Новые функции

  • Это первая бета-версия 1.2.

Изменения в API

  • Компонуемый элемент TextFieldDefaults.BorderStroke, который рисует штрих границы в OutlinedTextField, переименован в TextFieldDefaults.BorderBox. (I5f295)

Версия 1.2.0-alpha08

20 апреля 2022 г.

Выход androidx.compose.material:material-*:1.2.0-alpha08. Версия 1.2.0-alpha08 содержит следующие коммиты:

Изменения в API

  • Частичное использование (переход вниз или к определенной позиции) больше не поддерживается в PointerInputChange. Чтобы полностью применить изменение, используйте consume(). С помощью isConsumed можно определить, использовал ли кто-то ранее это изменение.
  • PointerInputChange::copy() теперь всегда создает поверхностную копию. Это значит, что копии PointerInputChange будут использованы, как только будет использована одна из копий. Если вы хотите создать несвязанный объект PointerInputChange, используйте конструктор. (Ie6be4, b/225669674)

Версия 1.2.0-alpha07

6 апреля 2022 г.

Выход androidx.compose.material:material-*:1.2.0-alpha07. Версия 1.2.0-alpha07 содержит следующие коммиты:

Версия 1.2.0-alpha06

23 марта 2022 г.

Выход androidx.compose.material:material-*:1.2.0-alpha06. Версия 1.2.0-alpha06 содержит следующие коммиты:

Изменения в API

  • Изменения в Card API, связанные с изменениями в Surface API (I56bcb)
  • Обновления Material 2 Surface API, в которых добавлены дополнительные перегруженные функции для выбираемых и переключаемых поверхностей. (Ifcca5)

Версия 1.2.0-alpha05

9 марта 2022 г.

Выход androidx.compose.material:material-*:1.2.0-alpha05. Версия 1.2.0-alpha05 содержит следующие коммиты:

Изменения в API

  • LazyVerticalGrid и LazyHorizontalGrid теперь стабильны. (I307c0)
  • LazyVerticalGrid/LazyHorizontalGrid и все связанные API были перенесены в подпакет .grid. Измените импортированные элементы с androidx.compose.foundation.lazy на androidx.compose.foundation.lazy.grid. (I2d446, b/219942574)
  • Отменено предыдущее изменение, согласно которому для WindowInsetsControllerCompat использовалось только представление. Теперь снова требуется окно, которое необходимо для управления некоторыми флагами окон. Устаревший метод ViewCompat.getWindowInsetsController заменен на WindowCompat.getInsetsController, чтобы обеспечить использование правильного окна (например, если представление находится в диалоговом окне). (I660ae, b/219572936)
  • Текст:includeFontPadding теперь отключен по умолчанию. Проблемы с обрезкой, возникающие из-за includeFontPadding=false, устранены, и теперь высокие скрипты не должны обрезаться. (I31c84, b/171394808)
  • Добавлен новый API LazyVerticalGrid для определения размеров по поперечной оси (I17723).

Версия 1.2.0-alpha04

23 февраля 2022 г.

Выход androidx.compose.material:material-*:1.2.0-alpha04. Версия 1.2.0-alpha04 содержит следующие коммиты:

Изменения в API

  • Add support for filter chips (I39a6e, b/192585545)
  • Добавлено: TextFieldDecorationBox и OutlinedTextFieldDecorationBox. Их можно использовать вместе с BasicTextField, чтобы создавать собственные текстовые поля на основе текстовых полей Material Design, но с большим количеством вариантов настройки.
  • Добавлена возможность настраивать горизонтальные и вертикальные отступы в текстовых полях. (I8c9f1, b/203764564, b/191543915, b/189971673, b/183136600, b/179882597, b/168003617)
  • Добавлены функции ComposableTarget, ComposableTargetMarker и ComposableOpenTarget, которые позволяют во время компиляции сообщать о том, что composable-функция вызывается с применением к объекту, для которого она не предназначена.

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

    Для пользовательских функций, вызывающих ComposeNode или ReusableComposeNode, необходимо добавить аннотацию CompoableTarget для функции и всех типов параметров компонуемой лямбда-функции. Однако мы рекомендуем создать аннотацию, которая будет отмечена символом ComposableTargetMarker, а затем использовать эту аннотацию вместо символа ComposableTarget. Составная composable-функция, отмеченная символом ComposableTargetMarker, эквивалентна аннотации ComposbleTarget с полным именем класса атрибута в качестве параметра applier. Пример использования свойства ComposableTargetMarker приведен в описании типа anroidx.compose.ui.UiComposable. (I38f11)

Версия 1.2.0-alpha03

9 февраля 2022 г.

Выход androidx.compose.material:material-*:1.2.0-alpha03. Версия 1.2.0-alpha03 содержит следующие коммиты:

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

Версия 1.2.0-alpha02

26 января 2022 г.

Выход androidx.compose.material:material-*:1.2.0-alpha02. Версия 1.2.0-alpha02 содержит следующие коммиты:

Изменения в API

  • Добавлен метод NonRestartableComposable для перегрузки существующих методов без сложной логики. Это уменьшает количество проверок мемоизации, сгенерированных компилятором (equals), для всех параметров, которые повторяются во внутренней вызываемой функции. (I90490)
  • Добавлена поддержка чипа действия (I07100, b/192585545)

Версия 1.2.0-alpha01

12 января 2022 г.

Выход androidx.compose.material:material-*:1.2.0-alpha01. Версия 1.2.0-alpha01 содержит следующие коммиты:

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

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

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

  • У пользователя ModalBottomSheetState теперь есть флаг isSkipHalfExpanded. Его можно задать в конструкторе или обновить позже, присвоив свойству isSkipHalfExpanded объекта ModalBottomSheetState значение true. Изменение значения isSkipHalfExpanded приводит к перекомпоновке таблицы. (I18b86, b/186669820)

Версия 1.1

Версия 1.1.1

23 февраля 2022 г.

Выход androidx.compose.material:material-*:1.1.1. Версия 1.1.1 содержит следующие коммиты:

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

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

Версия 1.1.0

9 февраля 2022 г.

Выход androidx.compose.material:material-*:1.1.0. Версия 1.1.0 содержит следующие коммиты:

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

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

Версия 1.1.0-rc03

26 января 2022 г.

Выход androidx.compose.material:material-*:1.1.0-rc03. Версия 1.1.0-rc03 содержит следующие коммиты:

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

Обратите внимание, что в Compose 1.0 компоненты Material будут расширять пространство макета, чтобы соответствовать рекомендациям по обеспечению доступности и размеру интерактивных элементов. Например, область прикосновения кнопки будет расширена до минимального размера 48 x 48 dp, даже если вы зададите меньший размер кнопки. Это позволяет обеспечить согласованное поведение компонентов Material Design и Compose Material при их совместном использовании. Это изменение также гарантирует, что при создании интерфейса с помощью компонентов Compose Material будут соблюдены минимальные требования к доступности областей прикосновения.

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

  • Добавлена более подробная информация для отладки в инспектор макета при проверке модификаторов минимальной цели касания. (aosp/1955036)

Версия 1.1.0-rc01

15 декабря 2021 г.

Выход androidx.compose.material:material-*:1.1.0-rc01. Версия 1.1.0-rc01 содержит следующие коммиты:

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

  • Исправлена ошибка, из-за которой радиус скругления углов применялся к элементам Checkboxes (I38b03, b/175198975, b/202309440)

Версия 1.1.0-beta04

1 декабря 2021 г.

Выход androidx.compose.material:material-*:1.1.0-beta04. Версия 1.1.0-beta04 содержит следующие коммиты:

Новые функции

  • Обновлено для совместимости с Kotlin 1.6.0

Версия 1.1.0-beta03

17 ноября 2021 г.

Выход androidx.compose.material:material-*:1.1.0-beta03. Версия 1.1.0-beta03 содержит следующие коммиты:

Версия 1.1.0-beta02

3 ноября 2021 г.

Выход androidx.compose.material:material-*:1.1.0-beta02. Версия 1.1.0-beta02 содержит следующие коммиты.

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

  • Теперь волны и другие индикаторы будут задерживаться только в том случае, если они находятся в контейнере Modifier.scrollable(), а не всегда при событии нажатия. (Ibefe0, b/203141462)

Версия 1.1.0-beta01

27 октября 2021 г.

Выход androidx.compose.material:material-*:1.1.0-beta01. Версия 1.1.0-beta01 содержит следующие коммиты:

Новые функции

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

Версия 1.1.0-alpha06

13 октября 2021 г.

Выход androidx.compose.material:material-*:1.1.0-alpha06. Версия 1.1.0-alpha06 содержит следующие коммиты:

Изменения в API

  • Добавлена перегрузка макета без дочерних элементов с повышенной эффективностью (Ib0d9a).
  • Реализация правила ExposedDropdownMenu на основе ExposedDropdownMenuBox с вложенными правилами TextField и DropdownMenu (If60b2)
  • В PopupProperties добавлен параметр dismissOnOutsideClick, который заменил устаревший параметр dismissOnClickOutside. Новый ресурс получает позицию клика и границы якоря, что позволяет более точно определять, следует ли вызывать onDismissRequest. Например, это может быть полезно, чтобы предотвратить закрытие фиксированного объявления при нажатии на него.
    • updateAndroidWindowManagerFlags был добавлен в PopupProperties, чтобы обеспечить низкоуровневое управление флагами, передаваемыми всплывающим окном в Android WindowManager. Параметром лямбда-функции будут флаги, рассчитанные на основе значений PopupProperties, которые приводят к флагам WindowManager, например focusable. Результат работы лямбда-функции будет представлять собой окончательные флаги, которые будут переданы в Android WindowManager. По умолчанию функция updateAndroidWindowManagerFlags оставляет флаги, рассчитанные на основе параметров, без изменений. Используйте этот API с осторожностью, только если у всплывающего окна есть особые требования к поведению. (I6e9f9)

Версия 1.1.0-alpha05

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

Выход androidx.compose.material:material-*:1.1.0-alpha05. Версия 1.1.0-alpha05 содержит следующие коммиты:

Изменения в API

  • Добавлен минимальный размер области прикосновения для компонентов Material, у которых нет доступной области прикосновения. Поскольку это добавляет дополнительное пространство вокруг компонентов, чтобы обеспечить достаточно большой размер области прикосновения, это может изменить существующие интерфейсы, которые предполагают, что размер этих компонентов является их визуальным размером и не учитывает размер области прикосновения. Вы можете использовать экспериментальную локальную композицию LocalMinimumTouchTargetEnforcement, чтобы отключить это поведение в иерархии, но это должно быть временным решением, пока вы обновляете существующие интерфейсы с учетом нового минимального размера. (I9b966, b/149691127, b/171509422)
  • Добавлен экспериментальный интерфейс TextFieldColorsWithIcons, который расширяет TextFieldColors, чтобы предоставить InteractionSource для leadingColor и trailingColor. Это позволяет изменять внешний вид TextField в зависимости от того, находится ли он в фокусе. (I66923, b/198402662)

Версия 1.1.0-alpha04

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

Выход androidx.compose.material:material-*:1.1.0-alpha04. Версия 1.1.0-alpha04 содержит следующие коммиты:

Изменения в API

  • Удалены устаревшие функции performGesture и GestureScope, которые были заменены функциями performTouchInput и TouchInjectionScope. (Ia5f3f, b/190493367)
  • В touchBoundsInRoot добавлено SemanticsNode, в котором указан минимальный размер области прикосновения. Это поможет разработчикам убедиться, что области прикосновения соответствуют минимальным требованиям к доступности. (I2e14b, b/197751214)

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

  • Разрешить области прикосновения выходить за границы области обрезки, чтобы обеспечить минимальный размер области прикосновения. (I43e10, b/171509422)
  • Обновлен компонент Divider, чтобы учитывать Dp.Hairline для параметра толщины, чтобы можно было рисовать разделители в один пиксель независимо от плотности экрана. (I16ffb, b/196840810)

Версия 1.1.0-alpha03

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

Выход androidx.compose.material:material-*:1.1.0-alpha03. Версия 1.1.0-alpha03 содержит следующие коммиты.

Новые функции

  • Обновлена зависимость Compose 1.1.0-alpha03 от Kotlin 1.5.30. (I74545)

Изменения в API

  • Добавлен тестовый метод для получения обрезанных границ. (I6b28e)
  • Добавлен минимальный размер области прикосновения в ViewConfiguration для использования в семантике и вводе с помощью указателя, чтобы обеспечить доступность. (Ie861c)

Версия 1.1.0-alpha02

18 августа 2021 г.

Выход androidx.compose.material:material-*:1.1.0-alpha02. Версия 1.1.0-alpha02 содержит следующие коммиты:

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

  • Исправлено поведение SwipeableState в случае, когда смещение прокрутки находится в пределах ошибки округления якоря. (I03d39, b/191993377)

Версия 1.1.0-alpha01

4 августа 2021 г.

Выход androidx.compose.material:material-*:1.1.0-alpha01. Версия 1.1.0-alpha01 содержит следующие коммиты:

Изменения в API

  • Обновленный метод DrawScope#drawImage, который использует исходные и целевые прямоугольники, чтобы использовать необязательный параметр FilterQuality. Это полезно для пиксельной графики, которая должна быть пикселизированной при масштабировании. Обновлены BitmapPainter и Image composable: теперь они также используют необязательный параметр FilterQuality (Ie4fb0, b/180311607).
  • Переименован BadgeBox в BadgedBox, изменены параметры для принятия Badge composable. Добавлен компонент Badge, который представляет собой типичный контент значка для BadgedBox. (I639c6)
  • Добавлен компонент NavigationRail. Информацию о его использовании можно найти в документации и примерах (I8de77).

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

  • Добавлен пример NavigationRail с выравниванием по нижнему краю и демонстрация приложения Catalog. (I3cffc)
  • Теперь диалоговые окна следуют правилам изменения размера платформы. Чтобы переопределить это поведение, задайте для параметра usePlatformDefaultWidth значение false. (Iffaed, b/192682388)
  • В приложение каталога добавлен демонстрационный код для навигационной панели. (I04960)
  • В приложение каталога добавлен демонстрационный значок. (If285d)

Версия 1.0

Версия 1.0.5

3 ноября 2021 г.

Выход androidx.compose.material:material-*:1.0.5. Версия 1.0.5 содержит следующие коммиты:

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

  • Исправлена ошибка отслеживания сбоев, связанных с экземплярами derivedStateOf. (aosp/1792247)

Версия 1.0.4

13 октября 2021 г.

Выход androidx.compose.material:material-*:1.0.4. Версия 1.0.4 содержит следующие коммиты:

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

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

Версия 1.0.3

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

Выход androidx.compose.material:material-*:1.0.3. Версия 1.0.3 содержит следующие коммиты:

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

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

Версия 1.0.2

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

Выход androidx.compose.material:material-*:1.0.2. Версия 1.0.2 содержит следующие коммиты:

Добавлена поддержка версии Compose 1.0.2. Compose 1.0.2 по-прежнему совместим с Kotlin 1.5.21.

Версия 1.0.1

4 августа 2021 г.

Выход androidx.compose.material:material-*:1.0.1. Версия 1.0.1 содержит следующие коммиты:

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

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

Версия 1.0.0

28 июля 2021 г.

Выход androidx.compose.material:material-*:1.0.0. Версия 1.0.0 содержит следующие коммиты:

Основные функции версии 1.0.0

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

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

  • Если вы используете Android Studio Bumblebee Canary 4 или AGP 7.1.0-alpha04/7.1.0-alpha05, может произойти сбой:

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

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

Версия 1.0.0-rc02

14 июля 2021 г.

Выход androidx.compose.material:material-*:1.0.0-rc02. Версия 1.0.0-rc02 содержит следующие коммиты:

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

  • Теперь диалоговые окна следуют правилам изменения размера платформы. Чтобы переопределить это поведение, задайте для параметра usePlatformDefaultWidth значение false. (Iffaed, b/192682388)

Версия 1.0.0-rc01

1 июля 2021 г.

Выход androidx.compose.material:material-*:1.0.0-rc01. Версия 1.0.0-rc01 содержит следующие коммиты:

Изменения в API

  • Добавлен компонент BadgeBox. Информацию о его использовании можно найти в документации и примерах (I5e284).
  • useDefaultMaxWidth в PopupProperties переименован в usePlatformDefaultWidth. (I05710)
  • Теперь диалоговые окна могут занимать всю ширину экрана. (I83929, b/190810877)
  • Добавлена реализация экспериментального ползунка диапазона (I2f4b3).

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

  • В соответствии со спецификациями Material Design, если в OutlinedTextField введены недопустимые данные, цвет ярлыка больше не будет меняться на цвет ошибки, когда ярлык используется в качестве плейсхолдера. Последнее верно, если в текстовом поле нет введенного текста и фокус не установлен на нем. В результате этого изменения изменилось и значение параметра error:Boolean в функции TextFieldColors.labelColor(): теперь он будет возвращать false, даже если входные данные недействительны, если ярлык используется в качестве плейсхолдера. (I45f78)

Версия 1.0.0-beta09

16 июня 2021 г.

Выход androidx.compose.material:material-*:1.0.0-beta09. Версия 1.0.0-beta09 содержит следующие коммиты:

Изменения в API

  • В OutlinedTextField добавлен параметр Shape, позволяющий настраивать форму границы (I8f39e, b/181322957).
  • Класс TextOverflow изменен на встроенный. (I433af)

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

  • Затемнение в BottomDrawer, BackdropScaffold и ModalBottomSheetLayout исчезнет, если передать Color.Unspecified (I2d899, b/182063309).

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

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

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

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

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

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

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Правило для класса будет иметь следующий формат:

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

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

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

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

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

  • Метод, отмеченный флагом H, является "горячим" и должен быть скомпилирован заранее.

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

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

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

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

  • Библиотеки могут определять эти правила, которые будут упакованы в артефакты AAR. Когда создается APK-файл, включающий эти артефакты, правила объединяются и используются для создания компактного двоичного профиля ART, относящегося к этому APK-файлу. При установке APK на устройство ART может использовать этот профиль для предварительной компиляции определенной части приложения, чтобы повысить его производительность, особенно при первом запуске. Обратите внимание, что это не повлияет на приложения с возможностью отладки.

Версия 1.0.0-beta08

2 июня 2021 г.

Выход androidx.compose.material:material-*:1.0.0-beta08. Версия 1.0.0-beta08 содержит следующие коммиты:

Новые функции

Изменение в API, нарушающее работу

  • ОШИБКА В РАБОТЕ: теперь карточка обрабатывает клики, поэтому клики, добавленные с помощью Card(Modifier.clickable), не будут работать. Используйте новую экспериментальную перегрузку карточки, которая принимает onClick. (Ia8744, b/183775620)
    • Добавлен новый перегруженный метод Card, который обрабатывает клики и другие функции, связанные с кликами: индикацию, источник взаимодействия, включение и отключение. Обычную некликабельную карточку нельзя использовать с Modifier.clickable, поскольку в таких случаях она не будет обрезать индикатор пульсации.
  • КРИТИЧЕСКИЕ ИЗМЕНЕНИЯ: теперь Surface потребляет клики, поэтому клики, добавленные с помощью Surface(Modifier.clickable), не будут работать. Используйте новую экспериментальную перегрузку Surface, которая принимает onClick. (I73e6c, b/183775620)
    • Добавлена новая перегрузка Surface, которая обрабатывает клики, а также другие функции, связанные с кликами: индикация, источник взаимодействия, включение/отключение. Не удалось использовать обычную некликабельную поверхность с Modifier.clickable, поскольку в таких случаях поверхность не будет обрезать индикатор пульсации.

Изменения в API

  • FabPosition был преобразован во встроенный класс из перечисления, чтобы обеспечить возможность расширения в будущем (I030fb).
  • Перечисления были преобразованы в встроенные классы, чтобы избежать проблем с исчерпывающими операторами when при добавлении новых значений перечислений. (I2b5eb)
  • Добавлено время ожидания нажатия для элементов, которые можно нажать или переключить, чтобы предотвратить появление эффекта волны при прокрутке или перетаскивании (Ia2704, b/168524931).
  • Свойства ContentDescription и Text больше не являются отдельными значениями, а представляют собой списки. Это позволяет объединять их как есть, а не конкатенировать. Также были добавлены улучшенные API для тестирования, которые позволяют использовать эти изменения (Ica6bf, b/184825850).
  • Modifier.focusModifier() больше не поддерживается и заменена на Modifier.focusTarget() (I6c860).
  • Перечисление FocusState заменено интерфейсом FocusState (Iccc1a, b/187055290)
  • Удалено LocalRippleNativeRendering, поскольку реализация эффекта пульсации на основе View стала стабильной (I7fab3, b/188569367)

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

  • Modifier.onGloballyPositioned() теперь сообщает координаты этого модификатора в цепочке модификаторов, а не координаты макета после применения всех модификаторов. Это означает, что порядок модификаторов влияет на то, какие координаты будут передаваться. (Ieb67d, b/177926591)
  • Добавлен файл README для существующего каталога материалов Compose. (If9191)

Версия 1.0.0-beta07

18 мая 2021 г.

Выход androidx.compose.material:material-*:1.0.0-beta07. Версия 1.0.0-beta07 содержит следующие коммиты.

Изменения в API

  • В Navigation Compose больше не нужно использовать методы расширения для поддержки маршрутов. (I22beb, b/172823546)

Версия 1.0.0-beta06

5 мая 2021 г.

Выход androidx.compose.material:material-*:1.0.0-beta06. Версия 1.0.0-beta06 содержит следующие коммиты.

Изменения в API

  • В Ripple теперь используется RippleDrawable на устройствах Android. Это означает, что анимация будет выполняться в RenderThread и будет плавной, даже если поток UI перегружен, например при переходе между экранами. Это не повлияет на API Ripple, но может привести к изменениям в поведении. Чтобы упростить переход, мы добавили LocalRippleNativeRendering. Укажите для этого CompositionLocal значение false, чтобы вернуться к предыдущей реализации эффекта пульсации в CompositionLocalProvider. Этот API временный и будет удален в будущем. Если у вас возникли проблемы, из-за которых вам пришлось использовать этот API, сообщите нам об ошибке. (I902f8, b/168777351, b/183019123)
  • Добавлены API специальных возможностей CollectionInfo и CollectionItemInfo, которые позволяют отмечать коллекции и их элементы для сервисов специальных возможностей (Id54ef, b/180479017).
  • Добавлен API специальных возможностей error, позволяющий отмечать узлы, содержащие недопустимые входные данные (I12997, b/180584804, b/182142737).

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

  • Обновлена реализация вкладок каталога Compose Material: https://github.com/google/accompanist/pull/365. (I25dc3)
  • Дочерние элементы Row и Column с параметром weight(fill = false) больше не заставляют родительский элемент заполнять все доступное пространство основной оси. (Ied94d, b/186012444, b/184355105)

Версия 1.0.0-beta05

21 апреля 2021 г.

Выход androidx.compose.material:material-*:1.0.0-beta05. Версия 1.0.0-beta05 содержит следующие коммиты:

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

  • В существующий каталог Compose Material добавлены изображения компонентов, выбор темы и более точные URL меню. (I9b58e)

Версия 1.0.0-beta04

7 апреля 2021 г.

Выход androidx.compose.material:material-*:1.0.0-beta04. Версия 1.0.0-beta04 содержит следующие коммиты.

Изменения в API

  • ИЗМЕНЕНИЕ API: статус DrawerState больше не расширяет экспериментальный статус SwipeableState.
    • ИЗМЕНЕНИЕ API: BottomDrawerState теперь помечен как экспериментальный, чтобы соответствовать уже экспериментальному компоненту BottomDrawer (I81114, b/181656094)
  • Переименуй файлы hideSoftwareKeyboard и showSoftwareKeyboard на SoftwareKeyboardController в hide() и show() соответственно.
    • Предоставлен полный интерфейс CompositionLocal для LocalSoftwareKeyboardController, позволяющий задавать его (особенно полезно при тестировании) (I579a6).
  • Добавлен API специальных возможностей LiveRegion. Если узел отмечен как динамическая область, сервисы специальных возможностей автоматически уведомят пользователя о ее изменениях (Idcf6f, b/172590946).

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

  • В существующий модуль добавлен каталог Compose Material. Сейчас отсутствуют изображения для плиток компонентов и средство выбора темы (будут добавлены в последующих изменениях). (Ie7a94)

Версия 1.0.0-beta03

24 марта 2021 г.

Выход androidx.compose.material:material-*:1.0.0-beta03. Версия 1.0.0-beta03 содержит следующие коммиты:

Изменения в API

  • DefaultMonotonicFrameClock больше не поддерживается. При вызове withFrameNanos или Recomposer.runRecomposeAndApplyChanges без MonotonicFrameClock будет возвращаться ошибка IllegalStateException. (I4eb0d)
  • Добавлен новый API LeadingIconTab, который позволяет показывать значок и встроенный текст на вкладке. (I23267)

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

  • [by Jossi Wolf] BottomDrawer теперь оборачивает контент слота панели. BottomDrawer не вызывает ошибку IllegalStateException, когда родительский элемент имеет бесконечную высоту. Нижняя выдвигающаяся панель теперь будет открываться в развернутом состоянии, если ее размер составляет менее 50% от размера родительского элемента. Документы, связанные с BottomDrawerState и ModalBottomSheetLayoutState, были обновлены. BottomDrawerState#isOpen теперь возвращает значение true, если он открыт или развернут. (I87241)

Версия 1.0.0-beta02

10 марта 2021 г.

Выход androidx.compose.material:material-*:1.0.0-beta02. Версия 1.0.0-beta02 содержит следующие коммиты:

Изменения в API

  • Добавлен новый локальный API композиции LocalSoftwareKeyboardController, который заменит предыдущий интерфейс SoftwareKeyboardController в TextField. (I5951e, b/168778053)

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

  • Внедрение ограничений на общедоступное использование экспериментальных API (I6aa29, b/174531520)
  • Изменено выравнивание по горизонтали по умолчанию для TopAppBar и BottomAppBar на "Начало" в соответствии с Row (Ib2dc7).
  • Добавлен новый модуль и интерфейс для каталога Compose Material, который сейчас вложен в существующие демонстрационные версии интеграционных тестов. (Idfcb3)
  • androidx.compose.ui:ui больше не зависит от AppCompat или Fragment. Если вы используете в приложении ComposeView, а также Fragment и/или AppCompat, убедитесь, что у вас установлена версия AppCompat 1.3+ или Fragment 1.3+. Эти версии необходимы для правильной настройки владельцев жизненного цикла и сохраненного состояния, которые требуются для ComposeView. (I1d6fa, b/161814404)

Версия 1.0.0-beta01

24 февраля 2021 г.

Выход androidx.compose.material:material-*:1.0.0-beta01. Версия 1.0.0-beta01 содержит следующие коммиты:

Это первый выпуск Compose 1.0.0 Beta.

Изменения в API

  • Изменены названия модификаторов размера. Параметры Modifier.width/height/size были переименованы в requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize были переименованы в width/height/size. (I5b414)
  • imageResource и vectorResource теперь являются функциями расширения для объектов ImageBitmap и ImageVector соответственно. Функции load{Image,Vector,Font}Resource удалены. (I89130)
  • Модификаторы для определения размера на основе внутренних параметров больше не являются экспериментальными. (I15744)
  • Удалены утверждения dp (I798d2)
  • Удален обратный вызов SoftwareKeyboardController из всех текстовых полей. Вскоре будет добавлен новый API. (Iae869, b/168778053)
  • Лямбда-функции для переключателей, флажков и переключателей теперь могут иметь нулевое значение. Примеры с флажками в строках, на которые можно нажать, обновлены с учетом этой функции. (If601b, b/171819073)
  • InteractionState заменен на [Mutable]InteractionSource
    • Интерфейсы отвечают за отправку и сбор событий взаимодействия.
    • Вместо того чтобы передавать interactionState = remember { InteractionState() } компонентам, таким как Button и Modifier.clickable(), используйте interactionSource = remember { MutableInteractionSource() }.
    • Вместо Interaction.Pressed in interactionState используйте функции расширения для InteractionSource, например InteractionSource.collectIsPressedAsState().
    • В сложных случаях можно использовать InteractionSource.interactions, чтобы отслеживать поток взаимодействий. Дополнительную информацию можно найти в документации по InteractionSource и примерах.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Добавление интерфейса AccessibilityMananger и LocalAccessibilityMananger в CompositionLocals (I53520)
  • Удалены устаревшие методы LayoutCoordinates. Вместо свойства для positionInParent и boundsInParent теперь используется функция (I580ed, b/169874631, b/175142755).
  • Ползунок теперь поддерживает состояния "включено" и "отключено" (I6d56b, b/179793072)
  • Создан новый TextInputSession для сеансов ввода из текстовых компонентов низкого уровня, таких как CoreTextField. (I8817f, b/177662148)
  • Удален параметр AnimationEndReason.Interrupted. Если анимация будет прервана, будет сгенерировано исключение CancellationException. (I2cbbc, b/179695417)
  • Удален тип @ExperimentalRippleApi, а тип RippleAlpha изменен с интерфейса на класс со свойствами. (I6df7c)
  • Добавлен интерфейс TextFieldColors, который позволяет задавать разные цвета для компонентов TextField и OutlinedTextField в разных состояниях. Реализацию по умолчанию можно найти в TextFieldDefaults.textFieldColors и TextFieldDefaults.outlinedTextFieldColors.
  • Добавлен модификатор selectionGroup, позволяющий отмечать коллекцию вкладок или переключателей для специальных возможностей (Ie5c29).
  • Добавлен метод LazyListState.animateScrollToItem

    Этот метод позволяет плавно прокрутить список до определенного элемента. (I4bfd7)

  • ScrollableState.smoothScrollBy() переименован в animateScrollBy() LazyListState.snapToItemIndex() переименован в scrollToItem() ScrollState.smoothScrollTo() переименован в animateScrollTo() (I35ded)

  • Теперь все функции, отмеченные аннотацией @ReadOnlyComposable, проходят проверку во время компиляции, чтобы убедиться, что они вызывают только другие функции, отмеченные аннотацией @ReadOnlyComposables (I58961).

  • API TargetAnimation удален. (If47d1, b/177457083)

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

  • Пакеты методов smoothScrollBy и scrollBy изменены на androidx.compose.foundation.gestures.* (I3f7c1, b/175294473).

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

  • Изменены названия модификаторов размера. Параметры Modifier.width/height/size были переименованы в requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize были переименованы в width/height/size. (I5b414)

  • Параметр defaultMinSizeConstraints переименован в defaultMinSize. (I4eaae)

  • Ориентация перенесена в основной пакет. Класс VelocirtTracker перенесен из ui.gesture в ui.input.pointer. (Iff4a8, b/175294473)

  • drawerState.open() и drawerState.close() теперь являются приостанавливающими функциями. Используйте rememberCoroutineScope(), чтобы получить область композиции для вызова (I16f60, b/175294473).

  • Компонент Providers переименован в CompositionLocalProvider.

    • Конструктор Composition больше не принимает параметр key и считается устаревшим.
    • currentCompositeKeyHash теперь является composable-свойством верхнего уровня, а не composable-функцией верхнего уровня.
    • Объекты CompositionData и CompositionGroup перемещены в пространство имен androidx.compose.runtime.tooling
    • ComposableLambda теперь является интерфейсом, а не классом, и больше не имеет параметров типа.
    • ComposableLambdaN теперь является интерфейсом, а не конкретным классом, и больше не имеет параметров типа.
    • Функция snapshotFlow перенесена в пространство имен androidx.compose.runtime
    • Метод слияния SnapshotMutationPolicy больше не является экспериментальным.
    • Функция clearRoots верхнего уровня @TestOnly удалена. Он больше не нужен.
    • Удалены функции keySourceInfoOf и resetSourceInfo. Они больше не нужны.
    • Функция Composer.collectKeySourceInformation удалена. Он больше не нужен.
    • Удалены методы isJoinedKey, joinedKeyLeft и joinedKeyRight. Они больше не нужны.
    • Различные API верхнего уровня были перемещены и реорганизованы в другие файлы. Из-за семантики класса файла Kotlin это нарушит совместимость на уровне двоичного кода, но не на уровне исходного кода, поэтому для большинства пользователей проблем не возникнет.
    • (I99b7d, b/177245490)
  • Изменения в Modifier.scrollable Теперь вместо класса ScrollableController используется интерфейс Scrollable (I4f5a5, b/174485541, b/175294473).

  • Теперь в качестве параметра modifier.draggable можно использовать DraggableState вместо простой лямбда-функции. Чтобы получить прежнее поведение, создайте состояние с помощью rememberDraggableState { delta -> } (Ica70f, b/175294473).

  • Функции ZoomableController.smoothScaleBy и ZoomableController.stopAnimation теперь являются функциями приостановки. (I7f970, b/177457083)

  • Удалены некоторые ранее устаревшие API (Ice5da, b/178633932).

  • В Material API внесены следующие изменения:

    • В Top/BottomAppBar добавлен параметр contentPadding, позволяющий настраивать отступы по умолчанию.
    • Параметры в BackdropScaffold были переупорядочены в соответствии с рекомендациями API, согласно которым обязательные параметры должны идти перед необязательными.
    • Параметр icon в BottomNavigationItem перемещен после selected и onClick.
    • Параметр alwaysShowLabels в BottomNavigationItem переименован в alwaysShowLabel.
    • Параметры bodyContent в некоторых компонентах переименованы в content.
    • Параметры в ButtonDefaults.buttonColors() переставлены местами. Обратите внимание, что тип параметров не изменился, поэтому в коде не возникнет ошибок. Однако вам нужно будет вручную изменить порядок параметров или использовать именованные параметры, иначе код будет работать не так, как раньше.
    • В darkColors() добавлен параметр secondaryVariant. Обычно этот цвет совпадает с цветом secondary в темной теме, но мы добавили его для единообразия и возможности дальнейшей настройки.
    • Из общедоступного API удалены ElevationDefaults и animateElevation(), поскольку они не пользовались популярностью.
    • Поле onValueChangeEnd в Slider переименовано в onValueChangeFinished и стало допускать нулевые значения.
    • Параметр text в Snackbar переименован в content для единообразия.
    • Добавлен параметр contentPadding в DropdownMenuItem, чтобы можно было настраивать отступы по умолчанию, а content стал расширением RowScope.
    • Название "ModalDrawerLayout" изменено на "ModalDrawer".
    • Название "BottomDrawerLayout" изменено на "BottomDrawer".
    • (I1cc66)
  • Теперь в BasicTextField можно использовать кисть вместо цвета, чтобы было удобнее настраивать внешний вид (I83a36).

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

  • Функция Indication#createIndication() переименована в Indication#rememberUpdatedIndication(InteractionState). Параметр InteractionState удален из функции IndicationInstance#drawIndication(). IndicationInstance должна отвечать только за отрисовку визуальных эффектов, а не за запуск анимации или запись состояния в ответ на изменения InteractionState. Анимация и запись состояния должны выполняться в течение rememberUpdatedIndication(). Параметр indication в Modifier.indication также стал обязательным. (Ic1764, b/152525426)

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

  • Добавлен новый локальный API LocalSoftwareKeyboardController для композиции, который заменяет предыдущий интерфейс SoftwareKeyboardController в TextField. (I658b6, b/168778053)

Версия 1.0.0-alpha12

10 февраля 2021 г.

Выход androidx.compose.material:material-*:1.0.0-alpha12. Версия 1.0.0-alpha12 содержит следующие коммиты:

Изменения в API

  • Теперь для Modifier.pointerInput требуются ключи remember, чтобы указывать, когда сопрограмма обнаружения ввода указателя должна перезапускаться для новых зависимостей. (I849cd)
  • Классы BottomDrawerLayout и ListItem помечены аннотацией @ExperimentalMaterialApi (Id766e).
  • Добавлено значение PaddingValues.Absolute, которое можно использовать в API, принимающих PaddingValues. (Ia5f30)
  • onImeActionPerformed устарел. Используйте KeyboardActions (If0bbd, b/179071523).
  • Чтобы привести названия в соответствие с ImageBitmap и ImageVector, ImagePainter был переименован в BitmapPainter, чтобы параллельно использовать VectorPainter. (Iba381, b/174565889)
  • Функции Animatable.snapTo и Animatable.stop теперь являются функциями приостановки (If4288)
  • Метод ComponentActivity.setContent перенесен в androidx.activity.compose.setContent в модуле androidx.activity:activity-compose. (Icf416)
  • Из нескольких классов, где они редко использовались, удалены методы деструктуризации и copy(). (I26702, b/178659281)
  • Сделать функции halfExpand() и expand() в ModalBottomSheetState внутренними (Ic914e)
  • Изменили Indication#createInstance, чтобы он был @Composable, и изменили LocalIndication, чтобы он содержал Indication, а не () -> Indication. (I5eeea, b/157150564)
  • Перенесли AlertDialog и DropdownMenu в Android. В DropdownMenu добавлен параметр PopupProperties для дальнейшей настройки базового всплывающего окна. (I9c443)
  • Поддержка loadFontResource прекращена. Вместо них используйте fontResource. imageResource, loadImageResource, vectorResource и loadVectorResource устарели. Вместо него используйте painterResource. (I6b809)
  • Из компонента DropdownMenu удалены параметры toggle и toggleModifier, а параметры dropdownModifier, dropdownOffset и dropdownContent переименованы в modifier, offset и content соответственно. Теперь DropdownMenu ведет себя так же, как Popup: для определения положения меню используется родительский макет. В большинстве случаев элемент toggle можно переместить так, чтобы он стал элементом того же уровня, что и DropdownMenu, а оба элемента можно было бы упаковать в элемент Box. Чтобы узнать больше об использовании этого API, ознакомьтесь с обновленным примером в документации. (I884fb)
  • Метод toIntPx() был переименован в roundToPx(). (I9b7e4, b/173502290)
  • Класс IntBounds был переименован в IntRect, а API был улучшен. (I1f6ff)
  • Добавлены семантические действия для развертывания и сворачивания. Добавлены состояния expand и halfExpand в ModalBottomSheetState (Ib5064)
  • Поддержка Modifier.dragGestureFilter прекращена. Вместо него используйте Modifier.pointerInput { detectDragGestures (...)}. Также можно использовать Modifier.draggable для перетаскивания по одной оси (I0ba93, b/175294473).
  • Переименованы объекты Ambients в соответствии с переименованием Ambient -> CompositionLocal. Раньше объекты Ambients назывались AmbientFoo, а теперь объекты CompositionLocals называются LocalFoo. (I2d55d)
  • Выделение перемещено в основание. (I7892b)
  • Как и в случае с удалением composable-функции state { 0 } и продвижением функции remember { mutableStateOf(0) }, мы удалим composable-функцию savedInstanceState { 0 }. Вместо этого используйте rememberSaveable { mutableStateOf(0) }. Если тип, используемый в MutableState, можно сохранить в Bundle, то состояние будет сохраняться и восстанавливаться автоматически. Если раньше вы передавали специальный объект сохранения, теперь вам нужно использовать новую перегрузку функции rememberSaveable с параметром stateSaver. Пример использования: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • Добавлен ProgressBarRangeInfo.Indeterminate, чтобы отмечать неопределенные индикаторы выполнения для специальных возможностей (I6fe05).
  • Аннотация @ComposableContract устарела. Вместо нее теперь используются три более конкретные аннотации.

    • @ComposableContract(restartable = false) теперь называется @NonRestartableComposable.
    • @ComposableContract(readonly = true) теперь называется @ReadOnlyComposable.
    • @ComposableContract(preventCapture = true) теперь называется @DisallowComposableCalls.
    • Ресурс @ComposableContract(tracked = true) уже удален.
    • (I60a9d)
  • Утилиты emptyContent() и (@Composable () -> Unit).orEmpty() устарели, поскольку больше не влияют на эффективность и не имеют ценности (I0484d).

  • Функция rememberSavedInstanceState() переименована в rememberSaveable() и перенесена в пакет androidx.compose.runtime.saveable. (I1366e, b/177338004)

  • Saver, listSaver(), mapSaver(), autoSaver были перенесены из androidx.compose.runtime.savedinstancestate в androidx.compose.runtime.saveable (I77fe6)

  • Параметры RounderCornerShape, CutCornerShape и CornerBasedShape были переименованы с left/right на start/end, чтобы поддерживать автоматическое зеркальное отображение формы в направлении справа налево. Классы AbsoluteRounderCornerShape и AbsoluteCutCornerShape были добавлены для случаев, когда автоматическое зеркальное отражение нежелательно. (I61040, b/152756983)

  • Параметры text и icon в Tab и параметр label в BottomNavigationItem теперь могут иметь нулевое значение. Это позволяет лучше передать поведение компонента, когда эти параметры указаны или не указаны, поскольку они влияют на размер и макет компонента. Если вы передаете emptyContent(), чтобы указать, что текст, значок или ярлык отсутствуют, используйте null. (I57ed4)

  • Параметр contentColorFor переименован в backgroundColor (I5bb67).

  • Прекращена поддержка TabDefaults, вместо которого теперь используется TabRowDefaults. (I0f189)

  • Добавлен API ColorMatrix, который используется для изменения значений RGB исходного контента. API ColorFilter переработан в интерфейс и теперь соответствует реализации PathEffect. (Ica1e8)

  • Поддержка AnimatedValue/Float прекращена. Используйте вместо него Animatable. (I71345, b/177457083)

  • Добавлен API SemanticsProperties.PaneTitle. (I20d5a)

  • Добавлены параметры enabled в Tab и BottomNavigationItem, чтобы предотвратить возможность нажатия на них. Изменено значение BottomNavigationItem на RowScope.BottomNavigationItem, чтобы лучше отразить требования к макету в API. (Id683d)

  • tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter и pressIndicaitonGestureFilter больше не поддерживаются. Вместо этого используйте Modifier.clickable или Modifier.pointerInput с функцией detectTapGestures. (I6baf9, b/175294473)

  • Добавьте параметр layoutDirection в метод createOutline класса Shape. Это позволяет создавать фигуры с учетом направления макета. (I57c20, b/152756983)

  • Контакт (Recomposer.current()) удален. [Abstract]ComposeView теперь по умолчанию создается лениво, а Recomposers с областью действия окна управляются ViewTreeLifecycleOwner для окна. Рекомпозиция и такты анимации на основе withFrameNanos приостанавливаются, когда останавливается жизненный цикл хоста. (I38e11)

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

  • Теперь значок будет масштабироваться до нужного размера с учетом примененных к нему модификаторов размера. Например, Icon(.., modifier = Modifier.size(50.dp) теперь будет занимать пространство 50 x 50 dp. (Ib2ba9, b/178796190)

Версия 1.0.0-alpha11

28 января 2021 г.

Выход androidx.compose.material:material-*:1.0.0-alpha11. Версия 1.0.0-alpha11 содержит следующие коммиты:

Изменения в API

  • Некоторые API Material больше не будут @Experimental (I5d20e).
  • В изображения и значки добавлен параметр описания контента. Используется для предоставления описания сервисам специальных возможностей (I2ac4c).
  • Изменения интерфейсов параметров с сохранением состояния Material, чтобы функции @Composable возвращали State<T>. Добавлен метод Animatable.asState(), который упрощает преобразование Animatable в State. Также изменяет animateElevation, чтобы сделать его расширением suspend для Animatable. (If613c)
  • Snackbar, SnackbarHost и SnackbarHostState больше не являются @ExperimentalMaterialAPI (Id1fb5)
  • Изменения в типографике, фигурах и положении вкладок, чтобы они больше не были классами данных. Добавлена функция копирования для типографики и фигур, чтобы заменять сгенерированные объекты. (I40037)
  • Удалены некоторые ранее устаревшие API материалов (Ifaa25)

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

  • onCommit, onDispose и onActive устарели. Вместо них теперь используются API SideEffect и DisposableEffect (If760e).
  • Переход на основе TransitionDefinition устарел (I0ac57)
  • Теперь поддерживается начальное состояние в updateTransition (Ifd51d).
  • Компонент WithConstraints был переработан и переименован в BoxWithConstraints. Теперь он находится в foundation.layout. (I9420b, b/173387208)
  • Прекращение поддержки scrollBy без приостановки, удаление scrollTo без приостановки

    Теперь мы рекомендуем использовать функции suspend для управления прокруткой и ожидания ее завершения. В рамках этого перехода мы прекращаем поддержку и/или удаляем версии этих функций, не связанные с приостановкой. (Ie9ced)

  • Устаревание функции smoothScrollBy, не относящейся к suspend-функциям Теперь мы рекомендуем использовать suspend-функции для управления прокруткой и ожидания ее завершения. В рамках этого перехода мы прекращаем поддержку версий этих функций, которые не приостанавливают выполнение. (I12880)

  • Добавлен тег ComposeContentTestRule, который расширяет тег ComposeTestRule и определяет тег setContent, удаленный из тега ComposeTestRule. Добавлен фабричный метод createEmptyComposeRule(), который возвращает ComposeTestRule и не запускает Activity. Используйте этот параметр, если хотите запустить действие во время тестирования, например с помощью ActivityScenario.launch (I9d782, b/174472899).

  • Эффект пульсации, используемый в Button и FloatingActionButton, больше нельзя настраивать, предоставляя новую индикацию через AmbientIndication. Это никогда не было предусмотрено для настройки этих компонентов, и теперь они соответствуют другим компонентам Material. Чтобы настроить эффект волны для всего приложения, используйте RippleTheme. (I546c5)

  • animateAsState теперь называется animateFooAsState, где Foo – тип анимируемой переменной, например Float, Dp, Offset и т. д. (Ie7e25).

  • В BasicTextField добавлен новый параметр decorationBox. Он позволяет добавлять в текстовое поле значки, плейсхолдеры, ярлыки и другие элементы, а также увеличивать область нажатия. (I16996)

  • Исправлена ошибка, из-за которой нельзя было задать ширину текстового поля меньше 280 dp (I78373).

  • Параметр canDrag удален из Modifier.draggable (Ic4bec, b/175294473)

  • Удалите displaySize, так как его следует избегать. Обычно лучше использовать размер onRoot() или хотя бы размер окна. (I62db4)

  • Теперь у элемента Surface может быть несколько дочерних элементов Layout. (I66a92, b/144488459)

  • invalidate и compositionReference() теперь считаются устаревшими. Вместо них следует использовать currentRecomposeScope и rememberCompositionReference. (I583a8)

  • Изменено значение PopupPositionProvider, чтобы использовать координаты относительно окна, а не глобальные координаты. Переименован параметр parentGlobalBounds в anchorBounds, а параметр windowGlobalBounds изменен на windowSize: IntSize (I2994a)

  • Поля "Продолжительность" и "Время работы" будут заменены на поле "Длинные миллисекунды". Это позволит убрать зависимость ввода указателя от этих классов. (Ia33b2, b/175142755, b/177420019)

  • Удален метод AnimatedFloat.fling, принимающий FlingConfig. Используйте suspend Animatable.animateDecay. (I4659b, b/177457083)

  • Теперь элементы, которые можно нажимать, переключать и выбирать, можно создавать вне композиции (I0a130, b/172938345, b/175294473).

  • Динамика анимации заменена на функциональный интерфейс (Ib14e5).

  • ScrollableColumn/Row были объявлены устаревшими. Использование ScrollableColumn менее эффективно по сравнению с LazyColumn, если у вас большой прокручиваемый контент, поскольку с помощью LazyColumn мы можем составлять, измерять и рисовать только видимые элементы. Чтобы пользователи не могли использовать неэффективные способы, мы решили прекратить поддержку ScrollableColumn и ScrollableRow и рекомендовать вместо них LazyColumn и LazyRow. Пользователи могут отказаться от ленивой загрузки и использовать модификаторы напрямую, например так: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083).

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

  • Удалены экспериментальные методы monotonicFrameAnimationClockOf (Ib753f, b/170708374).

  • Устаревшие методы глобальных координат заменены новыми методами координат на основе окон. (Iee284)

  • Добавлен модификатор Modifier.toolingGraphicsLayer, который добавляет модификатор графического слоя при включении проверки. (I315df)

  • Метод FocusRequester.createRefs теперь помечен как экспериментальный, поскольку может быть изменен. (I2d898, b/177000821)

  • Поле SemanticsPropertyReceiver.hidden было переименовано в invisibleToUser и отмечено аннотацией @ExperimentalComposeUiApi. AccessibilityRangeInfo переименовано в ProgressBarRangeInfo. stateDescriptionRange переименовано в progressBarRangeInfo. AccessibilityScrollState переименовано в ScrollAxisRange. horizontalAccessibilityScrollState переименовано в horizontalScrollAxisRange. verticalAccessibilityScrollState переименовано в verticalScrollAxisRange. (Id3148)

  • Использование TestCoroutineDispatcher при тестировании (I532b6)

  • Обновлен API векторной графики, чтобы поддерживать анализ тонирования, примененного к корню векторной графики. (Id9d53, b/177210509)

Версия 1.0.0-alpha10

13 января 2021 г.

Выход androidx.compose.material:material-*:1.0.0-alpha10. Версия 1.0.0-alpha10 содержит следующие коммиты:

Изменения в API

  • Измененная скорость, состоящая из компонентов и математических операций. (Ib0447)
  • Переименовано с @ExperimentalTesting на @ExperimentalTestApi, чтобы соответствовать аналогичным экспериментальным аннотациям API (Ia4502, b/171464963).
  • Переименован параметр Position в DpOffset и удалена функция getDistance() (Ib2dfd).
  • Переименован метод Color.useOrElse() в Color.takeOrElse() (Ifdcf5)
  • Добавьте переключатель в файл Strings.kt (I4a5b7, b/172366489).
  • FlowRow и FlowColumn устарели. Используйте специальную разметку. (I09027)
  • Методы Modifier.focus() и Modifier.focusRequester() больше не поддерживаются. Вместо них используйте Modifier.focusModifier() и Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
  • Перемещен nativeClass в модуль ui и сделан внутренним. В реализациях метода equals вместо nativeClass теперь используется "is MyClass". (I4f734)

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

  • Добавлена поддержка отключенных и доступных только для чтения текстовых полей (I35279, b/171040474, b/166478534).
  • Функция animate() заменена на animateAsState(), которая возвращает State<T> вместо T. Это позволяет повысить эффективность, поскольку область аннулирования можно сузить до места, где считывается значение State. (Ib179e)
  • Добавлен API для роли Semantics и параметр Role для SemanticsModifier, который можно использовать в элементах, доступных для нажатия, выбора и переключения. Изменено значение Modifier.progressSemantics, чтобы его можно было использовать в Slider. (I216cd)

Версия 1.0.0-alpha09

16 декабря 2020 г.

Выход androidx.compose.material:material-*:1.0.0-alpha09. Версия 1.0.0-alpha09 содержит следующие коммиты:

Изменения в API

  • Добавлен API для запуска анимации и перетаскивания в Modifier.swipeable (Iaa17a, b/162408885).
  • Переименованы объекты *Constants, например ButtonConstants, чтобы они заканчивались на Defaults, например ButtonDefaults. Также удаляет ненужные префиксы default из свойств в этих новых объектах. (Ibb915, b/159982740)
  • Compose поддерживает геттеры свойств, которые могут создавать вызываемые объекты. Поддержка этой функции не прекратится, но изменится синтаксис объявления геттера свойства как @Composable.

    Ранее для этого использовался следующий синтаксис:

        @Composable val someProperty: Int get() = ...
    

    Теперь правильный синтаксис для этого – аннотировать геттер свойства:

       val someProperty: Int @Composable get() = ...
    

    Оба варианта синтаксиса будут работать некоторое время, но в конечном итоге устаревший вариант будет приводить к ошибке компиляции. (Id9197)

  • Добавлена библиотека androidx.compose.material:material-ripple, содержащая API для создания интерактивных компонентов без использования остальной части библиотеки Material. Функция rememberRippleIndication устарела и заменена на rememberRipple. (Ibdf11)

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

  • Лямбда-выражения в модификаторах смещения теперь возвращают IntOffset, а не Float. (Ic9ee5, b/174137212, b/174146755)
  • Изменен класс ShaderBrush, чтобы экземпляр шейдера создавался только при наличии информации о размере среды рисования. Это полезно для определения градиентов, которые занимают все границы отрисовки composable-функции во время композиции, без необходимости реализовывать собственные реализации DrawModifier.

    Устаревшие API конструктора функций градиента в пользу методов фабрики для объекта Gradient. (I511fc, b/173066799)

  • Modifier.focusObserver больше не поддерживается. Используйте Modifier.onFocusChanged или Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)

  • Удалены LazyColumnFor, LazyRowFor, LazyColumnForIndexed и LazyRowForIndexed. Используйте LazyColumn и LazyRow вместо Column и Row (I5b48c)

  • Перенесены Dp.VectorConverter, Position.VectorConverter и т. д. в animation-core. Устаревшие VectorConveters (If0c4b) больше не поддерживаются.

  • Autofill API теперь является экспериментальным и требует согласия на использование (I0a1ec)

  • Добавление объявлений деструктуризации для создания экземпляров FocusRequester (I35d84, b/174817008)

  • accessibilityLabel переименован в contentDescription. accessibilityValue переименован в stateDescription. (I250f2)

  • Новая функция infiniteRepeatable для создания объекта InfiniteRepeatableSpec (I668e5)

  • Поведение раскрывающихся меню было немного изменено в соответствии со спецификацией Material Design. (I34c72, b/168594123)

  • Добавлена поддержка InteractionState для полей TextField. (I61d91)

  • Добавлен метод Modifier.clearAndSetSemantics, позволяющий очистить семантику дочерних элементов и задать новую. (I277ca)

  • Перемещен ContentDrawScope в модуль ui-graphics, чтобы он находился рядом с DrawScope. (Iee043, b/173832789)

Версия 1.0.0-alpha08

2 декабря 2020 г.

androidx.compose.material:material:1.0.0-alpha08, androidx.compose.material:material-icons-core:1.0.0-alpha08 и androidx.compose.material:material-icons-extended:1.0.0-alpha08. Версия 1.0.0-alpha08 содержит следующие коммиты:

Изменения в API

  • Теперь MaterialTheme задает правильные цвета для маркеров и фона выделения. В приложениях, не использующих Material Design, можно вручную задать цвета выделения с помощью AmbientTextSelectionColors. (I1e6f4, b/139320372, b/139320907)
  • Добавлена проверка lint для названий и позиций параметров лямбда-функций, чтобы обеспечить соответствие рекомендациям Compose. Также некоторые API, в которых в качестве названия для лямбда-функции использовался символ children, были перенесены на content в соответствии с проверкой и рекомендациями. (Iec48e)
  • Переименован VectorAsset в ImageVector. Перемещен и переименован VectorAsset в Builder, чтобы стать внутренним классом ImageVector в соответствии с рекомендациями совета по API. Добавлен псевдоним типа VectorAssetBuilder для ссылки на ImageVector.Builder для совместимости. (Icfdc8)
  • Переименованы ImageAsset и связанные с ним методы в ImageBitmap. (Ia2d99)
  • Перемещены свойства семантики в интерфейс (I6f05c)
  • Метод fun RippleIndication() больше не поддерживается. Вместо него используйте rememberRippleIndication(), чтобы обеспечить единообразие с другими API. (Id8e2c)
  • В компоненты BasicTextField, TextField и OutlinedTextField добавлен параметр singeLine. Если задать для этого параметра значение true, текстовое поле будет представлять собой одну строку с горизонтальной прокруткой. (I57004, b/168187755)

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

  • Добавление семантического действия "Закрыть" (I2b706)
  • API DrawModifier перенесены из пакета androidx.compose.ui в пакет androidx.compose.ui.draw. Создан файл DrawModifierDeprecated.kt, в котором содержатся псевдонимы типов и вспомогательные методы, которые помогут перейти с устаревших API на текущие. (Id6044, b/173834241)
  • Переименовано Modifier.drawLayer в Modifier.graphicsLayer. Также обновлены связанные классы до GraphicsLayer в соответствии с отзывами об API. (I0bd29, b/173834241)
  • <T> был удален из объявления SubcomposeLayout. Теперь его можно использовать без указания типа. (Ib60c8)
  • Добавлены API Modifier.scale/rotate для удобства работы с drawLayer.
    • Название "Modifier.drawOpacity" изменено на "Modifier.alpha"
    • Переименован источник Modifier.drawShadow в Modifier.shadow (I264ca, b/173208140)
  • Параметр выравнивания Box был переименован в contentAlignment. (I2c957)
  • Модификаторы offsetPx были переименованы в offset. Теперь они принимают параметры лямбда-функции вместо состояния. (Ic3021, b/173594846)
  • Добавлены API SweepGradientShader и SweepGradientBrush. (Ia22c1)
  • Добавлена проверка lint для параметров Modifier в функциях Composable. Эта проверка анализирует название, тип возвращаемого значения, значение по умолчанию и порядок параметров на соответствие рекомендациям Compose. (If493b)
  • Обновленный API TextFieldValue
    • Поле TextFieldValue.composition теперь доступно только для чтения.
    • Удалено исключение, возникающее при выборе недопустимого диапазона (I4a675, b/172239032).
  • Добавлена новая перегрузка Modifier.drawLayer(). Он принимает лямбда-блок в новом GraphicsLayerScope, где вы определяете параметры слоя таким образом, чтобы при изменении состояния можно было пропустить повторную композицию и перекомпоновку. Класс DrawLayerModifier теперь является внутренним. Это сделано в рамках подготовки к переносу его логики в метод placeable.placeWithLayer() класса LayoutModifier (I15e9f, b/173030831).
  • Устаревшие функции Ambient с суффиксом Ambient были заменены новыми свойствами с префиксом Ambient, соответствующими другим функциям Ambient и рекомендациям по использованию API Compose. (I33440)
  • Добавлена проверка lint, чтобы убедиться, что фабрики модификаторов используют androidx.compose.ui.composed {}, а не @Composable. (I3c4bc)
  • Аргумент mergeAllDescendants был переименован в mergeDescendants. (Ib6250)
  • Управление временем в тестах (TestAnimationClock и его использование) теперь является экспериментальной функцией (I6ef86, b/171378521).
  • Удаление старого модуля ui-test и его заглушек (I3a7cb)
  • Для единообразия с другими единицами измерения TextUnit.Inherit переименован в TextUnit.Unspecified. (Ifce19)
  • Интерфейс выравнивания был обновлен и стал более функциональным. (I46a07, b/172311734)
  • Поле id переименовано в layoutId для LayoutIdParentData. Поле Measurable.id переименовано в Measurable.layoutId. (Iadbcb, b/172449643)

Версия 1.0.0-alpha07

11 ноября 2020 г.

androidx.compose.material:material:1.0.0-alpha07, androidx.compose.material:material-icons-core:1.0.0-alpha07 и androidx.compose.material:material-icons-extended:1.0.0-alpha07. Версия 1.0.0-alpha07 содержит следующие коммиты:

Изменения в API

  • Функция Emphasis больше не поддерживается. Вместо нее используется AmbientContentAlpha. AmbientContentAlpha – это более простая абстракция, которая представляет собой предпочтительное альфа-значение контента для части иерархии. Аналогично AmbientContentColor представляет собой предпочтительный цвет контента. Теперь текст и значок по умолчанию используют текущее значение из AmbientContentAlpha, и вы можете вручную добавить color.copy(alpha = AmbientContentAlpha.current), чтобы получить тот же эффект в своих компонентах. Вместо ProvideEmphasis можно напрямую задать значение с помощью AmbientContentAlpha, а новые уровни по умолчанию в ContentAlpha можно использовать вместо старых EmphasisLevels. (Idf03e, b/159017896)
  • Добавлен androidx.compose.material.AmbientContentColor вместо androidx.compose.foundation.AmbientContentColor (I84f7b, b/172067770).
  • Добавлен компонент androidx.compose.material.Text, который заменяет androidx.compose.foundation.Text в качестве высокоуровневого компонента Text с поддержкой тем. Для базового текстового компонента, который не использует цвет или стиль текста из темы, используйте BasicText. (Ie6ae0)
  • Добавлен параметр maxLines для текстовых полей (Ib2a5b).
  • Обновление текстовых полей для поддержки KeyboardOptions (Ida7f3)
  • Теперь при расчете наложений высоты используется абсолютная (общая) высота, поэтому если один объект Surface вложен в другой, то для отрисовки наложения будет использоваться суммарная высота. (I7bd2b, b/171031040)

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

  • captureToBitmap переехал в captureToImage. (I86385)
  • Функции AmbientTextStyle, ProvideTextStyle и AmbientContentColor больше не поддерживаются. Вместо этого используйте новые версии, доступные в библиотеке материалов. Для приложений, не использующих Material Design, вам следует создать собственную систему дизайна с темами, которые можно использовать в ваших компонентах. (I74acc, b/172067770)
  • foundation.Text устарел и заменен на material.Text. Если вам нужен простой текстовый API, который не использует значения из темы, ознакомьтесь с информацией о функции androidx.compose.foundation.BasicText. (If64cb)
  • Переименование KeyboardOptions в ImeOptions (I82f36)
  • Перемещены KeyboardType и ImeAction в KeyboardOptions (I910ce)
  • Поддержка BaseTextField прекращена. Используйте BasicTextField. (I896eb)
  • Аннотация ExperimentalSubcomposeLayoutApi удалена. Теперь SubcomposeLayout можно использовать без добавления @OptIn (I708ad)
  • Константы FirstBaseline и LastBaseline перенесены в пакет androidx.compose.ui.layout (Ied2e7)
  • Обновленный Icon API теперь принимает Color.Unspecified в качестве возможного цвета оттенка. В этом случае предоставленный объект или элемент будет отрисован без ColorFilter. Ранее попытки игнорировать оттенок с помощью Color.Unspecified приводили к тому, что оттенок становился прозрачным и ничего не отображалось. (I049e2, b/171624632)
  • Поле relativePaddingFrom переименовано в paddingFrom. Добавлен модификатор paddingFromBaseline, который позволяет задавать расстояние от границ макета до базовых линий текста. (I0440a, b/170633813)
  • Для согласованности с API SideEffect и DisposableEffect LaunchedTask был переименован в LaunchedEffect. Чтобы поощрять использование лучших практик, запрещено использовать LaunchedEffect без параметров subject. (Ifd3d4)
  • Класс MeasureResult был перемещен из MeasureScope. (Ibf96d, b/171184002)
  • Некоторые символы, связанные с макетом, были перенесены из androidx.compose.ui в androidx.compose.layout.ui. (I0fa98, b/170475424)

Версия 1.0.0-alpha06

28 октября 2020 г.

androidx.compose.material:material:1.0.0-alpha06, androidx.compose.material:material-icons-core:1.0.0-alpha06 и androidx.compose.material:material-icons-extended:1.0.0-alpha06. Версия 1.0.0-alpha06 содержит следующие коммиты.

Изменения в API

  • androidx.compose.foundation.Icon перенесен в androidx.compose.material.Icon. Если вы не хотите использовать библиотеку Material, то можете применить компонент Image или Modifier.paint() с Painter. (I9f622)
  • Добавлено свойство FloatingActionButtonElevation, которое позволяет задавать высоту FAB в разных состояниях. По умолчанию используется реализация FloatingActionButtonConstants.defaultElevation() (I2d4f5).
  • Добавлен интерфейс SwitchColors, который позволяет задавать цвета, используемые переключателем в разных состояниях. Чтобы настроить эти цвета, используйте SwitchConstants.defaultColors. (I93805)
  • Добавлены интерфейсы ButtonElevation и ButtonColors, представляющие высоту и цвета, используемые кнопками в разных состояниях. Чтобы настроить эти параметры, используйте функции по умолчанию в ButtonConstants. (Ic5b7b)
  • Добавлен интерфейс RadioButtonColors, представляющий цвета, используемые RadioButton в разных состояниях. Чтобы настроить цвета, используемые в разных состояниях, воспользуйтесь RadioButtonConstants.defaultColors(). (I74130)
  • Добавлен интерфейс CheckboxColors, который позволяет задавать цвета флажка в разных состояниях. Чтобы настроить цвета, используемые в разных состояниях, воспользуйтесь методом CheckboxConstants.defaultColors(). (I7dbdb)

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

  • Компоненты Material больше не задают высоту как zIndex. Это означает, что в одном родительском элементе дочерний элемент с большей тенью не будет автоматически отрисовываться поверх дочернего элемента с меньшей тенью. Если вам по-прежнему нужно такое поведение, задайте Modifier.zIndex() вручную, где это необходимо (I70417, b/170623932).
  • Прекратить поддержку VectorPainter в пользу rememberVectorPainter, чтобы лучше показать, что API composable-функций внутренне использует функцию remember для сохранения данных между композициями. (Ifda43)
  • Включите переходы в ComposeTestRule; удалите параметр, позволяющий включить мигающий курсор из ComposeTestRule. (If0de3)
  • В CoreTextField добавлена возможность использовать однострочную клавиатуру (I72e6d).
  • Мы переименовали Radius API в CornerRadius, чтобы лучше отразить его использование в Compose. В документацию добавлена информация о том, что отрицательные значения радиуса скругления углов приводятся к нулю. (I130c7, b/168762961)
  • Рефакторинг DrawScope и ContentDrawScope: теперь это интерфейсы, а не абстрактные классы.
    • Создана реализация CanvasDrawScope объекта DrawScope
    • Реализации DrawScope были переработаны для использования CanvasScope.
    • Создан DrawContext для упаковки зависимостей для DrawScope
    • Удалены устаревшие методы в DrawScope (I56f5e)
  • Box стал встроенной функцией. (Ibce0c, b/155056091)

Версия 1.0.0-alpha05

14 октября 2020 г.

androidx.compose.material:material:1.0.0-alpha05, androidx.compose.material:material-icons-core:1.0.0-alpha05 и androidx.compose.material:material-icons-extended:1.0.0-alpha05. Версия 1.0.0-alpha05 содержит следующие коммиты:

Изменения в API

  • Всплывающие окна и диалоговые окна теперь наследуют флаг FLAG_SECURE от родительского окна. Также добавлена возможность задавать это значение явным образом (I64966, b/143778148, b/143778149).
  • У модификатора Modifier.swipeable теперь по умолчанию используются пороговые значения 56.dp для состояний (Iab825, b/168610267)
  • Все состояния каркаса отмечены как @Stable. Свойство drawerGesturesEnabled в ScaffoldState перенесено в Scaffold. (I36645, b/168297016)
  • Удаляет тип, допускающий значение NULL, из параметров лямбда-функции Scaffold. Чтобы указать, что для определенного параметра нет контента, можно использовать пустую функцию emptyContent(). (I2b318, b/157633857, b/158551084)
  • Устаревшие API contentColor() и currentTextStyle() заменены на AmbientContentColor и AmbientTextStyle соответственно. Чтобы получить текущее значение, используйте .current для свойства ambient так же, как и для любого другого свойства ambient. Это изменение было сделано для единообразия и чтобы избежать дублирования функций. Кроме того, некоторые свойства окружения были переименованы, чтобы лучше отражать их назначение:

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
  • Добавлен AmbientElevationOverlay, позволяющий настраивать или отключать наложение по умолчанию, применяемое к поверхностям в тёмной теме. (I5b74d)

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

  • В рамках стандартизации значений sentinel для встроенных классов переименуйте Color.Unset в Color.Unspecified, чтобы обеспечить единообразие с другими встроенными классами (I97611, b/169797763).
  • Добавлен параметр TextOverflow.None. Если для параметра overflow задано значение None, компонент Text больше не будет обрабатывать переполнение и будет сообщать LayoutNode свой фактический размер. (I175c9, b/158830170)
  • launchInComposition переименован в LaunchedTask в соответствии с рекомендациями по использованию API Compose (I99a8e)
  • OnPositionedModifier переименован в OnGloballyPositionedModifier, а onPositioned() – в onGloballyPositioned(). (I587e8, b/169083903)

Версия 1.0.0-alpha04

1 октября 2020 г.

androidx.compose.material:material:1.0.0-alpha04, androidx.compose.material:material-icons-core:1.0.0-alpha04 и androidx.compose.material:material-icons-extended:1.0.0-alpha04. Версия 1.0.0-alpha04 содержит следующие коммиты:

Изменения в API

  • Параметры InteractionState теперь доступны в компонентах Material с состоянием. Это позволяет поднимать состояние и считывать его или управлять им. (Iaca5f, b/168025711, b/167164434)
  • Изменяет параметры *color в RadioButton и TriStateCheckbox, чтобы можно было полностью настроить цвета, используемые в каждом состоянии, а также изменить анимацию перехода между состояниями. Подробную информацию можно найти в новых функциях animateDefault* для цвета в CheckboxConstants и RadioButtonConstants. (I1c532)
  • Переименован rememberBackdropState в rememberBackdropScaffoldState и добавлен дополнительный параметр для часов анимации. Параметр backdropScaffoldState компонента BackdropScaffold переименован в scaffoldState. Переименованы константы BackdropConstants в BackdropScaffoldConstants. (Ib644d)
  • Добавлен экспериментальный компонент BottomSheetScaffold. (Ie02f0, b/148996320)
  • Добавлен экспериментальный компонент ModalBottomSheetLayout. (Ic209e, b/148996320)
  • Переименованы константы ButtonConstants/FloatingActionButtonConstants.defaultAnimatedElevation в defaultElevation. Теперь возвращается значение Dp, а не AnimatedValue. (I5f3ed)

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

  • Обновлены многие графические API.
    • Обновлены API преобразования масштаба и поворота, чтобы использовать один параметр Offset для представления опорной координаты вместо отдельных параметров float для координат x/y в DrawScope и DrawTransform.
    • Удалены методы Rect.expandToInclude и Rect.join
    • В документацию по радиусу добавлено слово "овальный" в дополнение к слову "эллиптический"
    • Добавлена документация, в которой указано, что публичный конструктор для встроенного класса Radius нельзя вызывать напрямую. Вместо этого объекты Radius следует создавать с помощью конструкторов функций.
    • Удалены API RoundRect для запросов topRight, bottomRight, bottomCenter и т. д.
    • Устаревший метод Rect.shift заменен на Rect.translate
    • Удалены API RoundRect.grow и Rect.shrink
    • Переименовано RoundRect.outerRect в Rect.boundingRect
    • Удалены методы RoundRect.middleRect/tallMiddleRect/wideMiddleRect и Rect.isStadium
    • Переименован параметр RoundRect.longestSide в RoundRect.maxDimension
    • Переименован параметр RoundRect.shortestSide в RoundRect.minDimension
    • Изменено значение RoundRect.center: теперь это свойство, а не функция
    • Обновлен конструктор RoundRect, чтобы использовать свойства Radius вместо отдельных параметров для значений радиуса по осям X и Y.
    • Удалены API размера, которые предполагали, что это прямоугольник с началом координат в точке 0,0.
    • В Radius добавлен API для удаления объектов
    • Некоторые функции расширения RoundRect были преобразованы в свойства.
    • (I8f5c7, b/168762961)
  • Поддержка foundation.Box прекращена. Используйте вместо него foundation.layout.Box. (Ie5950, b/167680279)
  • Приложение Stack переименовано в Box. Предыдущий компонент Box будет удален, а вместо него будет использоваться новый компонент Box из compose.foundation.layout. Новый контейнер Box располагает дочерние элементы друг над другом, а не в столбец, как предыдущий. (I94893, b/167680279)
  • Параметры оформления блоков больше не поддерживаются. Если вы хотите добавить к блоку декоративные элементы или отступы, используйте модификаторы (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279).
  • Обновлены многие графические API.
    • В API DrawScope добавлены методы преобразования с областью действия, чтобы указать, что преобразование применяется только в рамках обратного вызова и удаляется после его вызова.
    • В документации по clipPath теперь упоминается Path, а не прямоугольник со скругленными углами
    • Исправлены пробелы в документации для параметра right в clipPath
    • Переименован метод DrawScope.drawCanvas в drawIntoCanvas и удален параметр size
    • Переименованы параметры dx/dy в методе inset на horizontal и vertical
    • Добавлена перегрузка inset, которая позволяет задать одинаковое значение для всех четырех границ.
    • Удалена документация по методу inset, в которой указывалось, что он применяется ко всем четырем сторонам.
    • Обновлена документация по классу Rect
    • Обновлены комментарии к параметрам Rect в соответствии со стилем kdoc.
    • Удалены Rect.join и Rect.expandToInclude
    • Создана перегрузка для Rect.translate(offset) и устаревший Rect.shift
    • (If086a, b/167737376)
  • Мы запретили статический импорт содержимого областей макета (например, alignWithSiblings в RowScope). Вместо него следует использовать явную область действия: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)

Версия 1.0.0-alpha03

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

androidx.compose.material:material:1.0.0-alpha03, androidx.compose.material:material-icons-core:1.0.0-alpha03 и androidx.compose.material:material-icons-extended:1.0.0-alpha03. Версия 1.0.0-alpha03 содержит следующие коммиты.

Изменения в API

  • Параметр onSelect в событии "Переименование"BottomNavigationItem переименован в onClick (I91925, b/161809324)
  • Добавлен параметр InteractionState в BottomNavigationItem и Tab, позволяющий поднимать это состояние и настраивать внешний вид компонента в разных состояниях. (Ia3e9e, b/168025711)
  • Удаляет параметры disabledBackgroundColor и disabledContentColor из кнопок. Вместо этого используйте новые функции цвета по умолчанию в ButtonConstants. Если вы уже задаете contentColor и backgroundColor явным образом, вам следует использовать эти функции по умолчанию и настроить некоторые или все параметры, чтобы не переопределять цвет для включенного и отключенного состояний. (If9b52)
  • Цвет фона текстового поля больше не подразумевает прозрачность альфа-канала. Вместо этого будет применен любой цвет, указанный в параметре backgroundColor. (Iecee9, b/167951441)
  • Параметр InnerPadding переименован в PaddingValues. (I195f1, b/167389171)
  • Параметры resistanceFactorAtMin и resistanceFactorAtMax в Modifier.swipeable были заменены одним параметром сопротивления. В SwipeableConstants добавлен метод defaultResistanceConfig. (I54238)
  • Добавлена поддержка анимированного изменения высоты для кнопок и плавающих кнопок действий. Теперь высота анимируется при переходе между состояниями по умолчанию и нажатия. Чтобы настроить высоту между состояниями, используйте ButtonConstants.defaultAnimatedElevation() и FloatingActionButtonConstants.defaultAnimatedElevation() вместо того, чтобы задавать фиксированное значение Dp во всех случаях. (I37925)
  • Параметр label стал необязательным в TextField и OutlinedTextField (I267f6, b/162234081).

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

  • Глобальные функции тестирования, такие как onNode или waitForIdle, теперь устарели. Перейдите на их новые аналоги, определенные в ComposeTestRule (I7f45a).
  • DpConstraints и API, использующие его, устарели. (I90cdb, b/167389835)
  • Параметры minWidth и maxWidth параметра widthIn были переименованы в min и max. Аналогичные изменения были внесены в параметры preferredWidthIn, heightIn и preferredHeightIn. (I0e5e1, b/167389544)
  • Удалите семантические действия "Прокрутить вперед" и "Прокрутить назад". Добавлены шаги в AccessibilityRangeInfo. (Ia47b0)
  • Во всех API макетов слово "gravity" было заменено на "align" или "alignment". (I2421a, b/164077038)
  • Добавлены методы onNode и другие глобальные методы в ComposeTestRule, поскольку текущие глобальные методы будут объявлены устаревшими. (Ieae36)
  • Объекты "createAndroidComposeRule" и "AndroidInputDispatcher" перемещены из androidx.ui.test.android в androidx.ui.test (Idef08, b/164060572)

Версия 1.0.0-alpha02

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

androidx.compose.material:material:1.0.0-alpha02, androidx.compose.material:material-icons-core:1.0.0-alpha02 и androidx.compose.material:material-icons-extended:1.0.0-alpha02. Версия 1.0.0-alpha02 содержит следующие коммиты:

Изменения в API

  • Добавлен экспериментальный компонент BackdropScaffold. (Iad908)

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

  • Matrix4 был заменен на Matrix. Все остальные части пакета vectormath удалены. (Ibd665, b/160140398)

Версия 1.0.0-alpha01

26 августа 2020 г.

androidx.compose.material:material:1.0.0-alpha01, androidx.compose.material:material-icons-core:1.0.0-alpha01 и androidx.compose.material:material-icons-extended:1.0.0-alpha01. Версия 1.0.0-alpha01 содержит следующие коммиты:

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

= Первый символ в материале TextField нельзя удалить с помощью клавиши Backspace (b/165956313)

Версия 0.1.0-dev

Версия 0.1.0-dev17

19 августа 2020 г.

androidx.compose.material:material:0.1.0-dev17, androidx.compose.material:material-icons-core:0.1.0-dev17 и androidx.compose.material:material-icons-extended:0.1.0-dev17. Версия 0.1.0-dev17 содержит следующие коммиты:

Изменения в API

  • Удалены ранее признанные устаревшими RadioGroup и RadioGroupItems. Используйте Row и RadioButton (I381b7, b/163806637).
  • Удалены обратные вызовы onFocusChanged из TextField. Вместо него используйте Modifier.focusObserver. (I51089, b/161297615)
  • Поддержка Modifier.drawBorder прекращена. Используйте Modifier.border. Класс данных Border заменен на BorderStroke (I4257d, b/158160576)
  • Переименованы некоторые свойства в SwipeableState: swipeTarget -> targetValue, swipeProgress -> progress, swipeDirection -> direction. Добавлена функция rememberSwipeableState для создания объектов SwipeableState. (I2fc9c, b/163129614, b/163132293)
  • Добавлена поддержка уведомлений с возможностью выбора их местоположения и правильной очередности. Доступ к ней можно получить с помощью функции приостановки SnackbarHostState.showSnackbar. Дополнительная информация:
    • Добавлены компоненты SnackbarHost. Он содержит уведомления Snackbars, которые зависят от состояния, и отвечает за переход между ними.
    • Добавлен SnackbarHostState, который позволяет управлять снек-барами и их хостами, а также отделить их от ScaffoldState. Получить доступ к этому состоянию можно через scaffoldState.snackbarHostState.
    • Добавлена перегрузка Snackbar, чтобы обеспечить общий интерфейс между snackbarHostState и самими snackbar. (I79aaa)
  • Добавлен параметр enabled в IconButton и изменен порядок параметров в IconToggleButton (I0a941, b/161809385, b/161807956)
  • Версия ListItem с API на основе строк удалена. Используйте версию слота. (Ib8f57, b/161804681)
  • Удален устаревший компонент FilledTextField. Чтобы получить реализацию заполненного текстового поля в соответствии с принципами Material Design, используйте TextField. (I5e889)
  • В AlertDialog теперь используется FlowRow для кнопок (I00ec1, b/161809319, b/143682374)
  • Добавлены параметры в Modifier.swipeable для изменения сопротивления при пролистывании за границы. Удалены параметры [min/max]Value. (I93d98)
  • В LinearProgressIndicator добавлен параметр backgroundColor, а из CircularProgressIndicator удалены внутренние отступы. Добавлен новый параметр ProgressIndicatorConstants.DefaultProgressAnimationSpec, который можно использовать в качестве AnimationSpec по умолчанию при анимации прогресса между значениями (If38b5, b/161809914, b/161804677).
  • В Modifier.swipeable добавлен необязательный параметр velocityThreshold. (I698ba)
  • bottomBarSize, fabSize и другие, и больше не доступны в ScaffoldState. Используйте Modifier.onPosition вместо компонента, размер которого вы хотите узнать. В Scaffold добавлены параметры contentColor и Modifier (Ic6f7b, b/161811485, b/157174382).
  • Переименованы и переупорядочены некоторые параметры на вкладке для обеспечения согласованности с другими API (Ia2d12, b/161807532).
  • Разделяет TabRow на TabRow и ScrollableTabRow, удаляя isScrollable из TabRow. Также в ScrollableTabRow добавлен параметр edgePadding, который позволяет управлять свободным пространством до и после вкладок. (I583e8, b/161809544)
  • Объект TabRow удален и заменен на TabConstants. TabRow.TabPosition теперь находится на верхнем уровне (TabPosition), а indicatorContainer переименован в indicator. Подробную информацию о том, как использовать обновленный API и значения по умолчанию, можно найти в примерах и документации. (I54d45, b/161809544)
  • Параметр thresholds в Modifier.swipeable был изменен. Теперь он принимает пару состояний (типа T) и возвращает порог между ними в виде ThresholdConfig. В SwipeToDismiss добавлен параметр dismissThresholds, который представляет собой лямбда-функцию (DismissDirection) -> ThresholdConfig. (Ie1080)
  • Ползунок позволяет более точно настраивать цвета (I73e64, b/161810475)
  • Параметр цвета карточки переименован в backgroundColor (I01fc1, b/161809546)
  • Теперь у всплывающего уведомления можно настраивать цвет фона и контента (I238f2, b/161804381).
  • В Drawers добавлены параметры для настройки модификатора, цвета фона, цвета контента и цвета затемнения (I23655, b/161804378).
  • Компонуемый элемент state { ... } теперь считается устаревшим. Вместо него рекомендуется использовать явные вызовы remember { mutableStateOf(...) }. Это уменьшает общую поверхность API и количество концепций для управления состоянием, а также соответствует шаблону by mutableStateOf() для делегирования свойств класса. (Ia5727)
  • Параметр padding кнопки переименован в contentPadding (Id252e, b/161809394)
  • Добавьте экспериментальный компонент SwipeToDismiss. (I129e5)

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

  • Удалены onChildPositioned и OnChildPositionedModifier. Вместо этого разработчикам следует использовать onPositioned и OnPositionedModifier в дочернем макете. (I4522e, b/162109766)
  • В SemanticsPropertyKey добавлена лямбда-функция mergePolicy. Это можно использовать для определения специального правила для семантики объединения всех дочерних элементов. По умолчанию используется значение родительского объекта, если оно задано, в противном случае – значение дочернего объекта. (Iaf6c4, b/161979921)
  • IntSize теперь встроенный класс (I2bf42)
  • PlacementScope.placeAbsolute() переименован в PlacementScope.place(), а предыдущий PlacementScope.place() переименован в PlacementScope.placeRelative(). В результате метод PlacementScope.place() больше не будет автоматически зеркально отражать позицию в контекстах с письмом справа налево. Если вам нужно именно это, используйте правило PlacementScope.placeRelative(). (I873ac, b/162916675)
  • Устаревший параметр PxBounds заменен на Rect. Обновлены все случаи использования PxBounds с rect и добавлены аннотации deprecate/replace with для упрощения перехода. (I37038, b/162627058)
  • Переименована функция RRect в RoundRect, чтобы она лучше соответствовала шаблонам именования Compose. Созданы аналогичные конструкторы функций для RRect и устаревшие конструкторы функций RRect (I5d325).

Версия 0.1.0-dev16

5 августа 2020 г.

androidx.compose.material:material:0.1.0-dev16, androidx.compose.material:material-icons-core:0.1.0-dev16 и androidx.compose.material:material-icons-extended:0.1.0-dev16. Версия 0.1.0-dev16 содержит следующие коммиты:

Изменения в API

  • Класс Colors теперь является конечным, а не интерфейсом. Вместо того чтобы расширять и реализовывать пользовательскую реализацию, создайте новую среду для объекта пользовательской темы и получите доступ к объекту темы через новую среду в своих компонентах, как это делается в MaterialTheme. (Ibae84)
  • Объект ColorPalette переименован в Colors, чтобы лучше соответствовать системе цветов Material и избежать путаницы с тем, что ColorPalette является "общим" объектом темы, а не конкретной реализацией системы цветов Material. Кроме того, атрибуты lightColorPalette и darkColorPalette переименованы в lightColors и darkColors соответственно. (I9e976, b/161812111)
  • Переименованы параметры text, onSelected, activeColor и inactiveColor в BottomNavigationItem на label, onSelect, selectedContentColor и unselectedContentColor соответственно. Порядок параметров изменен в соответствии с рекомендациями. (Icb605, b/161809324)
  • Modifier.stateDraggable был полностью переработан и переименован в Modifier.swipeable. Добавлен новый класс SwipeableState, а классы DrawerState и BottomDrawerState переработаны так, чтобы наследовать его. [Modal/Bottom]DrawerLayout больше не принимает параметр onStateChange. (I72332, b/148023068)
  • Пакет foundation.shape.corner был преобразован в foundation.share (I46491, b/161887429).
  • Добавлена аннотация ExperimentalMaterialApi. RippleTheme помечена как экспериментальная (Ic5fa0, b/161784800)
  • Компонент Material FilledTextField был переименован в TextField, а компонент TextField был переименован в BaseTextField, чтобы упростить поиск и использование API (Ia6242, b/155482676).

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

  • Поддержка метода OnChildPositioned прекращена. Вместо этого используйте OnPositioned для дочернего элемента. (I87f95, b/162109766)
  • Исправления в API для широкого диапазона адресов (I077bc)
    1. Удаление неиспользуемого интерфейса OffsetBase
    2. Приведение классов Offset и IntOffset к единому API
    3. Переименование IntOffset.Origin в IntOffset.Zero для соответствия Offset API
    4. Метод nativeCanvas перенесен из интерфейса Canvas для поддержки потребителей при создании собственных экземпляров Canvas.
    5. Создан класс-заглушка EmptyCanvas, чтобы переработать DrawScope и сделать его ненулевым параметром вместо lateinit, а также обеспечить ненулевое значение поля.
    6. Переименованы перечисления ClipOp в Pascal Case
    7. Переименованы перечисления FilterQuality в Pascal Case
    8. Переименованы перечисления StrokeJoin в Pascal Case
    9. Переименованы перечисления PointMode в Pascal Case
    10. Переименованы перечисления PaintingStyle в Pascal Case
    11. Переименованы перечисления PathFillType в Pascal Case
    12. Переименованы перечисления StrokeCap в Pascal Case
    13. Обновлена реализация DrawCache, чтобы больше не использовать параметры lateinit.
    14. В DrawScope больше не используется отложенная делегация для внутренних параметров fillPaint и strokePaint.
    15. Обновлен компонент Image, чтобы избежать использования Box и снизить нагрузку.
    16. Добавлены аннотации @Immutable в класс Outline
    17. Обновление PathNode: добавлены аннотации @Immutable для каждой инструкции пути
    18. Вложенная композиция Vector обновлена: удалены лишние условные проверки на равенство, поскольку они уже обрабатываются в Compose.
    19. Устаревшие методы конструктора Rect companion заменены на конструкторы функций
    20. Обновлены классы кистей и конструкторы функций с помощью API @Immutable и @Stable
    21. Переименовано перечисление VertexMode в PascalCase
    22. Обновлен метод selectPaint в DrawScope, чтобы условно перезаписывать параметры обводки в paint, если они изменились.
    23. Обновлен размер: добавлен API деструктуризации, переименован UnspecifiedSize в Unspecified и удалены неиспользуемые методы
  • Переместить диалоговое окно в интерфейс (I47fa6)
  • Контакт (SemanticsNodeInteraction.performPartialGesture) удален. Используйте вместо него SemanticsNodeInteraction.performGesture. (Id9b62)
  • Переименовано SemanticsNodeInteraction.getBoundsInRoot() в SemanticsNodeInteraction.getUnclippedBoundsInRoot() (Icafdf, b/161336532)
  • Обновлены API для поддержки языков с письмом справа налево. Добавлен параметр LayoutDirectionAmbient, который можно использовать для чтения и изменения направления макета. Удалены модификаторы Modifier.rtl и Modifier.ltr. (I080b3)
  • Свойство Modifier.deternimateProgress переименовано в Modifier.progressSemantics (I9c0b4)
  • Обновлены расширенные значки Material: добавлены последние значки с сайта Material.io/icons (I4b1d3).
  • Требуется явно указать тип T для transitionDefinition. (I1aded)
  • Метод Modifier.plus устарел. Используйте вместо него Modifier.then. Слово "затем" лучше указывает на порядок действий, а также запрещает использовать символ Modifier.padding().background() + anotherModifier, который нарушает последовательность и затрудняет чтение (Iedd58, b/161529964).
  • Переименовано правило AndroidComposeTestRule в createAndroidComposeRule. (I70aaf)
  • Добавлены функции isFocused() и isNotFocused() SemanticsMatcher. (I0b760)
  • Удален параметр BaseGestureScope.globalBounds, который не следует использовать в тестах. Используйте координаты, относящиеся к узлу, с которым вы взаимодействуете. (Ie9b08)
  • Исправлено положение всплывающего окна на экранах с вырезом. (Idd7dd)
  • Функция Modifier.drawBackground переименована в Modifier.background (I13677).

Версия 0.1.0-dev15

22 июля 2020 г.

androidx.compose.material:material:0.1.0-dev15, androidx.compose.material:material-icons-core:0.1.0-dev15 и androidx.compose.material:material-icons-extended:0.1.0-dev15. Версия 0.1.0-dev15 содержит следующие коммиты:

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

  • Чтобы использовать версию 0.1.0-dev15 библиотеки Compose, вам нужно обновить зависимости в соответствии с новыми фрагментами кода, приведенными выше в разделе Объявление зависимостей.

Изменения в API

  • Аннотация @Model больше не поддерживается. Вместо этого используйте state и mutableStateOf. Это решение было принято после тщательного обсуждения.

    Обоснование

    Обоснование может включать, помимо прочего, следующие сведения:

    • Уменьшает количество API и концепций, которые нужно изучить.
    • Более тесная интеграция с другими аналогичными инструментами (Swift UI, React, Flutter)
    • Решение можно отменить. Мы всегда можем вернуть @Model позже.
    • Удаляет редкие случаи использования и сложные вопросы о настройке @Model как то, что нам нужно обрабатывать.
    • @Model классы данных, equals, hashcode и т. д.
    • Как настроить отслеживание одних ресурсов и не отслеживать другие?
    • Как указать, какое равенство (структурное или ссылочное) нужно использовать при наблюдении?
    • Уменьшает количество "магии" в системе. Это снизит вероятность того, что кто-то решит, что система умнее, чем она есть на самом деле (например, что она знает, как сравнивать списки).
    • Позволяет более интуитивно задавать уровень детализации наблюдений.
    • Улучшена возможность рефакторинга переменной в свойство класса
    • Позволяет выполнять оптимизацию на уровне штата.
    • Более тесно связан с остальной частью экосистемы и уменьшает неопределенность в отношении неизменяемого состояния или нашего "принятия изменяемого состояния".

    Примечания к переносу

    Почти все существующие случаи использования @Model можно легко преобразовать одним из двух способов. В примере ниже класс @Model содержит два свойства, которые используются в composable-функции.

    @Model class Position(
     var x: Int,
     var y: Int
    )
    
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    Вариант 1. Используйте State<OriginalClass> и создайте копии.

    Этот подход упрощается благодаря классам данных Kotlin. По сути, все свойства var нужно преобразовать в свойства val класса данных, а затем использовать state вместо remember и присвоить значение состояния клонированным копиям оригинала с помощью удобного метода copy(...) класса данных.

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

    data class Position(
     val x: Int,
     val y: Int
    )
    
    @Composable fun Example() {
     var p by state { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p = p.copy(x=it) }
       onYChange={ p = p.copy(y=it) }
     )
    }
    

    Вариант 2. Используйте mutableStateOf и делегаты свойств

    Этот подход упрощается благодаря делегатам свойств Kotlin и API mutableStateOf, который позволяет создавать экземпляры MutableState вне композиции. Замените все свойства var исходного класса на свойства var с делегатом свойства mutableStateOf. Это удобно, поскольку использование класса не изменится, а изменится только его внутренняя реализация. Однако поведение не будет полностью идентичным, поскольку теперь каждое свойство наблюдается/подписывается индивидуально, поэтому повторные композиции, которые вы увидите после этого рефакторинга, могут быть более узкими (что хорошо).

    class Position(x: Int, y: Int) {
     var x by mutableStateOf(x)
     var y by mutableStateOf(y)
    }
    
    // source of Example is identical to original
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    (I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143263925, b/139653744)

  • Обратный вызов onFocusChange в текстовых полях переименован в onFocusChanged (Ida4a1)

  • В stateDraggable добавлен параметр thresholds, позволяющий задавать пороговые значения между якорями. Это значение использовалось для установки порога в 56 dp в нижнем выдвижном меню. Кроме того, в BottomDrawerLayout теперь используется отдельный перечислитель BottomDrawerState. (I533fa)

  • Удален ранее признанный устаревшим Modifier.ripple. Теперь в качестве индикатора по умолчанию используется эффект пульсации (если в приложении задана тема MaterialTheme {}), поэтому в большинстве случаев достаточно просто использовать clickable, чтобы получить эффект пульсации. Если вам нужно настроить цвет, размер или параметр bounded для эффекта пульсации, вы можете вручную создать RippleIndication и передать его в clickable как параметр indication. (I663b2, b/155375067)

  • Удалено устаревшее переопределение композиции FilledTextField (I7f8f8)

  • Переименован объект Button (содержащий значения по умолчанию, используемые функцией Button) в ButtonConstants (I7c5f7, b/159687878).

  • Контентный слот кнопки теперь ведет себя как строка (полезно, когда нужно добавить значок с текстом; примеры можно найти в разделе "Как писать кнопки") (I0ff10, b/158677863).

  • Поддержка RadioGroup и RadioGroupItem прекращена. Используйте Box с Modifier.selectable, Row и Column, чтобы создать подходящий набор вариантов radioButton (I7f5cf, b/149528535).

  • Добавлено поле ввода текста с контуром (I1a518)

  • androidx.ui.foundation.TextFieldValue и androidx.ui.input.EditorValue больше не поддерживаются. Компонуемые функции TextField, FilledTextField и CoreTextField, в которых используется этот тип, также устарели. Используйте androidx.ui.input.TextFieldValue (I4066d, b/155211005).

  • TabRow.TabPosition содержит позицию в единицах dp, а не IntPx (I34a07, b/158577776)

  • Заменено использование IntPx на Int. Заменено IntPxPosition на IntOffset. Параметр IntPxSize заменен на IntSize. (Ib7b44)

  • Чтобы уменьшить количество классов, используемых для представления информации о размерах, стандартизируйте использование класса Size вместо PxSize. Это позволяет использовать преимущества встроенного класса, чтобы упаковать два значения с плавающей запятой, представляющие ширину и высоту, в одно значение типа long. (Ic0191)

  • Устаревший модификатор Modifier.ripple. Теперь в качестве индикатора по умолчанию используется эффект пульсации (если в приложении задана тема MaterialTheme {}), поэтому в большинстве случаев достаточно просто использовать clickable, чтобы получить эффект пульсации. Если вам нужно настроить цвет, размер или параметр bounded для эффекта пульсации, вы можете вручную создать RippleIndication и передать его в clickable как параметр indication. (I101cd, b/155375067)

  • Мы переработали API Scaffold: изменили названия некоторых параметров и добавили новые параметры для более точной настройки. Добавлен геттер для запроса размеров FAB, TopBar и BottomBar (I0e7ce).

  • Добавлен компонент DropdownMenu в ui-material, реализацию меню Material Design. (I9bb3d)

  • Добавлена возможность вручную показывать и скрывать виртуальную клавиатуру с помощью SoftwareKeyboardController (Ifb9d6, b/155427736).

  • В пакет Foundation добавлен параметр Modifier.indication. Используйте его, чтобы показывать нажатие, перетаскивание и другие действия на ваших интерактивных элементах (I8425f, b/155287131).

  • Объединили реализации CanvasScope, поэтому теперь есть только DrawScope и ContentDrawScope. Переименовали CanvasScope в DrawScope. Обновлен DrawScope, чтобы реализовать интерфейс Density и предоставить LayoutDirection. Удален подкласс DrawScope в ContentDrawScope. Обновлены Painter и PainterModifier, чтобы больше не поддерживать свойство RTL, поскольку DrawScope уже предоставляет его без необходимости указывать вручную (I1798e).

  • Переименована функция Emphasis.emphasize() в Emphasis.applyEmphasis() (Iceebe)

  • Отключенные кнопки теперь визуально соответствуют спецификации Material Design (I47dcb, b/155076924).

  • В FilledTextField добавлена поддержка действий IME, визуальных преобразований и типа клавиатуры (I1f9cf, b/155075201).

  • Добавлен параметр strokeWidth в CircularProgressIndicator, чтобы можно было настраивать размер штриха. Чтобы изменить размер штриха (высоту) элемента LinearProgressIndicator, можно использовать Modifier.preferredHeight() или другой модификатор размера. (Icea16, b/154919081)

  • Добавлен параметр strokeWidth в CircularProgressIndicator, чтобы можно было настраивать размер штриха. Чтобы изменить размер штриха (высоту) элемента LinearProgressIndicator, можно использовать Modifier.preferredHeight() или другой модификатор размера. (Icea16, b/154919081)

  • Добавлен API слота для значков в начале и конце поля FilledTextField и обработка состояния ошибки (Ic12e0).

  • Цвет плавающих кнопок действия по умолчанию изменен на MaterialTheme.colors.secondary. (I3b9b9, b/154118816)

  • Заменили все случаи использования допускающего значение NULL типа Color в API на недопускающий значение NULL и вместо null используем Color.Unset (Iabaa7).

  • Переименован EdgeInsets в InnerPadding. Параметр innerPadding для кнопок Material Buttons переименован в padding. (I66165)

  • Ползунок теперь не сохраняет состояние. Пользователям нужно будет самостоятельно передавать и обновлять состояние, как и в любом другом элементе управления. (Ia00aa)

  • Удален StaticDrawer. Если вам нужно использовать Box, задайте ширину в соответствии со спецификацией Material (I244a7).

  • Добавлена реализация Material Design для заполненного текстового поля (Ic75cd).

  • Добавлен параметр modifier в ListItem и изменен порядок параметров, чтобы продвигать лямбда-выражение в конце (I66e21).

  • Добавлен параметр конструктора defaultFontFamily в Typography, позволяющий указать семейство шрифтов по умолчанию, которое будет использоваться для всех предоставленных стилей текста, в которых не задано семейство. (I89d07)

  • Временно удалили таблицы данных о материалах из API. (Iaea61)

  • Переименованы параметры в компоненте Divider (Ic4373)

  • дети (Ia6d19);

  • Удалены уровни акцента MaterialTheme. Вместо них используйте EmphasisAmbient.current, чтобы получить уровни акцента (Ib5e40).

  • Система тем оформления форм обновлена в соответствии со спецификацией Material Design. Теперь вы можете указать небольшие, средние и крупные фигуры, которые будут использоваться большинством компонентов (Ifb4d1).

  • Изменили API MaterialTheme, такие как MaterialTheme.colors() и MaterialTheme.typography(), чтобы они были свойствами, а не функциями. Удалите скобки из существующих вызовов. Поведение не изменится. (I3565a)

  • Проведен рефакторинг API FloatingActionButton, чтобы принимать composable-функции, а не примитивы. Ознакомьтесь с обновленными примерами использования. (I00622)

  • Добавлен параметр enabled в Checkbox, Switch и Toggleable (I41c16)

  • Функция "Сдвиг" теперь называется "Модификатор". Пока Clickable не преобразован, рекомендуется использовать Clickable(onClick = { ... }, modifier = ripple()) (Ie5200, b/151331852, b/150060763).

  • Компоненты Surface и Card перенесены из androidx.ui.material.surface в androidx.ui.material (I88a6d, b/150863888).

  • У компонентов Button, FloatingActionButton и Clickable теперь есть отдельный параметр enabled. Некоторые параметры кнопки были переименованы или изменены. (I54b5a)

  • Переименовали Image в ImageAsset, чтобы лучше различать данные Image и будущую composable-функцию Image, которая будет использоваться для макета и отрисовки контента. _Body:Создан метод расширения для android.graphics.Bitmap, Bitmap.asImageAsset(), чтобы создать экземпляр ImageAsset, который можно использовать для объединения традиционной разработки приложений для Android с фреймворком Compose (Id5bbd).

  • Удален Snackbar API с параметрами String. Вместо него используется перегрузка, которая принимает лямбда-выражения. Обновлены примеры для информации об использовании (I55f80)

  • Рефакторинг API вкладок для поддержки лямбда-выражений text и icon (Ia057e)

  • Добавлен компонент BottomNavigation. Информацию о его использовании можно найти в документации и примерах (I731a0).

  • Добавлены компоненты Icon, IconButton и IconToggleButton, а компонент AppBarIcon удален. Вы можете напрямую заменить существующие экземпляры AppBarIcon на IconButton, и у них будет правильная область прикосновения. Примеры использования можно найти в разделе "Примеры", а список значков Material Icons, которые можно использовать с этими компонентами, – в разделе "Значки". (I96849)

  • Заменили ButtonStyle отдельными функциями и удалили перегрузку текста (строки). Чтобы узнать, как использовать эти данные, ознакомьтесь с обновленными примерами. (If63ab, b/146478620, b/146482131)

  • переименовать модификатор Border в DrawBorder (I8ffcc)

  • У LayoutCoordinates больше нет свойства position. Свойство position не имеет смысла при использовании LayoutModifiers, поворота или масштабирования. Вместо этого разработчикам следует использовать parentCoordinates и childToLocal(), чтобы рассчитать преобразование из одной LayoutCoordinate в другую.

    В LayoutCoordinates для свойства size используется IntPxSize вместо PxSize. В макетах используются размеры в целых пикселях, поэтому все размеры макетов должны быть целыми числами, а не числами с плавающей запятой. (I9367b)

  • Критические изменения в API для фоновых функций. Подробную информацию можно найти в документации по журналам и Ambient<T> (I4c7ee, b/143769776).

  • Добавлен компонент "Материал каркаса". Строительные леса (I7731b)

  • Функция DrawBorder заменена модификатором границ (Id335a).

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

  • FocusModifier устарел. Вместо него используйте Modifier.focus, Modifier.focusRequester и Modifier.focusObserver. Классы FocusState и FocusDetailedState устарели. Вместо них следует использовать класс FocusState2 (I46919, b/160822875, b/160922136).
  • Компоненты VerticalScroller и HoriziontalScroller больше не поддерживаются. Используйте ScrollableColumn и ScrollableRow, чтобы создать встроенный интерфейс с поведением и параметрами Column/Row, или Modifier.verticalScroll и Modifier.horizontalScroll для собственного элемента. Аналогично, ScrollerPosition был объявлен устаревшим в пользу ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
  • Переработаны API Modifier.draggable и Modifier.scrollable. Параметр DragDirection был удален, вместо него используется параметр Orientation. Требования к штату для прокручиваемого контента упрощены. Класс ScrollableState переименован в ScrollableController (Iab63c, b/149460415)
  • runOnIdleCompose переименован в runOnIdle (I83607)
  • Свойства семантики с одним значением теперь используют стиль вызова. Например, теперь вместо 'semantics { hidden = true }' нужно писать 'semantics { hidden() }'. (Ic1afd, b/145951226, b/145955412)
  • Некоторые API для тестирования были переименованы, чтобы их названия были более понятными. Все API findXYZ переименованы в onNodeXYZ. Все API doXYZ были переименованы в performXYZ. (I7f164)
  • API перехода был изменен, чтобы возвращать TransitionState вместо передачи TransitionState дочерним элементам. Это делает API более совместимым с API animate(). (I24e38)
  • Добавлен класс IntBounds, представляющий границы в целых пикселях из макета. API PopupPositionProvider был обновлен, чтобы использовать его. (I0d8d0, b/159596546)
  • В тестировщики поиска добавлен новый необязательный флаг useUnmergedTree. (I2ce48)
  • Удалены устаревшие API для тестирования размера. (Iba0a0)
  • Удален встроенный класс Shader, который использовался для класса NativeShader. Класс NativeShader переименован в Shader. Встроенный класс Shader не добавлял ничего ценного в API и был встроенным классом, поэтому используйте класс NativeShader напрямую. (I25e4d)
  • Всплывающие окна, диалоговые окна и меню теперь наследуют контекстную тему MaterialTheme (Ia3665, b/156527485).
  • Меню Material DropdownMenu теперь можно прокручивать. (Ide699)
  • Удален параметр направления макета из блока измерения функции Layout(). Однако направление макета доступно в обратном вызове через объект области действия измерения (Ic7d9d).
  • В API верхнего уровня вместо AnimationBuilder используется AnimationSpec, чтобы уточнить концепцию статической спецификации анимации. -Улучшен DSL перехода: удалено требование к лямбда-выражению для создания AnimationSpec, например tween или spring. Вместо этого они принимают параметры конструктора напрямую. – Улучшена общая простота использования AnimationSpec. Теперь можно использовать конструкторы вместо построителей. – Длительность и задержка для KeyFrames и Tween изменены на Int. Это позволяет избежать ненужных преобразований типов и перегрузки методов (для поддержки Long и Int). (Ica0b4)
  • Кнопка "Переключить" теперь неактивна, если для параметра enabled задано значение false (If4624, b/155941869, b/159331694)
  • Поле Modifier.tag переименовано в Modifier.layoutId, чтобы избежать путаницы с Modifier.testTag. (I995f0)
  • Позиции линий выравнивания типа Int, возвращаемые из Placeable#get(AlignmentLine), теперь не могут быть нулевыми. Если запрошенная линия выравнивания отсутствует, будет возвращено значение AlignmentLine.Unspecified. (I896c5, b/158134875)
  • Класс Radius был преобразован в класс inline. Удалены методы создания дополнительных объявлений. Вместо них используется конструктор функций с параметром по умолчанию, чтобы радиус по оси Y совпадал с обязательным параметром радиуса по оси X.

    Обновлена функция DrawScope.drawRoundRect, которая теперь принимает один параметр Radius вместо двух отдельных значений float для радиуса по осям X и Y (I46d1b).

  • Чтобы уменьшить количество классов, используемых для представления информации о позиционировании, стандартизируйте использование класса Offset вместо PxPosition. Это позволяет использовать преимущества встроенного класса, чтобы упаковать два значения float, представляющие смещения x и y, в одно значение long. (I3ad98)

  • В рамках масштабной реорганизации кода мы заменили класс Px в различных классах Compose на Dp и примитивные типы для параметров пикселей. Удален весь класс Px (I3ff33).

  • Поддержка переключаемого компонента прекращена. Используйте Modifier.toggleable (I35220, b/157642842)

  • В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose, чтобы для параметров пикселей использовались только Dp и примитивные типы (I086f4).

  • В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose, чтобы для параметров пикселей использовались только Dp и примитивные типы (Id3434).

  • В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose на использование только Dp и примитивных типов для параметров пикселей (I97a5a).

  • Исправлена ошибка, из-за которой не вызывался метод onClick для элементов DropdownMenuItem. (I3998b, b/157673259)

  • Поддержка MutuallyExclusiveSetItem прекращена. Используйте Modifier.selectable. (I02b47, b/157642842)

  • Тег TestTag больше не поддерживается. Вместо него используйте Modifier.testTag. (If5110, b/157173105)

  • У курсора TextField есть мигающая анимация (Id10a7)

  • В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose, чтобы для параметров пикселей использовались только Dp и примитивные типы (I19d02).

  • Теперь VerticalScroller предоставляет Column по умолчанию. Теперь компонент HorizontalScroller по умолчанию предоставляет строку. (Ieca5d, b/157020670)

  • В рамках масштабной реорганизации кода мы заменили использование класса Px в различных классах Compose на использование класса Dp и примитивных типов для параметров пикселей (Iede0b).

  • Свойство Modifier.semantics снова доступно для использования в компонентах высокого уровня. (I4cfdc)

  • Изменения в API модификаторов DrawLayer: outlineShape переименован в shape, имеет значение по умолчанию RectangleShape и теперь не может быть нулевым; clipToOutline переименован в clip; clipToBounds удален, поскольку он аналогичен clip == true с RectangleShape (I7ef11, b/155075735).

  • Обновлены API более высокого уровня, которые предоставляют Canvas, чтобы вместо этого предоставлять CanvasScope. Это позволяет потребителям не создавать собственные объекты Paint. Пользователи, которым по-прежнему нужен доступ к Canvas, могут использовать метод drawCanvas, который предоставляет функцию обратного вызова для отправки команд рисования с помощью базового Canvas. (I80afd)

  • Компонуемый элемент AlignmentLineOffset устарел. Вместо него используйте модификатор relativePaddingFrom(). Удален компонент CenterAlignmentLine. (I60107)

  • Изменен API конечной лямбда-функции WithConstraints. Теперь вместо двух параметров используется область действия получателя, которая помимо ограничений и направления макета предоставляет свойства minWidth, maxWidth, minHeight и maxHeight в единицах dp (I91b9a, b/149979702).

  • Добавлен модификатор макета defaultMinSizeConstraints, который устанавливает ограничения размера для обернутого макета, только если входящие соответствующие ограничения не указаны (0 для минимальных ограничений и бесконечность для максимальных ограничений). (I311ea, b/150460257)

  • Удален FocusManagerAmbient. Чтобы получить фокус, используйте FocusModifier.requestFocus. (Ic4826)

  • Создан API CanvasScope, который оборачивает объект Canvas, чтобы предоставить поверхность API для рисования без сохранения состояния и с декларативным подходом. Преобразования содержатся в собственной области получателя, а информация о размере также ограничена соответствующими границами вставки. Для настройки операций рисования потребителю не нужно поддерживать собственный объект состояния Paint.

    Добавлен CanvasScopeSample, а также обновлено демонстрационное приложение, чтобы включить демонстрацию декларативной графики (Ifd86d).

  • Добавление возможности настройки цвета курсора в TextField (I6e33f)

  • Теперь TextFieldValue, используемый с TextField, может сохраняться при воссоздании активности, если он используется следующим образом: var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() } (I5c3ce, b/155075724).

  • Класс LayoutModifier2 переименован в LayoutModifier. (Id29f3)

  • Удален устаревший интерфейс LayoutModifier. (I2a9d6)

  • Параметр focusIdentifier в CoreTextField/TextField заменен на FocusNode для интеграции с подсистемой фокуса. (I7ea48)

  • Встроенные функции измерений в Layout и LayoutModifier2 теперь имеют получатель IntrinsicMeasureScope, который предоставляет API запроса встроенных значений с неявно распространяемым направлением макета. (Id9945)

  • Добавлен новый модификатор Modifier.zIndex(), который позволяет управлять порядком отрисовки дочерних элементов в одном родительском макете. Свойство elevation в DrawLayerModifier переименовано в shadowElevation и больше не управляет порядком отрисовки. Порядок параметров в DrawShadow изменен: теперь первым идет параметр elevation, а вторым – shape со значением по умолчанию RectangleShape. (I20150, b/152417501)

  • RectangleShape перемещен из androidx.ui.foundation.shape.* в androidx.ui.graphics.* (Ia74d5, b/154507984)

  • Обновление API TextField: функции обратного вызова onFocus и onBlur объединены в одну функцию onFocusChange(Boolean) с параметром (I66cd3).

  • В объекты Row и Column добавлены параметры verticalGravity и horizontalGravity соответственно. (I7dc5a)

  • Обновлены параметры wrapContentWidth и wrapContentHeight, чтобы они ожидали выравнивание по вертикали или горизонтали, а не любое выравнивание. Модификатор gravity теперь принимает выравнивание по вертикали или горизонтали. В Row, Column и Stack добавлена поддержка специальных непрерывных выравниваний. (Ib0728)

  • Создан PixelMap API для запроса информации о пикселях из ImageAsset. (I69ad6)

  • Удален параметр ProvideContentColor. Вместо него теперь используется ContentColorAmbient с Providers (Iee942).

  • Модуль ui-text-compose переименован в ui-text. Теперь ui-text содержит композиции CoreText и CoreTextField (Ib7d47).

  • Модуль ui-text переименован в ui-text-core (I57dec).

  • Компонуемые функции ui-framework/CoreText и CoreTextField перенесены в ui-text-compose. Возможно, вы захотите добавить ui-text-compose в свой проект. (I32042)

  • Улучшения DrawModifier API:

    • Область действия получателя для функции draw() изменена на ContentDrawScope
    • Удалены все параметры в функции draw()
    • У DrawScope такой же интерфейс, как и у CanvasScope.
    • У ContentDrawScope есть метод drawContent() (Ibaced, b/152919067)
  • runOnIdleCompose и runOnUiThread теперь глобальные функции, а не методы ComposeTestRule. (Icbe8f)

  • [Mutable]Операторы делегирования свойств State перенесены в расширения, чтобы поддерживать оптимизацию делегирования свойств Kotlin 1.4. Чтобы продолжить использовать by state { ... } или by mutableStateOf(...), вызывающие абоненты должны добавить импорты. (I5312c)

  • Добавлены positionInParent и boundsInParent для LayoutCoordinates. (Icacdd, b/152735784)

  • Поддержка ColoredRect прекращена. Используйте Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)

  • Класс LayoutResult переименован в MeasureResult. (Id8c68)

  • Добавлен LayoutModifier2 – новый API для определения модификаторов макета. LayoutModifier (If32ac) больше не поддерживается.

  • Замена оператора "Модификатор плюс" на функции расширения производителя (I225e4)

  • Свойство draggable перенесено в модификатор (Id9b16, b/151959544)

  • Компонуемый элемент ParentData устарел. Вам нужно создать модификатор, который реализует интерфейс ParentDataModifier, или использовать модификатор LayoutTag, если вам просто нужно пометить дочерние элементы макета, чтобы распознавать их в блоке измерения. (I51368, b/150953183)

  • Компонуемый элемент Center больше не поддерживается. Его следует заменить на модификатор LayoutSize.Fill + LayoutAlign.Center или на один из компонентов Box или Stack с подходящими модификаторами (Idf5e0).

  • Добавлен VectorPainter API, который заменит существующий subcomposition API для векторной графики. Результатом вложенной композиции является объект VectorPainter, а не DrawModifier. Устаревшие функции DrawVector заменены на VectorPainter.

    Переименован API Image(Painter) в PaintBox(Painter). Создан компонуемый элемент Vector, который ведет себя как компонуемый элемент Image, но использует VectorAsset вместо ImageAsset (I9af9a, b/149030271).

  • Переименован макет LayoutFlexible в LayoutWeight. Параметр "Плотный" переименован в "Заливка". (If4738)

  • Удален RepaintBoundary в пользу DrawLayerModifier (I00aa4)

  • Функция DrawVector была изменена с обычной composable-функции на функцию, возвращающую модификатор drawVector(), который будет рисовать вектор в качестве фона макета. (I7b8e0)

  • Composable-функция Opacity заменена модификатором drawOpacity. (I5fb62)

  • Замените composable-функцию Clip на модификатор drawClip(). Модификатор DrawClipToBounds удобно использовать, когда нужно обрезать изображение по границам слоя с помощью прямоугольной формы. (If28eb)

  • Компонуемая функция DrawShadow заменена на модификатор drawShadow(). Тени теперь рисуются как часть LayerModifier. (I0317a)

  • Добавлен модификатор LayerModifier, который позволяет добавлять RenderNode для макета. Он позволяет задавать обрезку, прозрачность, поворот, масштабирование и тени. Он заменит RepaintBoundary. (I7100d, b/150774014)

  • Класс androidx.compose.ViewComposer перенесен в androidx.ui.node.UiComposer. Класс androidx.compose.Emittable удален. Он был избыточным по отношению к ComponentNode. androidx.compose.ViewAdapters был удален. Они больше не поддерживаются. Поддержка Compose.composeInto прекращена. Используйте setContent или setViewContent. Поддержка метода Compose.disposeComposition прекращена. Вместо этого используйте метод dispose для объекта Composition, возвращенного методом setContent. Функция androidx.compose.Compose.subcomposeInto перенесена в androidx.ui.core.subcomposeInto. Метод ComponentNode#emitInsertAt переименован в ComponentNode#insertAt. Метод ComponentNode#emitRemoveAt переименован в ComponentNode#removeAt. Метод ComponentNode#emitMode переименован в ComponentNode#move (Idef00).

  • Создан компонуемый элемент Created Image, который обрабатывает размеры и макет, а также отрисовывает заданный объект ImageAsset на экране. Этот компонент также поддерживает отрисовку любого экземпляра Painter с учетом его собственного размера, а также заданного фиксированного или минимального размера (Ibcc8f).

  • Устаревшая composable-функция Wrap. Его можно заменить модификатором LayoutAlign или композицией Stack (Ib237f).

  • В функцию WithConstraints добавлен параметр LayoutDirection (I6d6f7)

  • Направление макета теперь передается от родительского узла макета дочерним. Добавлен модификатор направления макета. (I3d955)

  • Компонент Stack поддерживает направление текста справа налево (Ic9e00)

  • Компонуемый элемент DrawShape удален. Используйте модификатор DrawBackground. (I7ceb2)

  • Поддержка направления справа налево в модификаторе LayoutPadding (I9e8da)

  • Добавлен компонент AdapterList – список с прокруткой, который только составляет и размещает видимые элементы. Известные проблемы: работает только в вертикальной ориентации и не всегда корректно обрабатывает изменения дочерних элементов. (Ib351b)

  • Флаг ComposeFlags.COMPOSER_PARAM был изменен на true, что повлияет на стратегию генерации кода для плагина Compose. В общих чертах это приводит к тому, что функции @Composable генерируются с дополнительным синтетическим параметром, который передается последующим вызовам @Composable, чтобы среда выполнения могла правильно управлять выполнением. Это значительное изменение, однако оно должно сохранить совместимость на уровне исходного кода во всех разрешенных случаях использования Compose. (I7971c)

  • Добавлен компонент Canvas. Эта composable-функция занимает определенное место (заданное пользователем) и позволяет рисовать с помощью CanvasScope (I0d622).

  • Параметры "Плотность" и "Область плотности" объединены в один интерфейс. Вместо ambientDensity() теперь можно использовать DensityAmbient.current. Вместо withDensity(density) используйте with(density) (I11cb1).

  • Изменено свойство LayoutCoordinates, чтобы providedAlignmentLines было не картой, а набором. Для получения значения теперь используется оператор get(). Это позволяет модераторам изменять одно или несколько значений набора, не создавая для каждого модератора новую коллекцию. (I0245a)

  • Теперь прокрутка выполняется так же, как в Android. (I922af, b/147493715)

  • Улучшения API для ограничений (I0fd15)