Android開發(fā)中触趴,加載網(wǎng)絡(luò)服務(wù)器的圖片是很常用的力奋,當(dāng)然我們可以自己寫服務(wù)器接口去實現(xiàn),不過要做到服務(wù)器性能
優(yōu)越的話,開發(fā)起來比較麻煩點竟闪,所以本博客要介紹Volley框架進行網(wǎng)絡(luò)圖片加載的demo离福!Volley框架集成了
AsyncHttpClient和Universal-Image-Loader的優(yōu)點,開發(fā)起來非常的方便了炼蛤,而且性能也不錯妖爷!
我們可以去下載Volley.jar,這個是我在網(wǎng)上找的:點擊打開鏈接
可以去下載這個我在網(wǎng)上找的哦!
注意:這些網(wǎng)絡(luò)請求的理朋,首先都要開啟權(quán)限絮识,我們打開AndroidManifest.xml
然后定義一個全局變量Context context;
加入代碼:
方法一:通過ImageRequest嗽上,進行加載
public void imageRequest(){
context = this;
imageView = (ImageView)findViewById(R.id.imageView1);
//創(chuàng)建一個RequestQueue對象
RequestQueue requestQueue = Volley.newRequestQueue(context);
//創(chuàng)建ImageRequest對象
ImageRequest imageRequest = new ImageRequest(
"http://c.csdnimg.cn/public/favicon.ico",//url
new Response.Listener() {//監(jiān)聽器Listener
@Override
public void onResponse(Bitmap response) {
imageView.setImageBitmap(response);
}
//參數(shù)3次舌、4表示圖片寬高,Bitmap.Config.ARGB_8888表示圖片每個像素占據(jù)4個字節(jié)大小
}, 0, 0, Config.ARGB_8888, new Response.ErrorListener() {//圖片加載請求失敗的回調(diào)Listener
@Override
public void onErrorResponse(VolleyError error) {
imageView.setImageResource(R.drawable.ic_normal_pic);
}
});
//將ImageRequest加載到Queue
requestQueue.add(imageRequest);
}
方法二:通過ImageLoader,進行加載
介紹一下imageLoader兽愤,imageLoader不是繼承ImageRequest彼念,不是內(nèi)部實現(xiàn)還是通過ImageRequest的,
ImageLoader來實現(xiàn)的好處是可以過濾重復(fù)的url浅萧,這樣就提高了性能
public void imageLoad(){
context = this;
imageView = (ImageView)findViewById(R.id.imageView1);
//創(chuàng)建一個RequestQueue對象
RequestQueue requestQueue = Volley.newRequestQueue(context);
//創(chuàng)建一個ImageLoader
ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageCache() {
@Override
public void putBitmap(String url, Bitmap bitmap) {
}
@Override
public Bitmap getBitmap(String url) {
return null;
}
});
//ImageListener
ImageListener listener = ImageLoader.getImageListener(imageView,
R.drawable.ic_normal_pic, R.drawable.ic_normal_pic);
//url国拇、listener、maxWidth惯殊、maxHeight
imageLoader.get("http://c.csdnimg.cn/public/favicon.ico", listener, 200, 200);
}
方法三:通過NetworkImageLoader
繼承自ImageView的,具備ImageView控件的所有功能也殖,并且在原生的基礎(chǔ)之上加入了加載網(wǎng)絡(luò)圖片的功能土思,也就是
Volley框架提供的View
public void networkImageLoad(){
context = this;
//創(chuàng)建一個RequestQueue對象
RequestQueue requestQueue = Volley.newRequestQueue(context);
//創(chuàng)建一個ImageLoader
ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageCache() {
@Override
public void putBitmap(String url, Bitmap bitmap) {
}
@Override
public Bitmap getBitmap(String url) {
return null;
}
});
//NetworkImageView
networkImageView = (NetworkImageView) findViewById(R.id.network_image_view);
networkImageView.setDefaultImageResId(R.drawable.ic_normal_pic);
networkImageView.setErrorImageResId(R.drawable.ic_normal_pic);
//設(shè)置url和ImageLoader對象
networkImageView.setImageUrl("http://c.csdnimg.cn/public/favicon.ico",
imageLoader);
}
Layout:
android:id="@+id/network_image_view"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
/>
Demo代碼下載:點擊打開鏈接