Volley框架加载网络图片

作者: smileNicky | 来源:发表于2016-08-25 23:54 被阅读103次

    Android开发中,加载网络服务器的图片是很常用的,当然我们可以自己写服务器接口去实现,不过要做到服务器性能

    优越的话,开发起来比较麻烦点,所以本博客要介绍Volley框架进行网络图片加载的demo!Volley框架集成了

    AsyncHttpClient和Universal-Image-Loader的优点,开发起来非常的方便了,而且性能也不错!

    我们可以去下载Volley.jar,这个是我在网上找的:点击打开链接

    可以去下载这个我在网上找的哦!

    注意:这些网络请求的,首先都要开启权限,我们打开AndroidManifest.xml

    然后定义一个全局变量Context context;

    加入代码:

    方法一:通过ImageRequest,进行加载

    public void imageRequest(){

    context = this;

    imageView = (ImageView)findViewById(R.id.imageView1);

    //创建一个RequestQueue对象

    RequestQueue requestQueue = Volley.newRequestQueue(context);

    //创建ImageRequest对象

    ImageRequest imageRequest = new ImageRequest(

    "http://c.csdnimg.cn/public/favicon.ico",//url

    new Response.Listener() {//监听器Listener

    @Override

    public void onResponse(Bitmap response) {

    imageView.setImageBitmap(response);

    }

    //参数3、4表示图片宽高,Bitmap.Config.ARGB_8888表示图片每个像素占据4个字节大小

    }, 0, 0, Config.ARGB_8888, new Response.ErrorListener() {//图片加载请求失败的回调Listener

    @Override

    public void onErrorResponse(VolleyError error) {

    imageView.setImageResource(R.drawable.ic_normal_pic);

    }

    });

    //将ImageRequest加载到Queue

    requestQueue.add(imageRequest);

    }

    方法二:通过ImageLoader,进行加载

    介绍一下imageLoader,imageLoader不是继承ImageRequest,不是内部实现还是通过ImageRequest的,

    ImageLoader来实现的好处是可以过滤重复的url,这样就提高了性能

    public void imageLoad(){

    context = this;

    imageView = (ImageView)findViewById(R.id.imageView1);

    //创建一个RequestQueue对象

    RequestQueue requestQueue = Volley.newRequestQueue(context);

    //创建一个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控件的所有功能,并且在原生的基础之上加入了加载网络图片的功能,也就是

    Volley框架提供的View

    public void networkImageLoad(){

    context = this;

    //创建一个RequestQueue对象

    RequestQueue requestQueue = Volley.newRequestQueue(context);

    //创建一个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);

    //设置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代码下载:点击打开链接

    相关文章

      网友评论

        本文标题:Volley框架加载网络图片

        本文链接:https://www.haomeiwen.com/subject/zhwasttx.html