Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android開源項目:圖片下載緩存庫picasso

android開源項目:圖片下載緩存庫picasso

編輯:關於Android編程

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喎?/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="/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.phpzqf
    GET
    0
    HTTP/1.1 200 OK
    9
    Server: nginx/1.2.6
    Date: Tue, 16 Sep 2014 12:02:26 GMT
    Content-Length: 254384
    Last-Modified: Fri, 05 Sep 2014 04:55:30 GMT
    Connection: keep-alive
    Accept-Ranges: bytes
    OkHttp-Selected-Protocol: http/1.1
    OkHttp-Sent-Millis: 1410868547182
    OkHttp-Received-Millis: 1410868547357
    復制代碼

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

    定制Downloader,配置緩存目錄和緩存大小。

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

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved