电视

  
为开发人员提供 Compose 和 Material 设计功能,以便他们为电视编写应用程序
最新更新 稳定版 发布候选版 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
  • 可选择表面现在使用“选择”术语,而不是“选中”,因为它们都具有不同的语义含义(I5a206
  • NavigationDrawerNavigationDrawerScope 现已稳定(I249c1
  • NavigationDrawerItem 组件现已稳定(Id6986
  • 标签和 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
  • tv-material 组件在 API 中公开 MutableInteractionSource 的已更新为现在公开一个可为空的 MutableInteractionSource,默认值为 null。这里没有语义变化:传递 null 表示您不希望提升 MutableInteractionSource,如果需要,它将在组件内部创建。更改为 null 允许某些组件永远不会分配 MutableInteractionSource,并允许其他组件仅在需要时才懒惰地创建实例,这提高了这些组件的性能。如果您不使用传递给这些组件的 MutableInteractionSource,建议您传递 null。还建议您在自己的组件中进行类似的更改。(I309b4b/298048146
  • TV 文本组件的 TextAlign 参数现在是非空的(Ib73b1b/299490814
  • TextAlignTextDirectionHyphensLineBreak 引入了特殊的未指定值,用于替换 ParagraphTextStyle 的字段(I4197eb/299490814

行为变更

  • 非交互式 Surfaceshape 参数的默认值已更改为 RectangleShapeI1b859cb
  • 由于必要的 API 处于实验阶段,某些轮播功能已在测试版发布中删除(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 懒加载布局已从 tv-foundation 库中弃用。参考 此工单 以了解如何从 TV 懒加载布局迁移。(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 接口,用于管理子组合的生命周期和重用。(I812d1b/252846775
  • 将 tv-foundation 分支与 compose-foundation 同步。(I737c3b/287011882
  • 添加了 LazyLayout 的重载,它接受 LazyLayoutItemProvider 的 lambda,而不是像以前一样接受普通对象。之前的重载已弃用。(I42a5a
  • 添加了 TvKeyboardAlignment,允许开发人员通过 AndroidImeOptions 配置屏幕键盘位置。(Idb772
  • 添加了 rememberCarouselState,以便使用 Saver 在 TV Compose Material 中记住 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 引入了筹码组件。(I86da4
  • ListItem 组件添加到 TV Compose Material。(I3f0b3
  • DenseListItem 组件添加到 TV Compose Material。(I536bf

API 更改

  • 将公开的 tv-material API 标记为实验性。(I632e7
  • 引入了 TabRowScope,用于与 Tab 可组合组件共享来自 TabRow 可组合组件的状态,并重命名了 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 包含这些提交。

新功能

  • 添加为 TV 优化的 Material 3 卡片实现。
    • 基本卡片 (I5b701)
    • ClassicCardCompactCardWideClassicCard (I70471)
    • StandardCardLayoutWideCardLayout (I33fae)
  • 添加为 TV 优化的 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 中引入图标可组合项 (I72db9)
  • 将 Surface 可组合项引入 tv-material,其中包括边框、光晕和缩放等指示,可用于构建在 TV 屏幕上清晰突出显示焦点元素的组件。 (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,通过延迟列表通过一个组成本地传播,允许固定当前项目。 (Ib8881b/259274257b/195049010)
  • TvLazyListLayoutInfoTvLazyGridLayoutInfo 添加了 mainAxisItemSpacing 属性 (I37765)

错误修复

  • 更新选项卡行以确保它正确处理 0 或 1 个选项卡计数。 (I44009)、(1c01525)、(b/264018028)
  • 修复 TvLazyColumn 包含空 TvLazyRow 时发生的焦点搜索崩溃。 (e11b4fe)、(b/260299091)
  • clickable 修饰符现在适用于 ImmersiveList。 (5dd5078)、(b/263061052)
  • 后退键现在已处理,并用于退出精选轮播。 (84c138c)
  • Carousel 在多次快速按键时不会失去焦点。 (799489f)
  • Carousel 在长按键时不会失去焦点。 (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 设备期望在选项卡行中聚焦选项卡标题时加载选项卡。
  • TV 特定的指示器,如下划线指示器和药丸指示器,开箱即用。可以在 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 版本包含适用于 TV 用例的组件的早期预览实现,包括

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

已知问题

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