制作 Android TV 菜单的最佳方法是啥?

Posted

技术标签:

【中文标题】制作 Android TV 菜单的最佳方法是啥?【英文标题】:What is the best way to make an Android TV menu?制作 Android TV 菜单的最佳方法是什么? 【发布时间】:2017-04-27 18:02:36 【问题描述】:

我目前正在开发一款 android TV 应用。我觉得这很有挑战性,因为您不能只绘制一个列表并让用户通过触摸进行导航。当用户点击 Dpad 按钮时,您必须以编程方式滚动列表。

我想创建一个类似于 Android TV 设置屏幕中的菜单的列表。请看视频example。

到目前为止,我使用的解决方案是创建水平的RecyclerView,当用户向右或向左点击 dpad 时更新。

所以在我的adapter 我有一个方法:

 public void incrementPosition() 
      if(currentSelection < getItemCount()) 
          previousSelection = currentSelection;
          notifyItemChanged(previousSelection);
          currentSelection++;
          notifyItemChanged(currentSelection);
      
 

然后当onBindViewHolder 被调用时,我有类似的东西:

if(position == currentSelection) 
         //draw item to look like it's selected
     
     else if(position == previousSelection) 
        // draw item to look it's NOT selected
     

这将使项目看起来被选中,但列表不会随着新选择一起滚动。

recentlyAddedRecyclerView.smoothScrollToPosition(currentSelection + 2)

(是的,我知道currentSelection + 2 可以超出列表,我有一些 if 语句)

结果与上面发布的视频类似。但是,它并不像我希望的那样“活泼”。我只是想确保这是实现它的最佳方式。

这是来自网络调用的动态列表。所以我不能只用静态视图制作布局。

【问题讨论】:

确认您已经看过这个示例项目/库:github.com/googlesamples/androidtv-Leanback 和这个:github.com/googlesamples/leanback-showcase 是的,我目前正在尝试leanback 方法。这些示例应用程序非常棒,除非您尝试制作一个具有非常特定用户界面的应用程序。例如,我使用 VerticalGridFragment 在屏幕上绘制可选择的图像。现在如何添加分页?当我开始时甚至没有为布局充气时,如何将下拉菜单添加到布局的顶部?当(再次)没有布局时,如何将图像添加到我的侧边栏? 我认为,如果您正在使用分页和下拉菜单,那么您做错了什么,或者至少不适合 Leanback 体验 - 并且有些东西不容易用 d-pad 导航。需要查看的两个资源:图书馆上的 Google IO 视频:youtu.be/QFHIfQy8_Wc 和 Udacity Android TV 课程:udacity.com/course/… 感谢您的链接。我看了Youtube视频。事情似乎仍然非常有限。您可以使用样式进行自定义,但我没有看到有关如何将其他 ui 元素添加到您的卡片页面的任何内容。我必须在页面顶部添加一个 ViewPager。顺便说一句,下拉菜单用于选择您正在观看的节目的季节和排序过滤器。我认为没有办法解决这个问题。 【参考方案1】:

v17.leanback.app 库是实现此目的的方法 - 这就是您的视频中使用的方法。如果您使用自动生成的 Android Studio TV Activity 创建一个全新的仅限 TV 的 Android Studio 项目,它将为您提供一个很好的起点,其中包含标题行、自定义等的具体示例。

以防万一:

    Android Studio > 文件 > 新建项目 > 命名并点击下一步 只选择电视平台然后点击下一步 选择“Android TV 活动”,然后点击下一步

您会关心MainFragmentCardPresenter。将BrowseFragment 视为您填充行的列表视图。行中填满了基于FrameLayouts 的卡片。 RecyclerView 已经集成到leanback 中...我发现我必须花费大量时间来自定义它们,正如您所指出的,并且只是尝试查找/浏览相关的在线文档。祝你好运。

【讨论】:

您是否真的使用过leanback 来创建类似于HBO Now 或Netflix 的电视应用程序?我的应用看起来一点也不像一个后仰演示。侧边栏需要图标、颜色和动画,主屏幕有排序过滤器、按钮等。你如何使用leanback 做到这一点?我不知道怎么会有人制作一个看起来像基本演示应用程序之外的任何东西的leanback应用程序。 是的,我已经使用leanback 来创建一个用于此类目的的电视应用程序,但是是的,它可能会很棘手。如果您还没有,请看一下leanback 展示:github.com/googlesamples/leanback-showcase(YouTube 上也有一个视频)。除此之外,我认为您必须问一个比“制作 Android TV 菜单的最佳方法是什么?”更具体的问题。祝你好运,希望事情对你有用。 p.s.我无法让您的 mp4 链接正常工作。

以上是关于制作 Android TV 菜单的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在android tv中使用像netflix这样的浏览片段制作侧边菜单?

发送android通知的最佳方式是啥

制作 DAL 的最佳方法是啥?

制作动画(flash)的最佳方法是啥

android.media.tv 的依赖项是啥

在 Vue 中制作表格的最佳方法是啥?