电视

  
为开发者提供 Compose 和 Material Design 功能,以便为电视编写应用。
最新更新 稳定版 候选版 Beta 版 Alpha 版
2024 年 8 月 21 日 1.0.0 - - -

声明依赖项

要添加对 tv-foundation 和 tv-material 的依赖项,您必须将 Google Maven 存储库添加到您的项目中。阅读Google 的 Maven 存储库以了解更多信息。

在应用或模块的 build.gradle 文件中添加所需工件的依赖项

Groovy

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

Kotlin

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

有关依赖项的更多信息,请参阅添加构建依赖项

反馈

您的反馈有助于改进 Jetpack。如果您发现新的问题或有改进此库的想法,请告知我们。在创建新问题之前,请查看此库中现有问题。您可以通过点击星形按钮为现有问题添加您的投票。

创建新问题

有关更多信息,请参阅问题跟踪器文档

此工件没有发布说明。

Tv-Material 版本 1.0

版本 1.0.0

2024 年 8 月 21 日

androidx.tv:tv-material:1.0.0 已发布。版本 1.0.0 是 androidx.tv:tv-material 的第一个稳定版本。

版本 1.0.0-rc02

2024 年 8 月 7 日

androidx.tv:tv-material:1.0.0-rc02 已发布。版本 1.0.0-rc02 包含这些提交

错误修复

  • 修复了 Surface 可组合组件中的文本动画抖动问题。(3163319

版本 1.0.0-rc01

2024 年 7 月 10 日

androidx.tv:tv-material:1.0.0-rc01 已发布。版本 1.0.0-rc01 包含这些提交

版本 1.0.0-beta01

2024 年 5 月 1 日

androidx.tv:tv-material:1.0.0-beta01 已发布。版本 1.0.0-beta01 包含这些提交

API 更改

  • ColorScheme 及其实用程序函数现已稳定。(If34fa
  • LocalContentColor 现已稳定(I60ee2
  • Typography API 现已稳定(I088d6
  • 形状 API 现已稳定(I0f5f4
  • 边框 API 现已稳定(I69281
  • 发光 API 现已稳定(Iea5f1
  • 图标组件现已稳定(I62c2d
  • LocalTextStyles API 现已稳定(Iaded8
  • MaterialTheme API 现已稳定(I2f541
  • 文本组件现已稳定(Ib9e31
  • RadioButton 组件现已稳定(Ia03c8
  • 开关组件现已稳定(I6cea3
  • Checkbox 组件现已稳定(I7eafc
  • 表面组件现已稳定(I58758I04aca
  • NonInteractiveSurfaceDefaults 重命名为 SurfaceDefaults,并将 NonInteractiveSurfaceColors 重命名为 SurfaceColorsI0812e
  • 可选择的表面现在使用“select”术语代替“check”,因为它们具有不同的语义含义(I5a206
  • NavigationDrawerNavigationDrawerScope 现已稳定(I249c1
  • NavigationDrawerItem 组件现已稳定(Id6986
  • Tab 和 TabRow 组件现已稳定(I92d92
  • ButtonOutlinedButtonIconButtonOutlinedIconButtonWideButton 组件现已稳定(Ib4de8
  • CardClassicCardCompactCardWideClassicCardStandardCardContainerWideCardContainer 组件现已稳定(I34390
  • StandardCardLayout 重命名为 StandardCardContainer,并将 WideCardLayout 重命名为 WideCardContainerI08883
  • 已删除 CardContainerDefaults.ImageCard,并将 CardDefaults.ContainerGradient 重命名为 CardDefaults.ScrimBrushI6adfe)。您可以在卡片容器中使用 Card 代替 CardContainerDefaults.ImageCard
  • ListItemDenseListItem 现已稳定(Idebd9
  • ListItemDefaults.ListItemShapeListItemDefaults.FocusedDisabledBorderListItemDefaults.SelectedContainerColorOpacity 现在是私有的(I5d533
  • 重新排列了 ListItem 的参数,并将 ListItemDefaults.ListItemElevation 重命名为 ListItemDefaults.TonalElevationId6841)。headlineContent 参数已移动到可组合组件的顶部。之前,您可以使用 Kotlin 的尾随 lambda 语法传递 headlineContent。现在,您必须使用命名参数语法来提供 headlineContent
  • LocalAbsoluteTonalElevation 现在是内部的(Ibfc65
  • 已删除 ImmersiveList 组件。请查看此示例,了解如何自己构建它。(Id48da
  • 在 API 中公开 MutableInteractionSource 的 tv-material 组件已更新为现在公开一个默认为 null 的可空 MutableInteractionSource。这里没有语义更改:传递 null 表示您不希望提升 MutableInteractionSource,并且如果需要,它将在组件内部创建。更改为 null 允许某些组件永远不会分配 MutableInteractionSource,并允许其他组件仅在需要时延迟创建实例,从而提高了这些组件的性能。如果您没有使用传递给这些组件的 MutableInteractionSource,建议您传递 null。还建议您在您自己的组件中进行类似的更改。(I309b4b/298048146
  • TV 文本组件的 TextAlign 参数现在是非空的(Ib73b1b/299490814
  • TextAlignTextDirectionHyphensLineBreak 字段引入了 ParagraphTextStyle 的特殊未指定值以替换(I4197eb/299490814

行为更改

  • 非交互式 Surfaceshape 参数的默认值已更改为 RectangleShapeI1b859cb
  • 由于必要的 API 处于实验阶段,因此某些轮播功能已在 Beta 版发布中删除(I0e755d4
  • Surface 中更改 contentColor 不会再在状态之间进行动画切换(I436e794f

版本 1.0.0

版本 1.0.0-alpha11

2024 年 7 月 10 日

androidx.tv:tv-foundation:1.0.0-alpha11 已发布。版本 1.0.0-alpha11 包含这些提交

API 更改

  • Tv Lazy 布局已从 tv-foundation 库中弃用。请参阅此工单,了解如何从 tv lazy 布局迁移。(I0855fb/332674072
  • PlatformImeOptions 现在是具体类而不是接口。(If40a4

版本 1.0.0-alpha10

2023 年 10 月 4 日

androidx.tv:tv-foundation:1.0.0-alpha10androidx.tv:tv-material:1.0.0-alpha10 已发布。版本 1.0.0-alpha10 包含这些提交。

新功能

  • 引入了 NavigationDrawerItem,可在 NavigationDrawerModalNavigationDrawer 中使用。(I4b491
  • 将基线配置文件添加到 tv-foundation 库。(2b57fd7
  • 将基线配置文件添加到 tv-material 库。(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-alpha09

2023年9月6日

androidx.tv:tv-foundation:1.0.0-alpha09androidx.tv:tv-material:1.0.0-alpha09 已发布。 版本 1.0.0-alpha09 包含这些提交。

API 更改

  • 添加 ReusableComposition 接口用于管理子组合的生命周期和重用。(I812d1, b/252846775)
  • 将 tv-foundation 分支与 compose-foundation 同步。(I737c3, b/287011882)
  • LazyLayout 添加了重载,它接受 LazyLayoutItemProvider 的 lambda 表达式,而不是像以前一样接受普通对象。之前的重载已弃用。(I42a5a)
  • 添加 TvKeyboardAlignment 以允许开发者通过 AndroidImeOptions 配置屏幕键盘位置。(Idb772)
  • rememberCarouselState 添加到 TV Compose Material 中,用于使用 Saver 记住 CarouselState。(Id7275)
  • scrimColor: Color 参数更改为 scrimBrush:Brush 参数,以允许用户向遮罩层添加渐变。(I254d4)

版本 1.0.0-alpha08

2023年7月26日

androidx.tv:tv-foundation:1.0.0-alpha08androidx.tv:tv-material:1.0.0-alpha08 已发布。 版本 1.0.0-alpha08 包含这些提交。

新功能

  • 为 Compose for TV Material 引入 Chip 组件。(I86da4)
  • ListItem 组件添加到 TV Compose Material 中。(I3f0b3)
  • DenseListItem 组件添加到 TV Compose Material 中。(I536bf)

API 更改

  • 将公共 tv-material API 标记为 Experimental。(I632e7)
  • 引入 TabRowScope 以共享 TabRow 可组合项与 Tab 可组合项的状态,并重命名 TabColors 属性。(Ief587)

版本 1.0.0-alpha07

2023年6月7日

androidx.tv:tv-foundation:1.0.0-alpha07androidx.tv:tv-material:1.0.0-alpha07 已发布。 版本 1.0.0-alpha07 包含这些提交。

API 更改

  • 组件的缩放指示现在包括 None 以禁用缩放。(I50df5)
  • 为 TV Material Surface、卡片和按钮添加了长按支持。(Id2b89)
  • CarouselItemCarouselScope 已删除。可以通过使用 AnimatedContentScope 中的 Modifier.animateEnterExit 在滑动中实现前景色动画。(Ic038e)
  • 将 TV Material Surface 的 colorcontentColor 参数合并为 colors。(Ie69eb)
  • 在 TV Material 中引入 RadioButton 可组合项。(I08690)
  • 在 TV Material 中引入 Switch 可组合项。(I45e29)
  • 在 TV Material 中引入 Checkbox 可组合项。(I6a45a)
  • 在 TV Material 中引入不可交互的 Surface。(Ic5f85)
  • 将指示器设为内部使用。(Ibff82)

版本 1.0.0-alpha06

2023年4月19日

androidx.tv:tv-foundation:1.0.0-alpha06androidx.tv:tv-material:1.0.0-alpha06 已发布。 版本 1.0.0-alpha06 包含这些提交。

新功能

  • 添加针对电视优化的 Material 3 卡片实现。
    • 基本卡片 (I5b701)
    • ClassicCardCompactCardWideClassicCard (I70471)
    • StandardCardLayoutWideCardLayout (I33fae)
  • 添加针对电视优化的 Material 3 按钮实现。

API 更改

  • CarouselSlideslideCountCarousel 中重命名为 CarouselItemitemCount。(Ie554c)
  • forwardbackward ContentTransforms 重命名为 StartToEndEndToStart。(Ie554c)

错误修复

  • NavigationDrawer 上聚焦时处理后退 DPAD 按钮。(d654f4)

版本 1.0.0-alpha05

2023年3月22日

androidx.tv:tv-foundation:1.0.0-alpha05androidx.tv:tv-material:1.0.0-alpha05 已发布。 版本 1.0.0-alpha05 包含这些提交。

API 更改

  • 将侧边导航抽屉可组合项引入 tv-material。要了解如何使用此可组合项,请参阅 示例。(I12c08)
  • 在 TV Material 3 中引入 Icon 可组合项 (I72db9)
  • 将 Surface 可组合项引入 tv-material,并包含边框、辉光和缩放等指示,可用于构建在电视屏幕上清晰突出显示焦点元素的组件。(I4a6d8)、(Iceea1)、(Iee4d4)、(I79edf)、(Icb376)
  • CarouselItem 更新为 CarouselSlide 以匹配“Carousel”API 中的 slideCount 参数名称 (Ic4299)

版本 1.0.0-alpha04

2023年2月8日

androidx.tv:tv-foundation:1.0.0-alpha04androidx.tv:tv-material:1.0.0-alpha04 已发布。 版本 1.0.0-alpha04 包含这些提交。

新功能

  • 在惰性行、列和网格中,如有必要,将覆盖轴心点以确保整个项目都进入视图。(11d7e40)
  • 添加选项卡在不同状态下的颜色自定义。(21b2925)
  • Carousel 现在接受用于向前和向后手动滚动的自定义动画。(431494a)

API 更改

  • androidx.tv.material 重命名为 androidx.tv.material3,并在 androidx.tv.material3 下扁平化包结构。(I6ca52)
  • Carousel 指示器行内的指示器现在是一个插槽,开发者可以自定义它。(268af2a)
  • focusableItem 重命名为 immersiveListItem。用户需要手动添加 focusable()clickable() 修饰符以及 immersiveListItem (5dd5078)(b/263061052)
  • 将 Carousel 组件中的 timeToDisplayMillis 重命名为 autoScrollDurationMillis。(431494a)
  • CarouselItem 现在仅限在 Carousel 中使用。(431494a)
  • Carousel 现在接受 ContentTransforms 作为动画定义,而不是 EnterTransitionExitTransitions。(431494a)
  • 引入 PinnableContainer api,通过组合本地传播到惰性列表,允许固定当前项目。(Ib8881, b/259274257, b/195049010)
  • mainAxisItemSpacing 属性添加到 TvLazyListLayoutInfoTvLazyGridLayoutInfo (I37765)

错误修复

  • 更新 tab-row 以确保它正确处理 tab 数量为 0 或 1 的情况。(I44009)、(1c01525)、(b/264018028)
  • 修复 TvLazyColumn 包含空 TvLazyRow 时焦点搜索崩溃的问题。(e11b4fe)、(b/260299091)
  • 现在 clickable 修饰符可与 ImmersiveList 配合使用。(5dd5078)、(b/263061052)
  • 现在已处理后退键,并将其用于退出特色轮播。(84c138c)
  • Carousel 在多次快速按键时不会失去焦点。(799489f)

  • 旋转木马在长时间按键时不会失去焦点。(b2cf37e
  • 解决了旋转木马幻灯片数量发生变化时发生的崩溃问题。(b261247

版本 1.0.0-alpha03

2022 年 12 月 7 日

androidx.tv:tv-foundation:1.0.0-alpha03androidx.tv:tv-material:1.0.0-alpha03 已发布。 版本 1.0.0-alpha03 包含这些提交。

新功能

  • TabRow 现已作为实验性 API 提供,允许用户向其应用添加顶部导航栏。通常,电视设备期望在选项卡行中聚焦于选项卡标题时加载选项卡。
  • 开箱即用地提供了特定于电视的指示器,例如下划线指示器和药丸指示器。可以在 tv-samples 中找到示例用法

版本 1.0.0-alpha02

2022 年 11 月 9 日

androidx.tv:tv-foundation:1.0.0-alpha02androidx.tv:tv-material:1.0.0-alpha02 已发布。 版本 1.0.0-alpha02 包含这些提交。

错误修复

  • 通过减少焦点搜索范围,提高了滚动浏览 TvLazyRows/TvLazyColumns 集合时的滚动性能。(I723a3

版本 1.0.0-alpha01

2022 年 10 月 5 日

androidx.tv:tv-foundation:1.0.0-alpha01androidx.tv:tv-material:1.0.0-alpha01 已发布。 版本 1.0.0-alpha01 包含这些提交。

新功能

第一个 alpha 版本包含针对电视用例的组件的早期预览实现,包括

  • 添加修饰符 scrollableWithPivot 以允许非延迟滚动容器(如 Row、Column、Grid)滚动内容,以便聚焦的项目在电视屏幕上的位置保持不变。
  • 添加可组合项 TvLazyRowTvLazyColumnTvLazyHorizontalGridTvLazyVerticalGrid 以允许滚动容器滚动内容,以便聚焦的项目在电视屏幕上的位置保持不变。
  • 添加适用于电视的 Featured Carousel 可组合项,允许用户创建自动滚动的横幅轮播。
  • 添加适用于电视的 Immersive List 可组合项,允许用户创建沉浸式 Row/Column/Grid,该列表根据聚焦的列表项更改背景。

已知问题

  • 当滚动容器获得焦点时,第一个元素默认不会获得焦点。
  • 聚焦于 TextField 并不总是会打开键盘,或者可能会阻止焦点移动到其他字段。
  • 在包含 LazyRowsLazyColumn 中垂直滚动性能较差。