前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android系列之Volley框架加载网络图片

Android系列之Volley框架加载网络图片

作者头像
SmileNicky
发布2022-05-07 15:28:29
4000
发布2022-05-07 15:28:29
举报
文章被收录于专栏:Nicky's blog

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

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

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

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

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

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

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

加入代码:

代码语言:javascript
复制
       <!-- 配置网络连接需要的属性 -->
    <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,进行加载

代码语言:javascript
复制
 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,这样就提高了性能

代码语言:javascript
复制
 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

代码语言:javascript
复制
  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:

代码语言:javascript
复制
 <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代码下载:点击打开链接

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档