• 安卓新的联网方式 Volley的使用(2)


     如果使用volley 获取 网络图片 最好还是用 Volley 提供的NetworkImageView类,  可以很轻松的 完成工作, 而且他可以设置缓存, lru 和 sd卡的缓存。一些都封装好了。

    NetworkImageView类的具体使用方式如下:

        <FrameLayout
            android:id="@+id/flImageContainer"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/gvImages"
            android:layout_margin="30dp" >
    
            <com.android.volley.toolbox.NetworkImageView
                android:id="@+id/nivTestView"
                android:layout_width="100dp"
                android:layout_height="100dp" >
            </com.android.volley.toolbox.NetworkImageView>
        </FrameLayout>
    

      

    		networkImageView = (NetworkImageView) findViewById(R.id.nivTestView);  ..找到对应的 NetworkImageview
    		
    		mQueue = Volley.newRequestQueue(this);     //老样子 ,生成
    		
    		LruImageCache lruImageCache = LruImageCache.instance();  // 新加的, 这是一个实现了ImageCache 接口的缓存类 ,使用Lru
    		
    		ImageLoader imageLoader = new ImageLoader(mQueue,lruImageCache);  //主要的联网获取图片工作都交给了他
    				
    		networkImageView.setDefaultImageResId(R.drawable.ic_launcher);  //默认加载图片
    		networkImageView.setErrorImageResId(R.drawable.ic_launcher);	//错误的图片	
    		networkImageView.setImageUrl(URLS[1], imageLoader);
    

      所以在利用NetworkImageView之前,我们还需要先去实现这个接口,而Volley推荐的也就是LruCache,代码中的LruImageCache实现如下:

    package com.lms.volleydemo;
    
    import android.graphics.Bitmap;
    import android.support.v4.util.LruCache;
    
    import com.android.volley.toolbox.ImageLoader.ImageCache;
    
    public class LruImageCache implements ImageCache{
    
    	private static LruCache<String, Bitmap> mMemoryCache;
    	
    	private static LruImageCache lruImageCache;
    	
    	private LruImageCache(){
    		// Get the Max available memory
    		int maxMemory = (int) Runtime.getRuntime().maxMemory();
    		int cacheSize = maxMemory / 8;
    		mMemoryCache = new LruCache<String, Bitmap>(cacheSize){
    			@Override
    			protected int sizeOf(String key, Bitmap bitmap){
    				return bitmap.getRowBytes() * bitmap.getHeight();
    			}
    		};		
    	}
    	
    	public static LruImageCache instance(){
    		if(lruImageCache == null){
    			lruImageCache = new LruImageCache();
    		}
    		return lruImageCache;
    	}
    	
    	@Override
    	public Bitmap getBitmap(String arg0) {		
    		return mMemoryCache.get(arg0);	
    	}
    
    	@Override
    	public void putBitmap(String arg0, Bitmap arg1) {
    		if(getBitmap(arg0) == null){
    			mMemoryCache.put(arg0, arg1);
    		}		
    	}
    
    }
    

      

    2 然后开始合体了

    ImageLoader imageLoader = new ImageLoader(mQueue,lruImageCache);  

    这里面详细 http://blog.csdn.net/linmiansheng/article/details/21293699

  • 相关阅读:
    收藏文章
    Python __func__
    Python 可变对象 & 不可变对象
    Kafka SASL ACL配置踩坑总结
    C++ 传递动态内存
    负数取反,单目运算“-”的运算
    C++重载运算符的理解
    c++ 随机函数用法
    static变量
    路由汇聚及其相关计算
  • 原文地址:https://www.cnblogs.com/zey23/p/3885671.html
Copyright © 2020-2023  润新知