ТВ

Предоставляет разработчикам функции Compose и Material Design для написания приложений для телевидения.
Последнее обновление Стабильный выпуск Релиз-кандидат Бета-версия Альфа-релиз
7 августа 2024 г. - 1.0.0-rc02 - -

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

Чтобы добавить зависимости от tv-foundation и tv-material, вам необходимо добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .

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

классный

dependencies {
    implementation "androidx.tv:tv-foundation:1.0.0-alpha11"
    implementation "androidx.tv:tv-material:1.0.0-rc02"
}

Котлин

dependencies {
    implementation("androidx.tv:tv-foundation:1.0.0-alpha11")
    implementation("androidx.tv:tv-material:1.0.0-rc02")
}

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

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

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

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

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

Для этого артефакта нет примечаний к выпуску.

ТВ-Материал Версия 1.0

Версия 1.0.0-rc02

7 августа 2024 г.

androidx.tv:tv-material:1.0.0-rc02 выпущен. Версия 1.0.0-rc02 содержит эти коммиты .

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

  • Исправлена ​​текстовая анимация Jittery в компонуемой поверхности. ( 3163319 )

Версия 1.0.0-rc01

10 июля 2024 г.

androidx.tv:tv-material:1.0.0-rc01 выпущен. Версия 1.0.0-rc01 содержит эти коммиты .

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

1 мая 2024 г.

androidx.tv:tv-material:1.0.0-beta01 выпущен. Версия 1.0.0-beta01 содержит эти коммиты .

Изменения API

  • ColorScheme и ее служебные функции теперь стабильны. ( Если34фа )
  • LocalContentColor теперь стабилен ( I60ee2 )
  • API Typography теперь стабилен ( I088d6 ).
  • API фигур теперь стабильны ( I0f5f4 ).
  • Border API теперь стабилен ( I69281 ).
  • Glow API теперь стабилен ( Iea5f1 ).
  • Компонент значков теперь стабилен ( I62c2d ).
  • API LocalTextStyles теперь стабилен ( Iaded8 )
  • API MaterialTheme теперь стабилен ( I2f541 ).
  • Текстовый компонент теперь стабилен ( Ib9e31 ).
  • Компонент RadioButton теперь стабилен ( Ia03c8 ).
  • Компонент коммутатора теперь стабилен ( I6cea3 ).
  • Компоненты Checkbox теперь стабильны ( I7eafc )
  • Компоненты поверхности теперь стабильны ( I58758 , I04aca ).
  • NonInteractiveSurfaceDefaults переименован в SurfaceDefaults , а NonInteractiveSurfaceColors в SurfaceColors ( I0812e ).
  • Выбираемая поверхность теперь использует терминологию «выбрать» вместо «проверить», поскольку они оба имеют разное семантическое значение ( I5a206 ).
  • NavigationDrawer и NavigationDrawerScope теперь стабильны ( I249c1 ).
  • Компонент NavigationDrawerItem теперь стабилен ( Id6986 ).
  • Компоненты Tab и TabRow теперь стабильны ( I92d92 ).
  • Компоненты Button , OutlinedButton , IconButton , OutlinedIconButton и WideButton теперь стабильны ( Ib4de8 ).
  • Компоненты Card , ClassicCard , CompactCard , WideClassicCard , StandardCardContainer и WideCardContainer теперь стабильны ( I34390 ).
  • StandardCardLayout переименован в StandardCardContainer , а WideCardLayout в WideCardContainer ( I08883 ).
  • Удален CardContainerDefaults.ImageCard и переименован CardDefaults.ContainerGradient в CardDefaults.ScrimBrush ( I6adfe ). Вы можете использовать Card вместо CardContainerDefaults.ImageCard в контейнерах карт.
  • ListItem и DenseListItem теперь стабильны ( Idebd9 ).
  • ListItemDefaults.ListItemShape , ListItemDefaults.FocusedDisabledBorder и ListItemDefaults.SelectedContainerColorOpacity теперь являются частными ( I5d533 ).
  • Параметры ListItem изменены и переименованы в ListItemDefaults.ListItemElevation в ListItemDefaults.TonalElevation ( Id6841 ). Параметр headlineContent был перемещен в начало составного элемента. Раньше вы могли использовать конечный лямбда-синтаксис Котлина для передачи headlineContent . Теперь вам нужно будет использовать синтаксис именованных параметров для предоставления headlineContent .
  • LocalAbsoluteTonalElevation теперь является внутренним ( Ibfc65 ).
  • Компонент ImmersiveList был удален. Посмотрите этот образец , чтобы узнать, как построить его самостоятельно. ( Ид48да )
  • Компоненты tv-material, предоставляющие MutableInteractionSource в своем API, были обновлены и теперь предоставляют MutableInteractionSource с нулевым значением, который по умолчанию имеет значение null. Здесь нет никаких семантических изменений: передача null означает, что вы не хотите поднимать MutableInteractionSource , и при необходимости он будет создан внутри компонента. Изменение значения null позволяет некоторым компонентам никогда не выделять MutableInteractionSource , а другим компонентам — только лениво создавать экземпляр, когда это необходимо, что повышает производительность этих компонентов. Если вы не используете MutableInteractionSource , который передаете этим компонентам, рекомендуется вместо этого передать значение null. Также рекомендуется внести аналогичные изменения в ваши собственные компоненты. ( I309b4 , б/298048146 )
  • Параметр TextAlign компонента TV Text теперь не равен нулю ( Ib73b1 , b/299490814 ).
  • Введено специальное значение Unspecified для полей TextAlign , TextDirection , Hyphens и LineBreak ParagraphTextStyle для замены ( I4197e , b/299490814 ).

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

  • Значение по умолчанию параметра shape для неинтерактивной Surface изменено на RectangleShape ( I1b859cb ).
  • Некоторые функции карусели были исключены из бета-запуска из-за экспериментальных необходимых API ( I0e755d4 ).
  • Изменение contentColor в Surface больше не приводит к анимации между состояниями ( I436e794f )

Версия 1.0.0

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

10 июля 2024 г.

Выпущен androidx.tv:tv-foundation:1.0.0-alpha11 . Версия 1.0.0-alpha11 содержит эти коммиты .

Изменения API

  • Tv Lazy Layouts исключены из библиотеки tv-foundation. Обратитесь к этому билету, чтобы узнать, как отказаться от ленивых макетов телевидения. ( I0855f , б / 332674072 )
  • PlatformImeOptions теперь представляет собой конкретный класс, а не интерфейс. ( Если40а4 )

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

4 октября 2023 г.

Выпущены androidx.tv:tv-foundation:1.0.0-alpha10 и androidx.tv:tv-material:1.0.0-alpha10 . Версия 1.0.0-alpha10 содержит эти коммиты.

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

  • Представлен NavigationDrawerItem для использования в NavigationDrawer и ModalNavigationDrawer . ( I4b491 )
  • Добавьте базовый профиль в библиотеку tv-foundation. ( 2b57fd7 )
  • Добавьте базовый профиль в библиотеку ТВ-материалов. ( 1711ff5 )

Изменения API

  • Переименован NavigationDrawerScope.doesTabRowHaveFocus в NavigationDrawerScope.hasFocus . ( I8286b )
  • TabRowScope.isActivated переименован в TabRowScope.hasFocus . ( Ic4273 )

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

  • Исправлена ​​совместимость карусели с соседними элементами, которые используют API-интерфейсы восстановления фокуса. ( 7b2a7a4 )
  • Отключите индикацию свечения для API_LEVEL ниже 28, поскольку она не поддерживается ОС. ( 6d3616f )
  • Исправлен сбой ANR, вызванный неправильным размещением элементов в ленивых контейнерах при быстрой прокрутке в обратном направлении. ( 642d65c )
  • Удалены фоновые отступы в модальном навигационном ящике. ( 69965b2 )
  • Исправлена ​​ошибка, из-за которой Scrim в навигационном ящике отображался над фоновым содержимым, а не позади него. ( d4bbefb )

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

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

Выпущены androidx.tv:tv-foundation:1.0.0-alpha09 и androidx.tv:tv-material:1.0.0-alpha09 . Версия 1.0.0-alpha09 содержит эти коммиты.

Изменения API

  • Добавьте интерфейс ReusableComposition для управления жизненным циклом и повторного использования подкомпозиций. ( I812d1 , б/252846775 )
  • Синхронизируйте вилку tv-foundation с compose-foundation. ( I737c3 , б / 287011882 )
  • Добавлена ​​перегрузка LazyLayout , она принимает лямбда LazyLayoutItemProvider , а не простой объект, как это было раньше. Предыдущая перегрузка устарела. ( I42a5a )
  • Добавьте TvKeyboardAlignment чтобы позволить разработчику настраивать положение клавиатуры на экране с помощью AndroidImeOptions . ( Идб772 )
  • Добавьте rememberCarouselState , чтобы запомнить CarouselState с Saver в TV Compose Material. ( ID7275 )
  • Изменение параметра scrimColor: Color на параметр scrimBrush:Brush , чтобы пользователи могли добавлять градиенты к холсту. ( I254d4 )

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

26 июля 2023 г.

Выпущены androidx.tv:tv-foundation:1.0.0-alpha08 и androidx.tv:tv-material:1.0.0-alpha08 . Версия 1.0.0-alpha08 содержит эти коммиты.

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

  • Представляем компоненты Chip для создания материалов для телевидения. ( I86da4 )
  • Добавьте компонент ListItem в TV Compose Material. ( I3f0b3 )
  • Добавьте компонент DenseListItem в материал TV Compose. ( I536bf )

Изменения API

  • Общедоступные API-интерфейсы телематериалов помечены как экспериментальные. ( I632e7 )
  • Представлен TabRowScope для совместного использования состояния из составного элемента TabRow с составным элементом Tab и переименованы свойства TabColors . ( Ief587 )

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

7 июня 2023 г.

Выпущены androidx.tv:tv-foundation:1.0.0-alpha07 и androidx.tv:tv-material:1.0.0-alpha07 . Версия 1.0.0-alpha07 содержит эти коммиты.

Изменения API

  • Индикация масштаба компонентов теперь включает значение «Нет», чтобы отключить масштабирование. ( I50df5 )
  • Добавлена ​​поддержка длительного нажатия для поверхности материала телевизора, карточек и кнопок. ( Id2b89 )
  • CarouselItem и CarouselScope были удалены. Анимацию содержимого переднего плана можно добиться на слайде с помощью Modifier.animateEnterExit из AnimatedContentScope . ( Ic038e )
  • Параметры color и contentColor объединены в качестве colors для TV Material Surface. ( Ie69eb )
  • В ТВ-материалах появилась возможность компоновки RadioButton . ( I08690 )
  • В ТВ-материале представлен компонуемый Switch . ( I45e29 )
  • В ТВ-материалах представлен компонуемый Checkbox . ( I6a45a )
  • В ТВ-материале появилась неинтерактивная поверхность. ( Ic5f85 )
  • Сделайте показания внутренними. ( Ibff82 )

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

19 апреля 2023 г.

Выпущены androidx.tv:tv-foundation:1.0.0-alpha06 и androidx.tv:tv-material:1.0.0-alpha06 . Версия 1.0.0-alpha06 содержит эти коммиты.

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

  • Добавить реализацию Material 3 Card, оптимизированную для телевидения.
    • Базовая карта ( I5b701 )
    • ClassicCard , CompactCard и WideClassicCard ( I70471 )
    • StandardCardLayout и WideCardLayout ( I33fae )
  • Добавить реализацию Material 3 Button, оптимизированную для телевидения.
    • Основная кнопка ( I69c11 )
    • IconButton и OutlinedIconButton ( Ib504c )
    • WideButton ( I4cecf )

Изменения API

  • CarouselSlide и slideCount в Carousel переименованы в CarouselItem и itemCount . ( Ie554c )
  • Переименованы forward и backward ContentTransforms в StartToEnd и EndToStart . ( Ie554c )

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

  • Обработка кнопки возврата DPAD при фокусировке на NavigationDrawer . ( d654f4 )

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

22 марта 2023 г.

Выпущены androidx.tv:tv-foundation:1.0.0-alpha05 и androidx.tv:tv-material:1.0.0-alpha05 . Версия 1.0.0-alpha05 содержит эти коммиты.

Изменения API

  • Представляем ящик боковой навигации, который можно встроить в tv-material . Чтобы узнать, как использовать этот составной элемент, обратитесь к примерам . ( I12c08 )
  • Представляем компонуемый значок в TV Material 3 ( I72db9 )
  • Представляем поверхность, компонуемую с tv-material с такими индикациями, как «Граница», «Свечение» и «Масштаб», которые можно использовать для создания компонентов, которые четко выделяют сфокусированный элемент на экране телевизора. ( I4a6d8 ), ( Iceea1 ), ( Iee4d4 ), ( I79edf ), ( Icb376 )
  • Обновите CarouselItem до CarouselSlide , чтобы оно соответствовало имени slideCount в API Carousel ( Ic4299 ).

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

8 февраля 2023 г.

Выпущены androidx.tv:tv-foundation:1.0.0-alpha04 и androidx.tv:tv-material:1.0.0-alpha04 . Версия 1.0.0-alpha04 содержит эти коммиты.

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

  • В ленивых строках, столбцах и сетках при необходимости ось переопределяется, чтобы обеспечить видимость всего элемента. ( 11d7e40 )
  • Добавьте настройку цветов вкладок в разных состояниях. ( 21b2925 )
  • Карусель теперь поддерживает пользовательскую анимацию для ручной прокрутки вперед и назад. ( 431494а )

Изменения API

  • Переименование androidx.tv.material в androidx.tv.material3 и выравнивание структуры пакета под androidx.tv.material3 . ( I6ca52 )
  • Индикатор в строке индикатора карусели теперь представляет собой слот, который разработчик может настроить. ( 268af2a )
  • focusableItem переименован в immersiveListItem . Пользователям придется вручную добавить модификатор focusable() или clickable() вместе с immersiveListItem ( 5dd5078 ) ( b/263061052 ).
  • timeToDisplayMillis переименован в autoScrollDurationMillis в компоненте Carousel. ( 431494а )
  • CarouselItem теперь можно использовать только в Carousel . ( 431494а )
  • Carousel теперь принимает ContentTransforms в качестве определения анимации вместо EnterTransition и ExitTransitions . ( 431494а )
  • Представлен API PinnableContainer , распространяемый ленивыми списками через локальную композицию, которая позволяет закреплять текущий элемент. ( Ib8881 , б / 259274257 , б / 195049010 )
  • Добавлено свойство mainAxisItemSpacing в TvLazyListLayoutInfo и TvLazyGridLayoutInfo ( I37765 ).

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

  • Обновите строку табуляции, чтобы убедиться, что она правильно обрабатывает количество вкладок 0 или 1. ( I44009 ), ( 1c01525 ), ( б/264018028 )
  • Исправлен сбой при поиске фокуса, когда TvLazyColumn содержит пустой TvLazyRow . ( e11b4fe ), ( б/260299091 )
  • Модификатор, clickable теперь работает с ImmersiveList . ( 5дд5078 ), ( б/263061052 )
  • Клавиша «Назад» теперь обрабатывается и используется для выхода из избранной карусели. ( 84c138c )
  • Карусель не теряет фокуса при многократном быстром нажатии клавиш. ( 799489ф )
  • Карусель не теряет фокуса при длительных нажатиях клавиш. ( b2cf37e )
  • Устранены сбои при изменении количества слайдов в карусели. ( б261247 )

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

7 декабря 2022 г.

Выпущены androidx.tv:tv-foundation:1.0.0-alpha03 и androidx.tv:tv-material:1.0.0-alpha03 . Версия 1.0.0-alpha03 содержит эти коммиты.

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

  • TabRow теперь доступен в виде экспериментального API, позволяющего пользователям добавлять верхние панели навигации в свои приложения. Обычно телевизионные устройства ожидают загрузки вкладок, когда заголовок вкладки находится в фокусе в строке вкладок.
  • Индикаторы, специфичные для телевизора, такие как индикатор подчеркивания и индикатор таблетки, предлагаются сразу из коробки. Примеры использования можно найти в телевизионных примерах.

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

9 ноября 2022 г.

Выпущены androidx.tv:tv-foundation:1.0.0-alpha02 и androidx.tv:tv-material:1.0.0-alpha02 . Версия 1.0.0-alpha02 содержит эти коммиты.

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

  • Улучшена производительность прокрутки при прокрутке коллекции TvLazyRows/TvLazyColumns за счет уменьшения пространства поиска фокуса. ( I723a3 ).

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

5 октября 2022 г.

Выпущены androidx.tv:tv-foundation:1.0.0-alpha01 и androidx.tv:tv-material:1.0.0-alpha01 . Версия 1.0.0-alpha01 содержит эти коммиты.

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

Первая альфа-версия содержит ранние предварительные реализации компонентов для сценариев использования ТВ, в том числе:

  • Добавлен модификатор scrollableWithPivot , позволяющий контейнерам с неленивой прокруткой, таким как Row, Column, Grid, заставлять контейнер прокрутки прокручивать содержимое так, чтобы элемент в фокусе оставался в том же положении на экране телевизора.
  • Добавление составных элементов TvLazyRow , TvLazyColumn , TvLazyHorizontalGrid , TvLazyVerticalGrid , чтобы контейнер прокрутки прокручивал содержимое так, чтобы элемент в фокусе оставался в том же положении на экране телевизора.
  • Добавлена ​​возможность компоновки избранной карусели для телевидения, которая позволяет пользователю создавать карусель баннеров с автоматической прокруткой.
  • Добавление компонуемого иммерсивного списка для ТВ, который позволяет пользователю создавать иммерсивную строку/столбец/сетку, которая меняет фон в зависимости от элемента списка, находящегося в фокусе.

Известные вопросы

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