// For a simple image list:
@Override public View getView(int position, View recycled, ViewGroup container) {
final ImageView myImageView;
if (recycled == null) {
myImageView = (ImageView) inflater.inflate(R.layout.my_image_view, container, false);
} else {
myImageView = (ImageView) recycled;
}
String url = myUrls.get(position);
Glide
.with(myFragment)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_spinner)
.into(myImageView);
return myImageView;
}
//不使用它的默认动画
Glide.with(mContext)
.load(url)
.dontAnimate()
.placeholder(R.drawable.loading_spinner)
.into(circleImageview);
提示:不要再非主线程里面使用Glide加载图片,如果真的使用了,请把context参数换成getApplicationContext
3.加载GIF
如果只是简单加载gif,其实跟加载普通图片一样
Glide.with(this).load(mGifUrl).placeholder(R.mipmap.place).error(R.mipmap.icon_photo_error).into(mIv);
如果希望加载gif时只加载gif的第一帧,把gif当作普通图片一样加载,那么只需要加上asBitmap方法即可
Glide.with(this).load(mGifUrl).asBitmap().placeholder(R.mipmap.place).error(R.mipmap.icon_photo_error).into(mIv);
如果你希望加载的只是gif,如果不是gif就显示错误图片,那么只用加上asGif方法即可
Glide.with(this).load(mGifUrl).asGif().placeholder(R.mipmap.place).error(R.mipmap.icon_photo_error).into(mIv);
网络上很多文章上都是从一篇译文里面拷贝过来的,里面说Glide可以加载本地视频,但是那篇译文漏翻译一句了,Glide只会加载本地视频的第一帧,也就是缩略图,而且其实加载缩略图的时候也无需转化为Uri,直接把File丢进去就行了
mVideoFile = new File(Environment.getExternalStorageDirectory(), “xiayu.mp4”);
Glide.with(this).load(mVideoFile).placeholder(R.mipmap.place).error(R.mipmap.icon_photo_error).into(mIv);
在大多数情况下,当你使用diskCacheStrategy(DiskCacheStrategy.SOURCE)时,Gif的加载速度会显着提高(其实就是把gif资源缓存到磁盘)->可以解决gif加载慢或加载不出来的情况(NONE是不缓存数据,SOURCE是缓存原型,原图)
Glide.with(this).load(mGifUrl).diskCacheStrategy(DiskCacheStrategy.SOURCE).placeholder(R.mipmap.place)
.error(R.mipmap.icon_photo_error)
.into(mIv);
动态显示gif图的次数,比如我想显示一次gif就停止
Glide.with(this).load(“url”).diskCacheStrategy(DiskCacheStrategy.SOURCE)
.into(new GlideDrawableImageViewTarget(iv, 1));
这里的GlideDrawableImageViewTarget(ImageView view, int maxLoopCount)这个方法,maxloopCount可以控制显示次数。
二、Glide加载gif优化
**1.**解决Glide加载Gif非常慢问题
Glide.with(MainActivity.this).load(url).asGif().diskCacheStrategy(DiskCacheStrategy.SOURCE).into(imageView);
为其添加缓存策略,其中缓存策略可以为:Source及None,None及为不缓存,Source缓存原型.如果为ALL和Result就不行
**2.**加载第一贞:
Glide.with(context).load(gifUrl).asBitmap().into(imageViewGifAsBitmap);
**3.**控制动画次数:
Glide.with(this).load(getResource()).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(new GlideDrawableImageViewTarget(imageView, 1));
**4.**GIF 时间:
Glide.with(FirstActivity.this)
.load(file)
.asGif()
.fitCenter()
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
最后
说一千道一万,不如自己去行动。要想在移动互联网的下半场是自己占有一席之地,那就得从现在开始,从今天开始,马上严格要求自己,既重视业务实现能力,也重视基础和原理。基础夯实好了,高楼才能够平地而起,稳如泰山。
最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2020-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。
还有 高级架构技术进阶脑图、Android开发面试专题资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
点击:
《Android架构视频+BAT面试专题PDF+学习笔记》
即可免费获取~
d-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)》**
即可免费获取~
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。