1

我有一个RecyclerView. 每一个item都是一个视频。这item将填满整个屏幕。所以一次只能item看到一个。当我滚动时,下一个item将可见。滚动将在下一个停止item。我正在使用PagerSnapHelper. 现在,当我设置时player.playWhenReady = true,下一个视频(在屏幕中不可见)也在播放。这不应该发生。所以我设置了player.playWhenReady = false. 现在我需要的是,当我滚动到下一个item时,视频应该会自动播放。也就是说,只有在屏幕上可见的视频才应该播放。当我滚动时,当前视频应该暂停,下一个视频应该播放。

4

1 回答 1

2

使用 Facebook 模型,即在屏幕上完整显示一个视频一次,在当前视频之前和之后显示一半。我们得到一个完全可见的项目的位置,并将其设置为播放,其余设置为暂停。

将滚动检测器设置为回收站视图

mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            int last = ((LinearLayoutManager) 
 mRecyclerView.getLayoutManager()).findLastCompletelyVisibleItemPosition();
            for (int i = 0; i < list.size(); i++) {
                if (i != last)
                    if(list.get(i).getPlayer()!=null)
                    list.get(i).getPlayer().setPlayWhenReady(false);
                else
                    if(list.get(i).getPlayer()!=null)
                    list.get(i).getPlayer().setPlayWhenReady(true);

            }


        }
    });
于 2020-06-17T15:41:57.107 回答