【Android 基礎】圖片加載框架之Picasso利器

簡介

Picasso是Square公司出品的一個強大的圖片下載和緩存圖片庫
1)在adapter中需要取消已經不在視野範圍的ImageView圖片資源的加載,否則會導致圖片錯位,Picasso已經解決了這個問題。
2)使用複雜的圖片壓縮轉換來儘可能的減少內存消耗
3)自帶內存和硬盤二級緩存功能

下載地址

https://github.com/square/picasso

使用準備

導入jar包或在modulegradle文件中添加
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);")

歡迎關注我的微信公衆號:

這裏寫圖片描述

發佈了89 篇原創文章 · 獲贊 37 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章