如何在leanback BrowseFragment中实现两个PageRow之间的转换?

Posted

技术标签:

【中文标题】如何在leanback BrowseFragment中实现两个PageRow之间的转换?【英文标题】:How to implement transition between two PageRow in leanback BrowseFragment? 【发布时间】:2018-06-16 10:37:42 【问题描述】:

我正在使用一个leanback BrowseFragment 来实现一个简单的android 电视应用程序。我有两个由自定义片段支持的 PageRows。当我在浏览导航区域中在两者之间切换时,屏幕的内容侧会在新片段的视图出现之前短暂变为空白。我怎样才能从一个视图淡入另一个视图而不会在两者之间产生延迟?

我在文档中看到一些对“入口转换”的引用,我认为这是我需要的,但我找不到任何关于在这些回调中做什么的示例。

https://developer.android.com/reference/android/support/v17/leanback/app/BrowseFragment.MainFragmentAdapter.html#setEntranceTransitionState(boolean)


我尝试在 PageRow Fragment 的 MainFragmentAdapter 上实现 setEntranceTransitionState,但它从未被调用:

class GuideFragment: Fragment(), BrowseFragment.MainFragmentAdapterProvider 
    val fragmentAdapter = object: BrowseFragment.MainFragmentAdapter<GuideFragment>(this) 
        override fun setEntranceTransitionState(state: Boolean) 
            Log.v("TEST", "setEntrance($state)")
            fragment.setEntranceTransitionState(state)
        
    
    override fun getMainFragmentAdapter() = fragmentAdapter

【问题讨论】:

您可能需要检查这个BrowseFragment.BrowseTransitionListener 类,它是一个listener,用于浏览标题和行之间的转换。这是使用setEntranceTransitionState 的example。 谢谢,但 BrowseTransitionListener 用于显示和隐藏导航标题的转换。当标题仍然显示在屏幕上时,我正在寻找在标题之间切换时的过渡。 【参考方案1】:

使用 BrowseSupportFragment 时无法做到这一点。

如果您查看swapToMainFragment() 的实现,您会看到滚动内容时设置为空片段。当达到SCROLL_STATE_IDLE 时,使用常规片段事务将子片段替换为新内容。

【讨论】:

以上是关于如何在leanback BrowseFragment中实现两个PageRow之间的转换?的主要内容,如果未能解决你的问题,请参考以下文章

如何自定义 Leanback 的 ListRows?

如何使用 Leanback 库在 Android TV 中创建顶部导航栏

如何在 com.android.support:leanback-v17 中实现 2 级以上导航

如何更改 Android Leanback 库以支持背景视频而不是背景图像

如何始终在 Leanback BrowseFragment 中显示标题侧栏?

如何在leanback BrowseFragment中实现两个PageRow之间的转换?