1、第一种添加播放器
github
https://github.com/CarGuo/GSYVideoPlayer
这个第三方播放器好使的,但是不知道为什么接入后横屏拍摄的视频大小变成了正方形样式的,而不是宽度占全部;没找到解决方法,于是换了个简单的库使用。
接入过程
1、引入gradle
implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer:v8.1.6-jitpack'
2、item_preview_video.xml
3、使用
2、item_preview_video.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
android:id="@+id/detail_player"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
3、使用
class VideoPreview extends AdapterDelegate<List<Bean>> {
private Context mContext;
public VideoPreview(Context context){
mContext = context;
}
@Override
public boolean isForViewType(@NonNull List<Bean> items, int position) {
return items.get(position).path.endsWith(".mp4");
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_preview_video, parent, false);
return new VideoPreviewHolder(view, mContext);
}
@Override
public void onBindViewHolder(@NonNull List<Bean> items, int position, @NonNull RecyclerView.ViewHolder holder, @NonNull List<Object> payloads) {
final VideoPreviewHolder pHolder = ( VideoPreviewHolder) holder;
Bean mb = items.get(position);
pHolder.standardGSYVideoPlayer.setUpLazy(mb.path,false,null,null,null);
pHolder.standardGSYVideoPlayer.getBackButton().setVisibility(View.GONE);
pHolder.standardGSYVideoPlayer.getFullscreenButton().setVisibility(View.GONE);
}
static class VideoPreviewHolder extends RecyclerView.ViewHolder {
private StandardGSYVideoPlayer standardGSYVideoPlayer;
public VideoPreviewHolder(View itemView, Context context) {
super(itemView);
standardGSYVideoPlayer = itemView.findViewById(R.id.detail_player);
}
}
}
在需要暂停的地方调用
GSYVideoManager.onPause(); 暂停
GSYVideoManager.releaseAllVideos(); 释放
在原代码基础上添加
完成以上即可播放视频
2、第二种添加播放器
github
https://github.com/Jzvd/JZVideo
这个超级简单的使用~
步骤一样的
1、gradle
implementation ‘cn.jzvd:jiaozivideoplayer:7.7.0’
2、xml
<cn.jzvd.JzvdStd
android:id="@+id/jz_video"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
3、使用,改一下holder
@Override
public void onBindViewHolder(@NonNull List<Bean> items, int position, @NonNull RecyclerView.ViewHolder holder, @NonNull List<Object> payloads) {
final VideoPreviewHolder pHolder = (VideoPreviewHolder) holder;
Bean mb = items.get(position);
pHolder.jzvdStd.setUp(mb.path,null);
SAVE_PROGRESS = false; // 不保存进度
loadImage(mb.path,pHolder.jzvdStd.posterImageView);
}
static class VideoPreviewHolder extends RecyclerView.ViewHolder {
JzvdStd jzvdStd;
public VideoPreviewHolder(View itemView, Context context) {
super(itemView);
jzvdStd = itemView.findViewById(R.id.jz_video);
}
}
在需要暂停的地方添加
Jzvd.releaseAllVideos();
就可了~
2.1 Module
这个第三方的问题在于我找不到他修改视频封面图的接口,因为他这里的封面图ImageView是这样设定的
我没找到接口也不知道怎么重写第三方的界面,于是只好把gradle依赖(记得删除gradle依赖)变成Module依赖
1、import Module
File
Import Module
(事先在github上下载这个工程文件,然后找到JZVideo-develop这个文件存放的位置)
选择E:\ProjectIng\211101\1102\JZVideo-develop\library
OK
Finish
2、Dependencies
File
Project Structure
Dependencies
All Dependencies 点+ 选第三个Module Dependency
然后选上你新加进来的Module
于是在gradle(:app)会自动出现
在settings.gradle中也会自动出现
此时就可以修改啦~
找到那个xml,改成适配需求的~