使用 LeanBack 支持库自定义 Android TV 界面

Posted

技术标签:

【中文标题】使用 LeanBack 支持库自定义 Android TV 界面【英文标题】:Customizing Android TV Interfaces With LeanBack Support Library 【发布时间】:2016-07-16 14:18:29 【问题描述】:

android TV 项目的leanback 支持库似乎是标准化电视体验的一项好工作。但是,我觉得它有点过于死板,并且限制了除了颜色方案等次要的定制之外。

我的问题:在不重写leanback 框架的关键部分的情况下,自定义诸如DetailsFragment 之类的屏幕最好、最有效的方法是什么?

背景信息

默认的详细信息屏幕如下所示:

一些我想做的事情:

    在 DetailsOverViewRow 下方放置一个或两个附加视图 (图片、标题/描述、操作按钮)显示额外信息 我们应用程序设计的独特之处(例如表情符号反应面板 和电影学分面板 - 主要是缩略图和名称文本 电影创作者的观点) 正确裁剪卡片缩略图以完全适合其图像视图。图像当前被剪裁,不像在浏览器屏幕卡片视图中它很好地适合卡片视图。库的xml layout file 定义了一个相当小的container size(固定 274dp 的高度),这可能就是为什么图像不是 正确裁剪

我的尝试

扩展 DetailsOverViewRowPresenter 以便能够扩展定义附加视图的自定义 XML 文件。不幸的是,这个类隐藏了它的关键初始化方法createRowViewHolder->private initDetailsOverview(ViewHolder vh),所以我不得不复制这些隐藏但关键的方法,这对我来说破坏了子类化的意义。有没有比重新创建这样的代码更好的方法? 注意:这种方法可能类似于此相关question 中发布的方法,但 OP 没有进一步详细说明。

【问题讨论】:

对于数字 1,我复制了来自 android leanback 库(AbstractDetailsDescriptionPresenter 类)提供的 Presenter,编辑了包括 xml 在内的一些部分,我使用我的类而不是来自leanback 的官方。但我正在使用 FullWidthDetailsOverviewRowPresenter。我猜它仍然相似 如果你解决了这个问题,能否分享一下你的解决方案? @khateeb 请在下面查看我的回答 【参考方案1】:

我最终没有实现详细信息屏幕。但看起来更新后的leanback 库现在支持某种程度的定制。 github 上的google-samples leanback project 是一个不错的起点。例如:VideoDetailsFragmentDetailsFragment 的子类。

此外,medium post 中讨论的其他自定义可能性也值得注意

【讨论】:

我已经浏览了示例。它显示了如何在概览演示器内部进行修改。我也想知道如何在它之外进行修改。你能回答我的这个问题吗:***.com/questions/47473310/…

以上是关于使用 LeanBack 支持库自定义 Android TV 界面的主要内容,如果未能解决你的问题,请参考以下文章

在 Leanback 中使用支持库中的字体

如何使用本机库自定义项目选择器的背景颜色

找不到资源:Theme.Leanback

SceneKit 与 Vuforia AR 库自定义模型

spring-data 存储库自定义查询

如何为新式体验文档库自定义 SharePoint Online 列/字段?