Android圖片載入庫:最全面的Picasso講解

來源:互聯網
上載者:User

標籤:error   add   activity   word   over   二級緩衝   center   文章   github   

前言
  • 上文已經對當今 Android主流的圖片載入庫 進行了全面介紹 & 對比

    如果你還沒閱讀,我建議你先移步這裡閱讀

  • 今天我們來學習其中一個Android主流的圖片載入庫的使用 - Picasso

目錄

1. 簡介
  • 介紹:Picasso,可譯為“畢加索”,是Android中一個圖片載入開源庫

    大概是因為其使用使用方法簡單、優雅所以這樣取名

  • 主要作用:實現圖片載入

2. 功能特點 2.1 功能列表

  • 從上面可以看出,Picasso不僅實現了圖片非同步載入的功能,還解決了Android中載入圖片時需要解決的一些常見問題

  • 接下來,我會對Picasso的每個功能點進行詳細的介紹

2.2 功能介紹

2.2.1 圖片的非同步載入(最基礎功能)

 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 控製圖片的到期時間。

3. Demo執行個體

沒有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         Picasso5                 .with(this)6                 .load(Url)7                 .into(targetImageView);

還有具體其他功能需要配置的自己按照我上面寫的進行配置就好了~

這裡再貼上Picasso的Github地址: 請點擊這裡

4. 特點 4.1 優點
  • 使用簡單、方便(一行代碼的事情)

  • 由於同樣是出品自Square的,Square 公司的其他開源庫如 Retrofit 或者 OkHttp和Picasso搭配使用相容性會更好些,佔用體積也會少些

    所以,如果項目已經使用了 Square 公司的其他開源庫(如 Retrofit 或者 OkHttp),在滿足需求的前提下建議使用Picasso

4.2 缺點
  • 功能較為簡單-圖片載入;

  • 效能(載入速度等等)較其他圖片載入庫(Glide、Fresco)較差

  • 自身無實現“本機快取”

 

來自:http://www.jianshu.com/p/51dc758b52f9

Android圖片載入庫:最全面的Picasso講解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.