如何在 Youtube Autoplay 新闻提要等回收站视图中检测查看可见性(80% 左右),当 ~80 可见时播放视频

Posted

技术标签:

【中文标题】如何在 Youtube Autoplay 新闻提要等回收站视图中检测查看可见性(80% 左右),当 ~80 可见时播放视频【英文标题】:How to detect to view visibility(80% or so) in a recycler view like Youtube Autoplay news feed plays video when ~80 is visible 【发布时间】:2020-07-15 11:00:33 【问题描述】:

如何在 Youtube Autoplay 新闻提要等回收站视图中检测查看可见性(80% 左右),当大约 80 个可见时播放视频。并且视频播放在滚动时停止并开始在空闲状态下播放,但最初,如果视频处于播放状态,即使处于滚动状态,它也会继续在该状态下播放,直到大约 80 度可见,然后停止,所以如何这完成了。 感谢您的想法和示例。

我尝试过使用回收器视图 onChildDetached 方法,但仅当完整视图超出可见屏幕区域时才会触发事件。 谢谢。

【问题讨论】:

比较视图高度和视图可见高度(getGlobalVisibleRect) 这需要在滚动过程中完成,那么如何触发类似的东西。 View 可以在滚动过程中随时消失。 【参考方案1】:

您可以像这样播放第一个完全可见的项目。如果可能有 2 个完整的可见项目,并且您希望它们都播放而不是“findFirstCompletelyVisibleItemPosition”,则可以遍历 layoutManagers 子项并将它们的可见高度与实际高度进行比较。

val scrollListener = object : RecyclerView.OnScrollListener() 
        override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) 
            val layoutManager = (recyclerView.layoutManager as LinearLayoutManager)
            super.onScrolled(recyclerView, dx, dy)
            val firstItem = layoutManager.findFirstCompletelyVisibleItemPosition()
            //get the item at position fistItem and play
        
    
    yourRecyclerView.addOnScrollListener(scrollListener)

【讨论】:

以上是关于如何在 Youtube Autoplay 新闻提要等回收站视图中检测查看可见性(80% 左右),当 ~80 可见时播放视频的主要内容,如果未能解决你的问题,请参考以下文章

Youtube iframe api allow="autoplay" Chrome 65

有没有办法为嵌入式YouTube视频创建委派菜单(youtube autoplay chrome)

带有“autoplay=1”的嵌入式 youtube 视频。它是不是计入观看次数?

javascript YouTube Bootstrap Modal AutoPlay

如何在 swift 中创建新闻提要 UI

使用 <iframe> Youtube 视频自动播放 - ?autoplay=1 不起作用