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