这是一个工具类,可以直接使用,当然要是有什么问题,请留言给我,我看到会及时回复你的
public class NetImageUtile {
private RequestQueue mQueue;
public NetImageUtile(Context context) {
if (mQueue == null) {
mQueue = Volley.newRequestQueue(context);
}
}
// 第一种ImageLoader
/*1. 创建一个RequestQueue对象。
2. 创建一个ImageLoader对象。
3. 获取一个ImageListener对象。
4. 调用ImageLoader的get()方法加载网络上的图片。
*/
public void Imageloader(String url, ImageView imageView){
ImageLoader imageLoader=new ImageLoader(mQueue, new BitmapCache());
// 设置图片:1.图片控件
// 2.默认时的图片
// 3.请求失败时的图片
ImageLoader.ImageListener imageListener = ImageLoader.getImageListener(imageView, R.mipmap.ic_launcher, R.mipmap.ic_launcher);
// 最后设置图片
// imageLoader.get(url,imageListener);
// 设置图片的大小:1.设置成的图片
// 2.放置imageListener
// 3.宽
// 4.高
imageLoader.get(url,imageListener,100,100);
}
//第二种ImageRequest
/*
* 1.请求网络数据
* 2.参数是图片请求成功的回调,这里我们把返回的Bitmap参数设置到ImageView中。
* 3,4参数分别用于指定允许图片最大的宽度和高度,
* 如果指定的网络图片的宽度或高度大于这里的最大值,则会对图片进行压缩,指定成0的话就表示不管图片有多大,都不会进行压缩。
* 5.参数用于指定图片的颜色属性,Bitmap.Config下的几个常量都可以在这里使用,
* 其中ARGB_8888可以展示最好的颜色属性,每个图片像素占据4个字节的大小,
* 而RGB_565则表示每个图片像素占据2个字节大小
* 6.
* */
public void Imagerequest(String url, final ImageView imageView){
ImageRequest imageRequest=new ImageRequest(url, new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
imageView.setImageBitmap(response);
}
},0,0, Bitmap.Config.ARGB_8888 ,new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error) {
imageView.setImageResource(R.mipmap.ic_launcher);
}
});
mQueue.add(imageRequest);
}
// 第三种 NetworkImageView
// 1. 创建一个RequestQueue对象。
// 2. 创建一个ImageLoader对象。
// 3. 在布局文件中添加一个NetworkImageView控件。
// 4. 在代码中获取该控件的实例。
// 5. 设置要加载的图片地址。
/*
*<com.android.volley.toolbox.NetworkImageView
android:id="@+id/iv_image3"
android:layout_width="100dp"
android:layout_height="100dp" />
* */
public void networkImageview(String url, final NetworkImageView imageView){
imageView.setDefaultImageResId(R.mipmap.ic_launcher);//设置默认图片
imageView.setErrorImageResId(R.mipmap.ic_launcher);//设置加载错误时的图片
ImageLoader imageLoader=new ImageLoader(mQueue, new BitmapCache());
imageView.setImageUrl(url,imageLoader);//请求网络,设置图片
}
}
/*
*ImageCache对象是一个空的实现,完全没能起到图片缓存的作用。
* 其实写一个ImageCache也非常简单,但是如果想要写一个性能非常好的ImageCache,
* 最好就要借助Android提供的LruCache功能了
*/
public class BitmapCache implements ImageLoader.ImageCache {
private LruCache<String, Bitmap> mCache;
public BitmapCache() {
int maxSize = 10 * 1024 * 1024;
mCache = new LruCache<String, Bitmap>(maxSize) {
@Override
protected int sizeOf(String key, Bitmap bitmap) {
return bitmap.getRowBytes() * bitmap.getHeight();
}
};
}
@Override
public Bitmap getBitmap(String url) {
return mCache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
mCache.put(url, bitmap);
}
}