簡介
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);")
歡迎關注我的微信公衆號: