android開源項目:圖片下載快取庫picasso

來源:互聯網
上載者:User

android開源項目:圖片下載快取庫picasso

picasso是Square公司開源的一個Android圖形緩衝庫,地址http://square.github.io/picasso/,可以實現圖片下載和緩衝功能。

picasso有如下特性:

  • 在adapter中回收和取消當前的下載;
  • 使用最少的記憶體完成複雜的圖形轉換操作;
  • 自動的記憶體和硬碟緩衝;
  • 圖形轉換操作,如變換大小,旋轉等,提供了介面來讓使用者可以自訂轉換操作;
  • 載入載網路或本地資源;
  • 可以轉換為自己需要的request(Square公司開源的另一個網路支援庫:retrofit支援轉化json,protoc0l buffers).

    1.picasso的簡單使用

    1 Picasso.with(context).load(url).placeholder(R.drawable.pic).error(R.drawable.pic).into(tagert);需要注意:url為http連結時,load(url),當url為本地圖片路徑時load(new File(url)).需要對圖片簡單處理:transform(Transformation);如下是顯示圓形圖片
     //重載函數public Bitmap transform(Bitmap source) {        int width = source.getWidth();        int height = source.getHeight();        int x = 0, y = 0;        if (mSquareRound && width != height) {            if (width < height) {                y = (height - width)/2;            } else {                x = (width - height)/2;            }            width = height = Math.min(width, height);            Bitmap tempSource = Bitmap.createBitmap(source, x, y, width, height);            source.recycle();            source = tempSource;        }        Bitmap output = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);        Paint paint = new Paint();        paint.setDither(true);        paint.setAntiAlias(true);        BitmapShader shader = new BitmapShader(source, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);        paint.setShader(shader);        Canvas canvas = new Canvas(output);        final RectF bounds = new RectF(0, 0, width, height);        canvas.drawOval(bounds, paint);        source.recycle();        return output;    }
    transform(new RoundTransformation(true));

    2.picasso的類圖如下:

    關鍵類的簡單介紹:

    Cache:緩衝類,子類LruCache才採用Least Recently Used 近期最少使用演算法,當然LinkedHashMap已實現這個策略,只需根據配置的緩衝大小來trimToSize。

    picass緩衝策略單一,沒有另一個圖片下載快取庫 Android-universal-Image-Loader 緩衝策略豐富:FIFOLimitedMemZ喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcnlDYWNoZQogo6xMaW1pdGVkQWdlTWVtb3J5Q2FjaGUgtcihozwvcD4KPHA+Crb4sb612M7EvP67urTmo6xwaWNhc3Nv0v3Tw29raHR0cLXEzsS8/ru6tOajrLb4QW5kcm9pZC11bml2ZXJzYWwtSW1hZ2UtTG9hZGVy0rKyu82svLjW1s7EvP67urTmst/C1KGjPC9wPgo8cD4KIDwvcD4KPHA+ClJlcXVlc3RDcmVhdG9yOlJlcXVzdLm5vajV36Osv8nS1M2ouf2yu82sss7K/cXk1sNyZXF1ZXN0x+vH86GjPC9wPgo8cD4KUmVxdWVzdDrH68fzt+LXsMDgo6zWrrrzsNHL+dPQttTNvNDOtcSy2df3try74bzHwrzU2tXiwO+jrLmp1q6688280M61xLS0vajKudPDo6zI59bY0MK8xsvjtPPQoaOs0P3Xqr3HtsijrNKyv8nS1NfUtqjS5bHku7ujrNa70OjSqsq1z9ZUcmFuc2Zvcm1hdGlvbqOs0ru49mJpdG1hcNequ7u1xL3Tv9qho7Srtb3B7dK7uPa94bm51tBBY3Rpb26hozwvcD4KPHA+CkFjdGlvbjpBY3Rpb260+rHtwcvSu7j2vt/M5bXEvNPU2MjOzvGjrNb30qrTw9PazbzGrLzT1Ni687XEveG5+7vYtfejrNPQwb249rPpz/O3vbeoo6xjb21wbGV0ZbrNZXJyb3IuwLTNqNaqyc+y46GjPC9wPgo8cD4KQml0bWFwSHVudGVyOtK7uPZydW5uYWJsZc/fs8yjrM34wufPwtTYusS5pNf3z9+zzKOsvbu4+EV4ZWN1dG9yU2VydmVyudzA7da00NChozwvcD4KPHA+CkRvd25sb2FkZXI6zfjC5828xqzPwtTYxvejrNfTwOCyu82swLTRodTxaHR0cCBjbGllbnShozwvcD4KPHA+ClJlcXVlc3RIYW5kbGVyOsfrx/O0psDtwOCjrNfTwOC4+b7dzbzGrMC01LS78cih18rUtKGjPC9wPgo8cD4KRGlzcGF0aGNlcjrIzs7xtfe2yMb3o6y197bIus3OrLuk1d9hY3Rpb25zILrNIGJpdG1hcEh1bnRlciy1sWJpdG1hcGh1bnRlcrvxyKG1vc28xqzKsaOsu+HXqrj4ZGlzcGF0aGVyo6y3osvN0uyyvc/7z6KjrNfu1tW74WFjdGlvbi5jb21wbGV0ZSgpu/LV32FjdGlvbi5lcnJvcigpLjwvcD4KPHA+CiA8L3A+CjxwPgo8c3Ryb25nPjMucGljYXNzby53aXRoKGNvbnRleHQpLmxvYXIoaHR0cCkuaW50byhpbWFnZXZpZXcpO8H3s8zNvMjnz8I8L3N0cm9uZz48L3A+CjxwPgo8aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20141203/2014120309104861.png" alt="\">

    4.使用picasso可能出現的問題:

    1.圖片有時會顯示不了,查看應用中圖片快取檔案,對一張圖片,會產生兩個檔案:,.0檔案儲存了http響應相應的資訊,.1檔案時加密後的圖片檔案。.0檔案的內容如下:

    http://192.168.2.40:82/group1/M00/0A/60/wKgCKFQJQkKABEn9AAPhsEdiW-o.phpzqfGET0HTTP/1.1 200 OK9Server: nginx/1.2.6Date: Tue, 16 Sep 2014 12:02:26 GMTContent-Length: 254384Last-Modified: Fri, 05 Sep 2014 04:55:30 GMTConnection: keep-aliveAccept-Ranges: bytesOkHttp-Selected-Protocol: http/1.1OkHttp-Sent-Millis: 1410868547182OkHttp-Received-Millis: 1410868547357

    這邊出現問題時,Content-Length: 0,但是圖片確實存在。如果出現有時顯示不了,可以從這方面查看下。可行的方法:

    定製Downloader,配置緩衝目錄和緩衝大小。

    2.當picasso顯示列表中大量圖片時,查看大圖時,有時還是會出現oom,除了對長寬比壓縮,也可以以另外一個進程查看大圖。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.