Android系列之Volley框架加载网络图片
Android开发中,加载网络服务器的图片是很常用的,当然我们可以自己写服务器接口去实现,不过要做到服务器性能
优越的话,开发起来比较麻烦点,所以本博客要介绍Volley框架进行网络图片加载的demo!Volley框架集成了
AsyncHttpClient和Universal-Image-Loader的优点,开发起来非常的方便了,而且性能也不错!
我们可以去下载Volley.jar,这个是我在网上找的:点击打开链接
可以去下载这个我在网上找的哦!
注意:这些网络请求的,首先都要开启权限,我们打开AndroidManifest.xml
然后定义一个全局变量Context context;
加入代码:
  
   - 
    
     
    
    
      <!-- 配置网络连接需要的属性 -->
     
    
 
   - 
    
     
    
    
      <uses-permission android:name="android.permission.INTERNET" />
     
    
 
   - 
    
     
    
    
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     
    
 
   - 
    
     
    
    
      <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
     
    
 
  
 
方法一:通过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<Bitmap>() {//监听器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:
  
   - 
    
     
    
    
      <com.android.volley.toolbox.NetworkImageView 
     
    
 
   - 
    
     
    
    
      android:id="@+id/network_image_view"  
     
    
 
   - 
    
     
    
    
      android:layout_width="100dp"  
     
    
 
   - 
    
     
    
    
      android:layout_height="100dp"  
     
    
 
   - 
    
     
    
    
      android:layout_gravity="center_horizontal"  
     
    
 
   - 
    
     
    
    
     
       />  
     
    
 
  
 
Demo代码下载:点击打开链接
文章来源: smilenicky.blog.csdn.net,作者:smileNicky,版权归原作者所有,如需转载,请联系作者。
原文链接:smilenicky.blog.csdn.net/article/details/50922884
- 点赞
 - 收藏
 - 关注作者
 
            
           
评论(0)