电视
| 最新更新 | 稳定版 | 发布候选版 | Beta 版 | Alpha 版 |
|---|---|---|---|---|
| 2025 年 1 月 15 日 | 1.0.0 | - | - | 1.1.0-alpha01 |
声明依赖项
要添加对 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。如果您发现新问题或对改进此库有任何想法,请告诉我们。在创建新问题之前,请查看此库中的现有问题。您可以通过点击星形按钮为您已有的问题投票。
有关更多信息,请参阅问题跟踪器文档。
此工件没有发布说明。
Tv-Material 版本 1.1
版本 1.1.0-alpha01
2025 年 1 月 15 日
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)
Bug 修复
- 将
CompositingStrategy.OffScreen从 Surface 移到 Text 以修复缩放时文本抖动的问题。 (I92b15f17) - 修复了 Carousel 中损坏的焦点管理 (Ie508b721375)
- Surface(非交互式)与交互式 Surface 相比,实现更简单。 (I7ea545150)
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 包含这些提交。
Bug 修复
- 修复了 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)TypographyAPI 现已稳定 (I088d6)- Shapes API 现已稳定 (I0f5f4)
- Border API 现已稳定 (I69281)
- Glow API 现已稳定 (Iea5f1)
- Icon 组件现已稳定 (I62c2d)
LocalTextStylesAPI 现已稳定 (Iaded8)MaterialThemeAPI 现已稳定 (I2f541)- Text 组件现已稳定 (Ib9e31)
RadioButton组件现已稳定 (Ia03c8)- Switch 组件现已稳定 (I6cea3)
Checkbox组件现已稳定 (I7eafc)- Surface 组件现已稳定 (I58758, I04aca)
- 将
NonInteractiveSurfaceDefaults重命名为SurfaceDefaults,将NonInteractiveSurfaceColors重命名为SurfaceColors(I0812e) - Selectable Surface 现在使用“select”术语而不是“check”,因为它们具有不同的语义含义 (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参数已移至可组合项的顶部。之前,您可以使用 Kotlin 的尾随 lambda 语法传递headlineContent。现在,您需要使用命名参数语法提供headlineContent。 LocalAbsoluteTonalElevation现为内部使用 (Ibfc65)ImmersiveList组件已被移除。请查看此示例以了解如何自行构建。 (Id48da)- 在 API 中公开
MutableInteractionSource的 tv-material 组件已更新为现在公开可为空的MutableInteractionSource,其默认值为 null。这里没有语义上的变化:传递 null 意味着您不想提升MutableInteractionSource,如果需要,它将在组件内部创建。更改为 null 允许某些组件永远不分配MutableInteractionSource,并允许其他组件仅在需要时才懒惰地创建实例,这提高了这些组件的性能。如果您不使用传递给这些组件的MutableInteractionSource,建议您改为传递 null。还建议您在自己的组件中进行类似的更改。 (I309b4, b/298048146) - TV Text 组件的
TextAlign参数现在是非 null (Ib73b1, b/299490814) - 引入了
ParagraphTextStyle的TextAlign、TextDirection、Hyphens和LineBreak字段的特殊 Unspecified 值以替换 (I4197e, b/299490814)
行为变更
- 非交互式
Surface的shape参数的默认值已更改为RectangleShape(I1b859cb) - 由于必要的 API 仍处于实验阶段,Carousel 的某些功能已在 Beta 版发布中删除 (I0e755d4)
- 更改
Surface中的contentColor不再在状态之间进行动画处理 (I436e794f)
版本 1.0.0
版本 1.0.0-alpha12
2025 年 1 月 15 日
androidx.tv:tv-foundation:1.0.0-alpha12 已发布。版本 1.0.0-alpha12 包含这些提交。
API 变更
- 清理 tv-foundation 中的 lazy layouts。请参阅 1.0.0-alpha11 发布说明,以从 tv-foundation lazy layouts 迁移。 (I2fdd3, b/358913893)
版本 1.0.0-alpha11
2024 年 7 月 10 日
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-alpha10
2023 年 10 月 4 日
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)
- 向 tv-material 库添加基准配置文件。 (1711ff5)
API 变更
- 将
NavigationDrawerScope.doesTabRowHaveFocus重命名为NavigationDrawerScope.hasFocus。 (I8286b) - 将
TabRowScope.isActivated重命名为TabRowScope.hasFocus。 (Ic4273)
Bug 修复
- 修复 Carousel 与使用焦点恢复器 API 的相邻项的兼容性。 (7b2a7a4)
- 禁用 API_LEVEL 低于 28 的发光指示,因为它不受操作系统支持。 (6d3616f)
- 修复快速反向滚动时,lazy 容器中项目放置不当导致的 ANR 崩溃。 (642d65c)
- 移除了 Modal Navigation Drawer 中的背景填充。 (69965b2)
- 修复 Navigation Drawer 中的背景层,使其绘制在背景内容之上而不是后面。 (d4bbefb)
版本 1.0.0-alpha09
2023 年 9 月 6 日
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的 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-alpha08 和 androidx.tv:tv-material:1.0.0-alpha08 已发布。版本 1.0.0-alpha08 包含这些提交。
新功能
- 引入了用于 Compose for TV material 的 Chip 组件。 (I86da4)
- 向 TV Compose Material 添加
ListItem组件。 (I3f0b3) - 向 TV Compose Material 添加
DenseListItem组件。 (I536bf)
API 变更
- 将公共 tv-material API 标记为实验性。 (I632e7)
- 引入了
TabRowScope以便在TabRow可组合项中与 Tab 可组合项共享状态,并重命名了TabColors属性。 (Ief587)
版本 1.0.0-alpha07
2023 年 6 月 7 日
androidx.tv:tv-foundation:1.0.0-alpha07 和 androidx.tv:tv-material:1.0.0-alpha07 已发布。版本 1.0.0-alpha07 包含这些提交。
API 变更
- 组件的缩放指示现在包含 None 以禁用缩放。 (I50df5)
- 为 TV Material Surface、Cards 和 Buttons 添加了长按支持。 (Id2b89)
CarouselItem和CarouselScope已被移除。前景内容动画可以通过在幻灯片中使用来自AnimatedContentScope的Modifier.animateEnterExit来实现。 (Ic038e)- 将 TV Material Surface 的
color和contentColor参数合并为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-alpha06 和 androidx.tv:tv-material:1.0.0-alpha06 已发布。版本 1.0.0-alpha06 包含这些提交。
新功能
- 添加了针对电视优化的 Material 3 Card 实现。
- 添加了针对电视优化的 Material 3 Button 实现。
API 变更
- 将
Carousel中的CarouselSlide和slideCount重命名为CarouselItem和itemCount。 (Ie554c) - 将
forward和backwardContentTransforms重命名为StartToEnd和EndToStart。 (Ie554c)
Bug 修复
- 当焦点位于
NavigationDrawer上时,处理返回 DPAD 按钮。 (d654f4)
版本 1.0.0-alpha05
2023 年 3 月 22 日
androidx.tv:tv-foundation:1.0.0-alpha05 和 androidx.tv:tv-material:1.0.0-alpha05 已发布。版本 1.0.0-alpha05 包含这些提交。
API 变更
- 在
tv-material中引入了 Side Navigation Drawer 可组合项。要了解如何使用此可组合项,请参阅示例。 (I12c08) - 在 TV Material 3 中引入 Icon 可组合项 (I72db9)
- 在
tv-material中引入了 Surface 可组合项,带有 Border、Glow 和 Scale 等指示,可用于构建能够清晰突出电视屏幕上焦点元素的组件。 (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-alpha04 和 androidx.tv:tv-material:1.0.0-alpha04 已发布。版本 1.0.0-alpha04 包含这些提交。
新功能
- 在 lazy 行、列和网格中,如有必要,会覆盖枢轴,以确保整个项目都显示在视图中。 (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作为动画定义,而不是EnterTransition和ExitTransitions。 (431494a) - 引入了
PinnableContainerAPI,通过组合局部变量由 lazy 列表传播,允许固定当前项目。 (Ib8881, b/259274257, b/195049010) - 为
TvLazyListLayoutInfo和TvLazyGridLayoutInfo添加了mainAxisItemSpacing属性 (I37765)
Bug 修复
- 更新 tab-row 以确保其正确处理 tab-count 为 0 或 1 的情况。 (I44009), (1c01525), (b/264018028)
- 修复当
TvLazyColumn包含空的TvLazyRow时,焦点搜索崩溃的问题。 (e11b4fe), (b/260299091) clickable修饰符现在可与ImmersiveList配合使用。 (5dd5078), (b/263061052)- 现在处理返回键并用于退出特色 Carousel。 (84c138c)
- Carousel 在多次快速按键时不会失去焦点。 (799489f)
- Carousel 在长按时不会失去焦点。 (b2cf37e)
- 解决了 Carousel 幻灯片计数更改时的崩溃问题。 (b261247)
版本 1.0.0-alpha03
2022 年 12 月 7 日
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-alpha02
2022 年 11 月 9 日
androidx.tv:tv-foundation:1.0.0-alpha02 和 androidx.tv:tv-material:1.0.0-alpha02 已发布。版本 1.0.0-alpha02 包含这些提交。
Bug 修复
- 通过减少焦点搜索空间,提高了滚动通过
TvLazyRows/TvLazyColumns集合时的滚动性能。(I723a3)
版本 1.0.0-alpha01
2022 年 10 月 5 日
androidx.tv:tv-foundation:1.0.0-alpha01 和 androidx.tv:tv-material:1.0.0-alpha01 已发布。版本 1.0.0-alpha01 包含这些提交。
新功能
第一个 Alpha 版包含电视用例的早期预览实现组件,包括
- 添加修饰符
scrollableWithPivot,以允许非 lazy 滚动容器(如 Row、Column、Grid)滚动内容,使焦点项在电视屏幕上的位置保持不变。 - 添加可组合项
TvLazyRow、TvLazyColumn、TvLazyHorizontalGrid、TvLazyVerticalGrid,使滚动容器滚动内容,从而使焦点项在电视屏幕上的位置保持不变。 - 为 TV 添加了 Featured Carousel 可组合项,允许用户创建自动滚动的横幅 Carousel。
- 为 TV 添加了 Immersive List 可组合项,允许用户创建 Immersive Row/Column/Grid,其背景会根据焦点列表项进行更改。
已知问题
- 当滚动容器获得焦点时,第一个元素默认不会获得焦点。
- 聚焦
TextField不总是会打开键盘,或者可能会阻止焦点移动到其他字段。 - 在包含
LazyRows的LazyColumn中垂直滚动时性能较差。