Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Volley加載網絡圖片

Volley加載網絡圖片

編輯:關於Android編程

今天介紹如何使用Volley加載網絡圖片:

理論知識介紹:

(1)緩存功能簡單介紹:

LruCache,和ImageCache實現圖片的緩存

(2)加載網絡圖片及監聽

ImageRequest

ImageLoader

NatWorkImageView(顯示網絡圖片)

我們從簡單到復雜,先實現一個不帶緩存的加載:

 

package com.example.volley;

import com.android.volley.Response;
import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageRequest;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;

public class VolleyImageActivity extends Activity {

	private ImageView imageView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_volley_image);
		imageView = (ImageView) findViewById(R.id.myImage);
		String url = "http://p2.so.qhimg.com/bdm/326_204_/t01b6d53e067d888f92.jpg";
		//參數依次代表:圖片請求成功回調,圖片加載允許的最大高度和寬度並壓縮處理,如果設置為0原圖顯示不壓縮,加載格式,請求失敗的回調
		ImageRequest request = new ImageRequest(url, new Listener() {

			@Override
			public void onResponse(Bitmap response) {
				// TODO Auto-generated method stub
				imageView.setImageBitmap(response);//加載成功顯示網絡圖片
			}
		},0 , 0, Config.RGB_565, new Response.ErrorListener() {

			@Override
			public void onErrorResponse(VolleyError error) {
				// TODO Auto-generated method stub
				imageView.setBackgroundResource(R.drawable.ic_launcher);//加載失敗,顯示加載失敗的圖片
			}
		});

		request.setTag("mytag");//給請求設置標簽,方便加入隊列後查找
		MyApplication.getHttpRequestQueues().add(request);//添加到請求隊列

	}
}

下面使用ImageLoader imageCache,LruCache實現帶緩存的加載:

 

先創建一個圖片緩存類:

 

package com.example.volley;

import android.graphics.Bitmap;
import android.support.v4.util.LruCache;

import com.android.volley.toolbox.ImageLoader.ImageCache;
/**
 *實現圖片 緩存
 * @author Administrator
 *
 */
public class BitmapCache implements ImageCache{
/**
 * ImageCache單獨使用不能起到緩存效果需要使用LruCache配合
 */
	public LruCache cache;
	public int max = 10 * 1024 * 1024;//設置最大緩存大小

	public BitmapCache(){
		cache = new LruCache(max){
			@Override
			protected int sizeOf(String key, Bitmap value) {
				// TODO Auto-generated method stub
				return value.getRowBytes()*value.getHeight();
			}
		};
	}
	@Override
	public Bitmap getBitmap(String url) {
		// TODO Auto-generated method stub
		return cache.get(url);
	}

	@Override
	public void putBitmap(String url, Bitmap bitmap) {
		// TODO Auto-generated method stub
		cache.put(url, bitmap);
	}

}


 

 

//方式二imageLoader加載方式
	private void imageLoaderImage(){
		String url = "http://p2.so.qhimg.com/bdm/326_204_/t01b6d53e067d888f92.jpg";
		ImageLoader loader = new ImageLoader(MyApplication.getHttpRequestQueues(), new BitmapCache());

		ImageListener listener = ImageLoader.getImageListener(imageView, R.drawable.ic_launcher, R.drawable.ic_launcher);//參數:控件,默認圖片,出錯圖片
		loader.get(url, listener);
		//loader.get(url, listener, 0, 0);//後兩個參數圖片加載允許的最大高度和寬度並壓縮處理,如果設置為0原圖顯示不壓縮

	}
下面使用NetWorkImageVIew 顯示圖片
//方式三使用NetWorkImageView顯示加載圖片
	private void netWorkImageView(){
		String url = "http://p2.so.qhimg.com/bdm/326_204_/t01b6d53e067d888f92.jpg";
		ImageLoader loader = new ImageLoader(MyApplication.getHttpRequestQueues(), new BitmapCache());
		networkImageView.setDefaultImageResId(R.drawable.ic_launcher);//設置默認顯示圖片
		networkImageView.setErrorImageResId(R.drawable.ic_launcher);//設置加載失敗顯示圖片
		networkImageView.setImageUrl(url, loader);
	}

下面給出三種方法的全部代碼:(緩存類代碼上面已經給出這裡不再粘貼了)

 

 

package com.example.volley;

import com.android.volley.Response;
import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.ImageRequest;
import com.android.volley.toolbox.ImageLoader.ImageContainer;
import com.android.volley.toolbox.ImageLoader.ImageListener;
import com.android.volley.toolbox.NetworkImageView;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;

public class VolleyImageActivity extends Activity {

	private ImageView imageView;
	private NetworkImageView networkImageView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_volley_image);
		imageView = (ImageView) findViewById(R.id.myImage);
		networkImageView = (NetworkImageView) findViewById(R.id.networkImageview);

		//imageResponseImage();
		//imageLoaderImage();
		netWorkImageView();

	}
	//方式一:ImageResponseImage(不帶緩存的加載方式)
	private  void imageResponseImage(){
		//參數依次代表:圖片請求成功回調,圖片加載允許的最大高度和寬度並壓縮處理,如果設置為0原圖顯示不壓縮,加載格式,請求失敗的回調
		String url = "http://p2.so.qhimg.com/bdm/326_204_/t01b6d53e067d888f92.jpg";
		ImageRequest request = new ImageRequest(url, new Listener() {

			@Override
			public void onResponse(Bitmap response) {
				// TODO Auto-generated method stub
				imageView.setImageBitmap(response);//加載成功顯示網絡圖片
			}
		},0 , 0, Config.RGB_565, new Response.ErrorListener() {

			@Override
			public void onErrorResponse(VolleyError error) {
				// TODO Auto-generated method stub
				imageView.setBackgroundResource(R.drawable.ic_launcher);//加載失敗,顯示加載失敗的圖片
			}
		});

		request.setTag("mytag");//給請求設置標簽,方便加入隊列後查找
		MyApplication.getHttpRequestQueues().add(request);//添加到請求隊列
	}
	//方式二imageLoader加載方式
	private void imageLoaderImage(){
		String url = "http://p2.so.qhimg.com/bdm/326_204_/t01b6d53e067d888f92.jpg";
		ImageLoader loader = new ImageLoader(MyApplication.getHttpRequestQueues(), new BitmapCache());

		ImageListener listener = ImageLoader.getImageListener(imageView, R.drawable.ic_launcher, R.drawable.ic_launcher);//參數:控件,默認圖片,出錯圖片
		loader.get(url, listener);
		//loader.get(url, listener, 0, 0);//後兩個參數圖片加載允許的最大高度和寬度並壓縮處理,如果設置為0原圖顯示不壓縮

	}
	//方式三使用NetWorkImageView顯示加載圖片
	private void netWorkImageView(){
		String url = "http://p2.so.qhimg.com/bdm/326_204_/t01b6d53e067d888f92.jpg";
		ImageLoader loader = new ImageLoader(MyApplication.getHttpRequestQueues(), new BitmapCache());
		networkImageView.setDefaultImageResId(R.drawable.ic_launcher);//設置默認顯示圖片
		networkImageView.setErrorImageResId(R.drawable.ic_launcher);//設置加載失敗顯示圖片
		networkImageView.setImageUrl(url, loader);
	}

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