<Excerpt in index | 首页摘要>
加载Gif只显示第一帧,点击播放
<The rest of contents | 余下全文>
app一个业务流里面会出现多个GIF同屏幕的的情况
可能导致手机发烫比较严重。
产品那边给的需求变成了,只显示第一帧,点击播放
glide3.6的时候 在Glide.load之后加入asBitmap即可实现不播放。
4.0就不行了。
Glide加载url,检测到如果是GIF会解析成GIFDrawable,然后设置给ImageVIew,然后播放。
GIFDrawable可以控制播放次数和获取GIF的第一帧
那么我们可以这么做。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Glide.with(mFragment) .load(url) .into(new SimpleTarget<Drawable>() { @Override public void onResourceReady(Drawable resource, Transition<? super Drawable> transition) { if (resource instanceof GifDrawable) { if (isPlayGif) { //是否播放GIf的控制 iv.setImageDrawable(resource); ((GifDrawable) resource).start(); //开始播放GIF } else { //不播放GIF,只展示GIF第一帧 iv.setImageBitmap(((GifDrawable) resource).getFirstFrame()); } } else { //非GIF情况 iv.setImageDrawable(resource); } } });
|
顺带一说,发现个别大GIF播放起来特别特别卡。
在加载的时候配上参数diskCacheStrategy(DiskCacheStrategy.RESOURCE); 即可解决
具体原因没找到。。。Glide加载GIF卡解决方法 进去搜索缓存设置