Android开源框架之Volley(一)

一、简介

Volley是Google在2003年的I/O大会上推出的通信框架。适用于数据量小、频率高的请求。不适合大数据加载

二、volley的使用

1、创建RequestQueue对象
    RequestQueue queue = Volley.newRequestQueue(context);
2、创建一个request对象,系统提供了几种StringRquest、JsonRequest等等,也可以自定义
    StringRequest request = new StringRequest("https://www.baidu.com/?tn=62095104_5_oem_dg", new Response.Listener<String>() {
        @Override
        public void onResponse(String s) {
            textView.setText(s);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError volleyError) {
            Toast.makeText(VolleyActivity.this,volleyError.getMessage(),Toast.LENGTH_SHORT).show();
        }
    });

3、将request对象添加到RequestQueue中。

    queue.add(request);

注:volley不适合大的文件流操作,例如上传和下载。因为Volley会把所有的服务器端返回的数据在解析期间缓存进内存。

三、图片加载

1、 使用ImageRequest

用法和StringRequest一样

2、 ImageLoader的用法

ImageLoader也可以用于加载网络上的图片,并且它的内部也是使用ImageRequest来实现的,不过ImageLoader明显要比ImageRequest更加高效,因为它不仅可以对图片进行缓存,还可以过滤掉重复的链接,避免重复发送请求。

<1> 创建请求队列

	    mQueue = Volley.newRequestQueue(this);

<2> 创建imageloader对象,其中imageloader的构造方法第二个参数为imageCache的实现类,实现图片缓存的算法类。

imageLoader = new ImageLoader(mQueue, new BitmapCache());

public class BitmapCache implements 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);	
	} 
}

<3> 获取一个ImageListener对象

ImageListener listener = ImageLoader.getImageListener(imageView,R.drawable.default_image, R.drawable.failed_image);

<4> 调用ImageLoader的get()方法加载网络上的图片。

imageLoader.get("https://img-my.csdn.net/uploads/201404/13/1397393290_5765.jpeg", listener);

当然,如果想对图片的大小进行限制,也可以使用get()方法的重载,指定图片允许的最大宽度和高度.

imageLoader.get("https://img-my.csdn.net/uploads/201404/13/1397393290_5765.jpeg",listener, 200, 200);
3、 NetworkImageView的用法

除了以上两种方式之外,Volley还提供了第三种方式来加载网络图片,即使用NetworkImageView。

不同于以上两种方式,NetworkImageView是一个自定义控制,它是继承自ImageView的,具备ImageView控件的所有功能,并且在原生的基础之上加入了加载网络图片的功能。

<1> 创建一个RequestQueue对象。

<2> 创建一个ImageLoader对象。

<3> 在布局文件中添加一个NetworkImageView控件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    android:layout_width="fill_parent"    
    android:layout_height="fill_parent"    
    android:orientation="vertical" >     
	
    <com.android.volley.toolbox.NetworkImageView         
        android:id="@+id/network_image_view"        
        android:layout_width="200dp"        
        android:layout_height="200dp"        
        android:layout_gravity="center_horizontal"/> 
		
</LinearLayout>

<4> 在代码中获取该控件的实例

networkImageView = (NetworkImageView) findViewById(R.id.network_image_view);

<5> 设置要加载的图片地址

networkImageView.setDefaultImageResId(R.drawable.default_image);
		
networkImageView.setErrorImageResId(R.drawable.failed_image);
		
networkImageView.setImageUrl("https://img-my.csdn.net/uploads/201404/13/1397393290_5765.jpeg",imageLoader);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值