AndroidのVolleyフレームワークにネット画像をロードする3つの方法
5869 ワード
1.第一に最もよく使われるもの:ImageLoader
カスタム画像キャッシュBitCache.java
呼び出し方法は、imageLoader(url,img);
2.2つ目:ImageRequest
カスタムピクチャキャッシュ同上呼び出し方式:imageRequest(url);
3.3つ目:NetworkImageViewコントロールを直接使用する
レイアウトに直接追加:
主関数は次のように設定されています.
public void imageLoader(String url,ImageView iv){
//ImageLoader RequestQueue: Volley
// ImageLoader ImageCache: ,
ImageLoader il=new ImageLoader(queue,new BitCache());
// ImageListener
//getImageListener : ImageView , ( ),
ImageLoader.ImageListener imageListener=ImageLoader.getImageListener(iv,R.mipmap.ic_launcher,R.mipmap.ic_launcher);
// ImageLoader get()
//get() url , ImageListener
// ,
il.get(url,imageListener,500,500);
}
カスタム画像キャッシュBitCache.java
public class BitCache implements ImageLoader.ImageCache{
/* LruCache * : , */
private LruCache<String ,Bitmap> myCache;
public BitCache(){
// , 1/8
myCache=new LruCache<String,Bitmap>((int) (Runtime.getRuntime().maxMemory()/1024/8)){
@Override
//
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes()*value.getHeight();
}
};
}
@Override
//
public Bitmap getBitmap(String s) {
return myCache.get(s);
}
@Override
//
public void putBitmap(String s, Bitmap bitmap) {
myCache.put(s,bitmap);
}
}
呼び出し方法は、imageLoader(url,img);
2.2つ目:ImageRequest
public void imageRequest(String url){
ImageRequest ir=new ImageRequest(url, new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap bitmap) {
img.setImageBitmap(bitmap);
}
}, 500, 500, Bitmap.Config.ARGB_8888, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
});
queue.add(ir);
}
カスタムピクチャキャッシュ同上呼び出し方式:imageRequest(url);
3.3つ目:NetworkImageViewコントロールを直接使用する
レイアウトに直接追加:
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/netImg"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
主関数は次のように設定されています.
NetworkImageView networkImageView= (NetworkImageView) findViewById(R.id.netImg);
String url ="http://10.0.2.2:8080/HttpTest/img/h5.png";
ImageLoader imageLoader = new ImageLoader(requestQueue,new BitCache());
networkImageView.setDefaultImageResId(R.mipmap.ic_launcher);
networkImageView.setErrorImageResId(R.mipmap.ic_launcher);
networkImageView.setImageUrl(url,imageLoader);