仿抖音列表
下面是自己写的防抖音列表,包括:
- 可上下滑动播放视频
- 播放完当前视频,自动播放下一个
- 仿抖音评论列表
- 节操播放器的简单使用
下面是两张效果图:
下面是下载地址:
GitHub 下载地址:https://github.com/wuqingsen/DouYinWu
CSDN 下载地址:https://download.csdn.net/download/wuqingsen1/11006993
看完效果图,来看下是如何实现的;
下面是设置 adapter 时主要的代码:
//设置adapter
adapter = new VideoAdapter(MainActivity.this, myData);
recyclerView.setAdapter(adapter);
mLayoutManager = new PagerLayoutManager(this, OrientationHelper.VERTICAL);
recyclerView.setLayoutManager(mLayoutManager);
mLayoutManager.setOnViewPagerListener(new OnViewPagerListener() {
@Override
public void onInitComplete(View view) {
//点击进入 0
playVideo(view, false);
}
@Override
public void onPageSelected(int position, boolean isBottom, View view) {
positionClick = position;
//滑动选择 1
playVideo(view, isBottom);
}
@Override
public void onPageRelease(boolean isNext, int position, View view) {
//暂停上一个播放
// releaseVideo(view);
}
});
上面代码自定义了 PagerLayoutManager ,它继承于 LinearLayoutManager ;
在这个类中,重写了手势滑动,也就是上下滑动;以及选中当前 item 后,onPageSelected 作为回调,在里面开始播放当前页的视频。
再看下 playVideo 方法中代码:
/**
* 开始播放 & 监听播放完成
*/
private void playVideo(View view, boolean isBottom) {
if (view != null) {
jzVideo = view.findViewById(R.id.jzVideo);
jzVideo.startVideo();
if (isBottom) {
//到最后一个加载第二页
myData.add("http://static.gamemm.com/upload/video/20180914/14039_1536897206.mp4");
myData.add("http://static.gamemm.com/upload/video/20180810/14078_1533870358.mp4");
myData.add("http://static.gamemm.com/upload/video/20180914/14039_1536897206.mp4");
myData.add("http://static.gamemm.com/upload/video/20180810/14078_1533870358.mp4");
myData.add("http://static.gamemm.com/upload/video/20180914/14039_1536897206.mp4");
myData.add("http://static.gamemm.com/upload/video/20180810/14078_1533870358.mp4");
adapter.notifyDataSetChanged();
}
jzVideo.setFinishListerer(new MyVideoPlayer.OnItemClickListener() {
@Override
public void onItemClick() {
//播放完成自动播放下一个,用户没有看评论列表可以播放下一个
if (isScroll) {
smoothMoveToPosition(recyclerView, positionClick++);
}
}
});
}
}
这个方法也很简单,获取到当前显示 item 中的视频播放器,然后开始播放视频,当播放到最后一个视频时,加载第二页内容以及更新 adapter ;
最后监听视频是否播放结束,播放结束后,滑动到下一个并播放。