如何在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 库在 Android TV 中创建顶部导航栏
如何在 com.android.support:leanback-v17 中实现 2 级以上导航
如何更改 Android Leanback 库以支持背景视频而不是背景图像