电视
最新更新 | 稳定版 | 发布候选版 | 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)Typography
API 现已稳定 (I088d6)- Shapes API 现已稳定 (I0f5f4)
- Border API 现已稳定 (I69281)
- Glow API 现已稳定 (Iea5f1)
- Icon 组件现已稳定 (I62c2d)
LocalTextStyles
API 现已稳定 (Iaded8)MaterialTheme
API 现已稳定 (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
和backward
ContentTransforms
重命名为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) - 引入了
PinnableContainer
API,通过组合局部变量由 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
中垂直滚动时性能较差。