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

时间:2016-12-12 19:33:00

标签: android android-tv television

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

我想创建一个类似于Android TV上“设置”屏幕中菜单的列表。请参阅下面的视频以获取示例:

https://www.dropbox.com/s/yvhrrh7wy8jj2s4/device-2016-12-08-111314.mp4?dl=0

到目前为止,我使用的解决方案是创建水平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语句)

结果与上面发布的视频类似。然而,它不像&#34; snappy&#34;正如我所希望的那样。我只是想确保这是实现它的最佳方式。

这是来自网络电话的动态列表。所以我不能只使用静态视图进行布局。

1 个答案:

答案 0 :(得分:2)

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

以防万一: 1. Android Studio&gt;文件&gt;新项目&gt;将它命名为&amp;点击下一步 2.仅选择电视平台,然后单击下一步 3.选择&#34; Android TV Activity&#34;然后单击“下一步”

你会关心MainFragment&amp; CardPresenter。可以将BrowseFragment看作是用行填充的列表视图。行充满了内置FrameLayouts的卡片。 RecyclerView已经集成到了leanback ......我发现我必须花很多时间来定制它们,就像你已经注意到的那样,只是想找到/浏览相关的在线文档。祝你好运。