Picasso:
- 体积比Glide小;
- 网络框架使用okhttp的建议使用Picasso
Glide:
- Picasso实现的功能Gilded都能实现;
- 支持GIF、视频、缩略图等;
- 跟activity、fragment生命周期保持一致;
更详细对比已有更好的文章,这里只是粗糙的对比一下。
一.Picasso详细可参考:https://blog.csdn.net/mawei7510/article/details/80580097
1.引入依赖:
implementation 'com.squareup.picasso:picasso:2.5.2'
2.加载显示图片基础属性(根据自己需求使用属性,不需要全部都用上的,必须的:with、load、into)
Picasso.with(this)
.load(ZM) //图片资源,可以是网络图片、Uri、File、mimap
.placeholder(ZM) //占位图,还没有加载完成时显示ZM图片,ZM必须是本地的,跟noPlaceholder不能同时用
.error(ZM) //加载出错时显示ZM图片
.noFade //使加载图片渐入过度效果
.resize(100,100) //设置图片尺寸,可以设置dp,将大小写在dimens.xml然后引用即可,只有原始尺寸大于设置尺寸才有效
.onlyScaleDown() //缩小
.centerCrop() //裁剪充满ImageView 的边界,居中裁剪,因为resize后可能图片拉伸、扭曲,
.centerInside() //控件将view全部展示
.fit() //resize图片大小我们需要计算,fit自动测量View大小
.rotate(180) //旋转,可以是以一个点为旋转
.memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE) //内存缓存,NO_CACHE跳过检测,NO_STORE不缓存到内存
.networkPolicy(NetworkPolicy.NO_CACHE)//跳过磁盘缓存,NO_STORE不缓存到磁盘只对OkHttp有效,OFFLINE强制从缓存拿,不网络请求
.setIndicatorsEnabled(true);//显示指示器,绿色从内存加载、蓝色从磁盘加载、红色从网络加载
.into(mImageView); //显示图片的控件
3.Transformation转换器:高斯模糊、添加圆角、做度灰处理、圆形图片……
4.请求优先级:LOW、NORMAL(默认)、HIGH
二.Glide
详细可参考:https://blog.csdn.net/guolin_blog/article/details/53759439
1.引入依赖包、添加权限
compile 'com.github.bumptech.glide:glide:3.7.0'
<uses-permission android:name="android.permission.INTERNET" />
2.加载图片,不用担心内存浪、溢出,用多少尺寸加载多少,一般不用指定尺寸(根据自己的需求使用,必须有的:with、load、into)
Glide.with(this)
.load(ZM) //File、应用资源、二进制流、Uri图片、GIF图片(Picasso不支持)
.asBitmap() //指定静态图,即使是GIF也只显示第一帧
.asGif() //指定动态图片,,传入静态的只能走error
.placeholder(R.mipmap.zm) /占位符,不会显示,有缓存,配合diskCacheStrategy属性使用
.error(R.mipmap.error)
.diskCacheStrategy(DiskCacheStrategy.NONE) //禁止Glide缓存,占位符才能显示
.override(100, 100) //指定尺寸,加载成指定尺寸不管控件大小
.into(imageView); //显示的控件