Android利用Volley框架加載網絡圖片

fydxdk 9年前發布 | 35K 次閱讀 Volley Android開發 移動開發

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

  • 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 cacheSize10 * 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對象
  • </ul>

 本文由用戶 fydxdk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!