简介
Picasso是Square公司出品的一个强大的图片下载和缓存图片库
1)在adapter中需要取消已经不在视野范围的ImageView图片资源的加载,否则会导致图片错位,Picasso已经解决了这个问题。
2)使用复杂的图片压缩转换来尽可能的减少内存消耗
3)自带内存和硬盘二级缓存功能
下载地址
https://github.com/square/picasso
使用准备
导入jar包或在module的gradle文件中添加
compile 'com.squareup.picasso:picasso:2.5.2'
功能以及api
1)基本用法
Picasso.with(context).load(imageUrl).into(imageView);
//第一个参数为上下文,第二个为加载图片的url,第三个为显示控件
2)图片路径load()
加载 SD卡资源:load("file://"+ Environment.getExternalStorageDirectory().getPath()+"/xxoo.jpg")
加载 assets资源:load("file:///android_asset/xxoo.gif")
//在main文件夹下新建一个 assets 文件夹
加载 drawable资源:load("android.resource://包名/drawable/xxoo")
加载 http资源:load("http:www.xxoo.com/xxoo.jpg")
3)图片加载的过程
- placeholder(xxx). 设置资源加载过程中的显示的Drawable。
- error(xxx).设置load失败时显示的Drawable。
- into(xxx) 设置资源加载到的目标 包括ImageView Target等
4)图片裁剪示例
Picasso.with(this).load("http://www.xxoo.cn/image/XXOO.jpg")
.resizeDimen(R.dimen.iv_width,R.dimen.iv_height)
.into(iv);
//resizeDimen()重新设置大小
5)工具类
public class PicassoUtil {
//加载本地图片
public static void setImg(Context context, int resId, ImageView imgView){
Picasso.with(context)
.load(resId)
.config(Bitmap.Config.RGB_565)//8位RGB位图
.fit()
.into(imgView);
}
//按照一定的宽高加载本地图片,带有加载错误和默认图片
public static void setImg(Context context,int resId,ImageView imgView,int weight,int height){
Picasso.with(context)
.load(resId)//加载本地图片
.config(Bitmap.Config.RGB_565)//8位RGB位图
.resize(weight,height)//设置图片的宽高
.into(imgView);//把图片加载到控件上
}
//加载网络图片到imgview,带有加载错误和默认图片
public static void setImg(Context context, String imgurl, int resId, ImageView imgView){
Picasso.with(context)
.load(imgurl)//加载网络图片的url
.config(Bitmap.Config.RGB_565)//8位RGB位图
.placeholder(resId)//默认图片
.error(resId)//加载错误的图片
.fit()//图片的宽高等于控件的宽高
.into(imgView);//把图片加载到控件上
}
public static void setImg(Context context, String imgurl, ImageView imgView){
Picasso.with(context)
.load(imgurl)//加载网络图片的url
.config(Bitmap.Config.RGB_565)//8位RGB位图
.fit()//图片的宽高等于控件的宽高
.into(imgView);//把图片加载到控件上
}
//加载网络图片到Viewpager
public static void setImg(Context context, String imgurl, ViewPager imgView){
Picasso.with(context)
.load(imgurl)//加载网络图片的url
.config(Bitmap.Config.RGB_565)//8位RGB位图
.fit()//图片的宽高等于控件的宽高
.into((Target) imgView);//把图片加载到控件上
}
//加载网络图片到Viewpager,带有加载错误和默认图片
public static void setImg(Context context, String imgurl, int resId, ViewPager imgView){
Picasso.with(context)
.load(imgurl)//加载网络图片的url
.config(Bitmap.Config.RGB_565)//8位RGB位图
.placeholder(resId)//默认图片
.error(resId)//加载错误的图片
.fit()//图片的宽高等于控件的宽高
.into((Target) imgView);//把图片加载到控件上
}
//按照设定的宽高加载网络图片到imgview
public static void setImg(Context context, String imgurl,ImageView imgView,int weight,int height){
Picasso.with(context)
.load(imgurl)//加载网络图片的url
.config(Bitmap.Config.RGB_565)//8位RGB位图
.resize(weight,height)//设置图片的宽高
.into(imgView);//把图片加载到控件上
}
//按照设定的宽高加载网络图片到imgview,带有加载错误和默认图片
public static void setImg(Context context, String imgurl, int resId,int weight,int height, ImageView imgView){
Picasso.with(context)
.load(imgurl)//加载网络图片的url
.config(Bitmap.Config.RGB_565)//8位RGB位图
.placeholder(resId)//默认图片
.error(resId)//加载错误的图片
.resize(weight,height)//设置图片的宽高
.into(imgView);//把图片加载到控件上
}
}
例子–基本用法
普通加载
// 普通加载图片
Picasso.with(PicassoActivity.this)
.load("http://www.veyron.cn/image/xxoo.jpg")
.into(ivPicasso1);
裁剪
// 裁剪的方式加载图片
Picasso.with(PicassoActivity.this)
.load("http://www.veyron.cn/image/xxoo.jpg")
.resize(100,100)
.into(ivPicasso2);
旋转180度
// 选择180度
Picasso.with(PicassoActivity.this)
.load("http://www.veyron.cn/image/xxoo.jpg")
.rotate(180)
.into(ivPicasso3);")
欢迎关注我的微信公众号: