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

How to implement transition between two PageRow in leanback BrowseFragment?

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

我在文档中看到一些对 "entrance transition" 的引用,我认为这是我需要的,但我找不到任何关于在这些回调中执行的操作的示例。

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


我试图在我的 PageRow 片段的 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
}

使用 BrowseSupportFragment 时无法执行此操作。

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