Volley请求网络数据,设置图片(二)

这是一个工具类,可以直接使用,当然要是有什么问题,请留言给我,我看到会及时回复你的

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() {
            @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. 设置要加载的图片地址。
    /*
    *
     *  */
    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 mCache;

    public BitmapCache() {
        int maxSize = 10 * 1024 * 1024;
        mCache = new LruCache(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);
    }

}

你可能感兴趣的:(第三方Jar)