先看效果
实现起来很简单,就是获取视频的前50帧,然后循环展示
代码如下
以七牛云存储为例
mBitmaps = new Bitmap[50];
for (int i = 0; i < 50; i++) {
final int finalI = i;
final String url = videoUrl + "?vframe/jpg/offset/" + (i + 1)/10f;
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
if(((Activity)getContext()).isFinishing()){
return;
}
Glide.with(getContext()).load(url).into(new SimpleTarget<GlideDrawable>() {
@Override
public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) {
if (resource instanceof GlideBitmapDrawable) {
GlideBitmapDrawable gifDrawable = (GlideBitmapDrawable) resource;
Bitmap bitmap = gifDrawable.getBitmap();
if(bitmap != null){
mBitmaps[finalI] = bitmap;
}
Logs.i("final:::" + finalI);
if (finalI == 3) {
info.setBitmaps(mBitmaps);
startCirclePlay();
}
}
}
@Override
public void onLoadFailed(Exception e, Drawable errorDrawable) {
super.onLoadFailed(e, errorDrawable);
startCirclePlay();
}
});
}
}, 100 * i);
}