Android利用Volley架構載入網狀圖片

來源:互聯網
上載者:User

標籤:android應用   開源架構   網路   

       Volley架構是在Google I/O 2013上Volley發布的,目的是使Android平台上的網路通訊庫,能使網路通訊更快,更簡單,更健壯。我們也簡單瞭解下Volley引入的背景,在Volley出現以前,我們可能面臨如下的問題,比如要在ListView或是GridView中載入數量較多的圖片時:先在ListAdapter#getView()裡開始映像的讀取,再通過AsyncTask等機制使用HttpURLConnection從伺服器去的圖片資源,然後在AsyncTask#onPostExecute()裡設定相應ImageView的屬性。這樣下來不僅僅步驟繁瑣,而且不考慮周全的話,還可能出現OOM等問題。現在有了Volley後我們只需要一個函數即可實網狀圖片的載入。簡單地講Volley功能有:

  • JSON,映像等的非同步載入;
  • 網路請求的排序;
  • 網路請求的優先順序處理;
  • 圖片緩衝;
  • 多層級取消請求;
  • 和Activity生命週期的聯動(Activity結束時同時取消所有網路請求)等。                                                                                                               今天先簡單貼下用Volley載入網狀圖片,下次有時間再貼下用Volley實現http請求及json資料載入。用Volley載入網狀圖片常用有兩種方式,一種是用ImageLoader,另外是用Volley封裝好的圖片控制項NetworkImageView:
  • 第一種方式步驟:
  •  建立一個RequestQueue對象,就一句話:RequestQueue mQueue = Volley.newRequestQueue(context); 
  • 建立一個ImageLoader對象,ImageLoader mImageLoader= new ImageLoader(mRequestQueue, new BitmapLruCache(cacheSize));       public class BitmapLruCache extends LruCache<String, Bitmap> implements ImageLoader.ImageCache {
    public BitmapLruCache(int maxSize) {
    super(maxSize);
    }
    protected int sizeOf(String key, Bitmap bitmap) {
    return (bitmap.getRowBytes() * bitmap.getHeight());
    }
    public Bitmap getBitmap(String url) {
    return ((Bitmap) get(url));
    }
    public void putBitmap(String url, Bitmap bitmap) {
    put(url, bitmap);
    }
    }***建立ImageLoader中的參數cacheSize就是我們設定的快取檔案最大值,比如可以設定int cacheSize= 10 * 1024 * 1024;  
  • 建立ImageListener listener = ImageLoader.getImageListener(imageView,R.drawable.default_image, R.drawable.failed_image);//imageView參數就是我們要展示圖片的控制項
  • 然後就可以載入圖片了:imageLoader.get("http://www.xxxxxxx.jpg", listener);//傳入圖片url及上面建立的listener就可OK.
  • 第二種方式,就是利用Volley封裝好的NetworkImageView載入圖片。
  • 這種方式更簡單,把NetworkImageView當成我們平時用的ImageView放到我們要載入圖片的布局xml中,在對應的代碼中用NetworkImageView imageView=findViewById();找到控制項,
  • networkImageView.setDefaultImageResId(R.drawable.default_icon);//載入中顯示的圖片
    networkImageView.setErrorImageResId(R.drawable.failed_icon);//載入失敗時顯示的圖片
    networkImageView.setImageUrl("http://xxxxxxx.jpeg",imageLoader);//靶心圖表片的URL地址(第一個參數用於指定圖片的URL地址,第二個參數則是上面建立好的ImageLoader對象)。

Android利用Volley架構載入網狀圖片

聯繫我們

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