тв

Предоставляет разработчикам функции Compose и Material Design для написания приложений для ТВ.
Последнее обновление Стабильный релиз Кандидат на релиз Бета-версия Альфа-релиз
16 июля 2025 г. 1.0.1 - - 1.1.0-альфа01

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

Чтобы добавить зависимости от tv-foundation и tv-material, необходимо добавить репозиторий Google Maven в свой проект. Подробнее см. в репозитории Google Maven .

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

Groovy

dependencies {
    implementation "androidx.tv:tv-foundation:1.0.0-alpha12"
    implementation "androidx.tv:tv-material:1.1.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.tv:tv-foundation:1.0.0-alpha12")
    implementation("androidx.tv:tv-material:1.1.0-alpha01")
}

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

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

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

Создать новый выпуск

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

Заметок о выпуске для этого артефакта нет.

ТВ-материалы Версия 1.1

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

15 января 2025 г.

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

Изменения API

  • Измените FocusEnterExitScope.cancelFocus() на cancelFocusChange() ( I89959 )
  • FocusProperties.enter и FocusProperties.exit были заменены на onEnter и onExit соответственно, используя область действия приемника вместо параметра FocusDirection . ( I6e667 )

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

  • CompositingStrategy.OffScreen перемещен из Surface в Text для устранения дрожания текста при масштабировании. ( I92b15f17 )
  • Исправлено некорректное управление фокусом в карусели ( Ie508b721375 ).
  • Поверхность (неинтерактивная) имеет упрощенную реализацию по сравнению с интерактивными. ( I7ea545150 )

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

Версия 1.0.1

16 июля 2025 г.

Выпущен androidx.tv:tv-material:1.0.1 . Версия 1.0.1 содержит следующие коммиты .

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

  • Обновлена высота NavigationDrawerItem для соответствия спецификациям. ( cf9a3ce )
  • Конфигурация стратегии компоновки перенесена из компоновки Surface в компоновку Text. Это исправляет ошибку, из-за которой Exoplayer не отображал компоновку Surface на более ранних версиях API Android. ( 9858ffb )

Версия 1.0.0

21 августа 2024 г.

Выпущен androidx.tv:tv-material:1.0.0 . Версия 1.0.0 — первый стабильный релиз androidx.tv:tv-material .

Версия 1.0.0-rc02

7 августа 2024 г.

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

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

  • Исправлена анимация дрожания текста в Surface Composable. ( 3163319 )

Версия 1.0.0-rc01

10 июля 2024 г.

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

Версия 1.0.0-beta01

1 мая 2024 г.

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

Изменения API

  • ColorScheme и его служебные функции теперь стабильны. ( If34fa )
  • LocalContentColor теперь стабилен ( I60ee2 )
  • API Typography теперь стабилен ( I088d6 )
  • API-интерфейсы Shapes теперь стабильны ( I0f5f4 )
  • API Border теперь стабилен ( I69281 )
  • API Glow теперь стабилен ( 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 можно было использовать синтаксис завершающих лямбда-выражений Kotlin. Теперь для передачи headlineContent придётся использовать синтаксис именованных параметров.
  • LocalAbsoluteTonalElevation теперь является внутренним ( Ibfc65 )
  • Компонент ImmersiveList был удалён. Ознакомьтесь с этим примером , чтобы узнать, как создать его самостоятельно. ( Id48da )
  • Компоненты tv-material, предоставляющие MutableInteractionSource в своём API, были обновлены и теперь предоставляют MutableInteractionSource , допускающий значение NULL, который по умолчанию равен NULL. Семантических изменений здесь нет: передача NULL означает, что вы не хотите поднимать MutableInteractionSource , и он будет создан внутри компонента при необходимости. Изменение на NULL позволяет некоторым компонентам никогда не выделять MutableInteractionSource , а другим компонентам создавать экземпляр только по мере необходимости, что повышает производительность этих компонентов. Если вы не используете MutableInteractionSource , передаваемый этим компонентам, рекомендуется передавать вместо него NULL. Также рекомендуется внести аналогичные изменения в ваши собственные компоненты. ( I309b4 , b/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-альфа12

15 января 2025 г.

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

Изменения API

  • Очистка ленивых макетов в tv-foundation. Чтобы отказаться от ленивых макетов tv-foundation, см. примечания к выпуску 1.0.0-alpha11. ( I2fdd3 , b/358913893 )

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

10 июля 2024 г.

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

Изменения API

  • Лайтинговые макеты TV Lazy Layouts устарели в библиотеке tv-foundation. Чтобы узнать, как отказаться от ленивых макетов TV Lazy Layouts, обратитесь к этому тикету . ( I0855f , b/332674072 )
  • PlatformImeOptions теперь является конкретным классом, а не интерфейсом. ( If40a4 )

Версия 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 )
  • Исправлена проблема с отображением холста в панели навигации поверх фонового содержимого, а не за ним. ( 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 , b/252846775 )
  • Синхронизировать tv-foundation fork с compose-foundation. ( I737c3 , b/287011882 )
  • Добавлена перегрузка LazyLayout , которая принимает лямбда-функцию LazyLayoutItemProvider , а не простой объект, как раньше. Предыдущая перегрузка устарела. ( I42a5a )
  • Добавьте TvKeyboardAlignment , чтобы позволить разработчику настраивать положение экранной клавиатуры через AndroidImeOptions . ( Idb772 )
  • Добавьте rememberCarouselState , чтобы запомнить CarouselState с помощью Saver для создания телевизионного материала. ( 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 Material. ( 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

  • Индикация масштаба компонентов теперь включает значение None, отключающее масштабирование. ( I50df5 )
  • Добавлена поддержка длительного нажатия для поверхности ТВ-материалов, карт и кнопок. ( Id2b89 )
  • CarouselItem и CarouselScope удалены. Анимацию содержимого переднего плана можно реализовать в слайде с помощью Modifier.animateEnterExit из AnimatedContentScope . ( Ic038e )
  • Объединены параметры color и contentColor в качестве colors для поверхности ТВ-материала. ( Ie69eb )
  • Введена возможность компоновки RadioButton в TV Material. ( 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, оптимизированные для ТВ.
    • Базовая карта ( I5b701 )
    • ClassicCard , CompactCard и WideClassicCard ( I70471 )
    • StandardCardLayout и WideCardLayout ( I33fae )
  • Добавьте реализацию кнопок Material 3, оптимизированную для ТВ.
    • Базовая кнопка ( 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

  • Представляем компонуемый элемент Side Navigation Drawer в tv-material . Чтобы узнать, как использовать этот компонуемый элемент, обратитесь к примерам ( I12c08 ).
  • Представляем иконку, которую можно компоновать в TV Material 3 ( I72db9 )
  • Представляем Surface, компонуемую в tv-material с такими признаками, как Border, Glow и Scale, которые можно использовать для создания компонентов, четко выделяющих сфокусированный элемент на экране телевизора. ( 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 )
  • Карусель теперь поддерживает пользовательские анимации для ручной прокрутки вперед и назад. ( 431494a )

Изменения API

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

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

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

Версия 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, позволяющего пользователям добавлять в свои приложения верхние панели навигации. Как правило, телевизоры ожидают, что вкладки будут загружаться, когда фокус находится на заголовке вкладки в строке вкладок.
  • Специальные индикаторы для телевизоров, такие как индикатор подчёркивания и индикатор таблеток, доступны в комплекте поставки. Примеры использования можно найти в разделе «TV-Samples».

Версия 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 позволяет прокручивающемуся контейнеру прокручивать содержимое так, чтобы элемент в фокусе оставался в том же положении на экране телевизора.
  • Добавлена компоновка рекомендуемой карусели для ТВ, которая позволяет пользователю создавать автоматически прокручивающуюся карусель баннеров.
  • Добавление компонуемого списка Immersive для ТВ, который позволяет пользователю создавать строку/столбец/сетку Immersive, меняющую фон в зависимости от элемента списка, находящегося в фокусе.

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

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