上文已經對當今 Android主流的圖片加載庫 進行了全面介紹 & 對比android
若是你還沒閱讀,我建議你先移步這裏閱讀git
今天咱們來學習其中一個Android主流的圖片加載庫的使用 - Picassogithub
介紹:Picasso,可譯爲「畢加索」,是Android中一個圖片加載開源庫web
大概是由於其使用使用方法簡單、優雅因此這樣取名緩存
主要做用:實現圖片加載網絡
從上面能夠看出,Picasso不只實現了圖片異步加載的功能,還解決了Android中加載圖片時須要解決的一些常見問題併發
接下來,我會對Picasso的每一個功能點進行詳細的介紹異步
2.2.1 圖片的異步加載(最基礎功能)ide
1 ImageView targetImageView = (ImageView) findViewById(R.id.ImageView); 2 String Url = "http://218.192.170.132/1.jpg"; 3 4 //Picasso使用了流式接口的調用方式 5 //Picasso類是核心實現類。 6 //實現圖片加載功能至少須要三個參數: 7 Picasso 8 //with(Context context) 9 //Context對於不少Android API的調用都是必須的,這裏就很少說了 10 .with(context) 11 12 //load(String imageUrl):被加載圖像的Url地址。 13 //大多狀況下,一個字符串表明一個網絡圖片的URL。 14 .load(Url) 15 16 //into(ImageView targetImageView):圖片最終要展現的地方。 17 .into(targetImageView);
2.2.2 圖片轉換性能
使用最少的內存完成複雜的圖片轉換,轉換圖片以適合所顯示的ImageView,來減小內存消耗
1 Picasso.with(context) 2 .load(url) 3 //裁剪圖片尺寸 4 .resize(50, 50) 5 //設置圖片圓角 6 .centerCrop() 7 .into(imageView)
2.2.3 加載太重 & 錯誤處理
Picasso支持加載過程當中和加載錯誤時顯示對應圖片
1 Picasso.with(context) 2 .load(url) 3 //加載過程當中的圖片顯示 4 .placeholder(R.drawable.user_placeholder) 5 //加載失敗中的圖片顯示 6 //若是重試3次(下載源代碼能夠根據須要修改)仍是沒法成功加載圖片,則用錯誤佔位符圖片顯示。 7 .error(R.drawable.user_placeholder_error) 8 .into(imageView);
2.2.4 在Adapter中的回收不在視野的ImageView和取消已經回收的ImageView下載進程
1 @Override 2 public void getView(int position, View convertView, ViewGroup parent) { 3 SquaredImageView view = (SquaredImageView) convertView; 4 if (view == null) { 5 view = new SquaredImageView(context); 6 } 7 String url = getItem(position); 8 9 Picasso.with(context).load(url).into(view); 10 }
2.2.5 從不一樣資源源加載
支持多種數據源 網絡、本地、資源、Assets 等
1 //加載資源文件 2 Picasso.with(context).load(R.drawable.landing_screen).into(imageView1); 3 //加載本地文件 4 Picasso.with(context).load(new File("/images/oprah_bees.gif")).into(imageView2);
2.2.6 自動添加磁盤和內存二級緩存功能
2.2.7 支持優先級處理
每次任務調度前會選擇優先級高的任務,好比 App 頁面中 Banner 的優先級高於 Icon 時就很適用。
2.2.8 支持飛行模式、併發線程數根據網絡類型而變
手機切換到飛行模式或網絡類型變換時會自動調整線程池最大併發數,好比 wifi 最大併發爲 4, 4g 爲 3,3g 爲 2
2.2.9 「無」本地緩存
無」本地緩存,不是說沒有本地緩存,而是 Picasso 本身沒有實現,交給了 Square 的另一個網絡庫 okhttp 去實現,這樣的好處是能夠經過請求 Response Header 中的 Cache-Control 及 Expired 控制圖片的過時時間。
沒有Demo的代碼講解不是好文章,讓咱們來一步步學會使用Picasso。
步驟1:在gradle添加依賴
1 compile 'com.squareup.picasso:picasso:2.5.2'
步驟2:添加網絡權限
1 <uses-permission android:name="android.permission.INTERNET"/>
步驟1和步驟2是Picasso使用的前提,千萬別忘了!!!!
步驟3:在MainActivity中
1 ImageView targetImageView = (ImageView) findViewById(R.id.ImageView); 2 String Url = "http://218.192.170.132/1.jpg"; 3 4 Picasso 5 .with(this) 6 .load(Url) 7 .into(targetImageView);
還有具體其餘功能須要配置的本身按照我上面寫的進行配置就行了~
這裏再貼上Picasso的Github地址: 請點擊這裏
使用簡單、方便(一行代碼的事情)
因爲一樣是出品自Square的,Square 公司的其餘開源庫如 Retrofit 或者 OkHttp和Picasso搭配使用兼容性會更好些,佔用體積也會少些
因此,若是項目已經使用了 Square 公司的其餘開源庫(如 Retrofit 或者 OkHttp),在知足需求的前提下建議使用Picasso
功能較爲簡單-圖片加載;
性能(加載速度等等)較其餘圖片加載庫(Glide、Fresco)較差
自身無實現「本地緩存」
來自:http://www.jianshu.com/p/51dc758b52f9