方案只包含一个视频和多张图片,如果又多个视频的,可以修改适配器中的的播放器为一个list,并且在滑动中做相应的释放操作
一:实现一个视频和多张图片的轮播banner,使用到第三方框架有
1.轮播的基础框架youth.banner Github地址:https://github.com/youth5201314/banner
2.视频播放器gsyvideoplayer Github地址:https://github.com/CarGuo/GSYVideoPlayer
3.图片点击放大框架(非必要)image-viewer :github地址:https://github.com/SusionSuc/DraggableImageViewer
二、第三方框架引入地址
implementation 'com.youth.banner:banner:2.1.0'
implementation 'com.shuyu:GSYVideoPlayer:7.1.8'
//非必要
implementation 'com.susion:image-viewer:1.0.2'
三、解决方案组成
解决方案用到了databind去解决频繁的绑定控件ID,这里不写出来,自行了解下
1.bean类
2.banner适配器(BannerAdapter)
3.布局文件
4.主要代码
四、bean类
public class BannerBean {
private boolean isVideo;
private String url;
public boolean isVideo() {
return isVideo;
}
public void setVideo(boolean video) {
isVideo = video;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
五、banner适配器(BannerAdapter)
public class MyBannerAdapter extends BannerAdapter<MyBannerAdapter .BannerListBean,RecyclerView.ViewHolder> {
protected Context mContext;
protected LayoutInflater mInflater;
protected List<BannerListBean> mDataList = new ArrayList<>();
private StandardGSYVideoPlayer myvideo=null;
//视频
public static final int VEDIO = 1;
//图片
public static final int IMAGE= 2;
private BannerOnclickListen listen;
public MyBannerAdapter (Context context,List<BannerListBean> dataList) {
super(dataList);
mContext = context;
mDataList=dataList;
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
//通过isVedio获取返回不同的布局
@Override
public int getItemViewType(int position) {
if (mDataList.get(position).isVedio()){
return VEDIO;
}