標籤:android style blog http color java 使用 art
如果使用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); ..找到對應的 NetworkImageviewmQueue = Volley.newRequestQueue(this); //老樣子 ,產生LruImageCache lruImageCache = LruImageCache.instance(); // 新加的, 這是一個實現了ImageCache 介面的緩衝類 ,使用LruImageLoader 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 memoryint maxMemory = (int) Runtime.getRuntime().maxMemory();int cacheSize = maxMemory / 8;mMemoryCache = new LruCache<String, Bitmap>(cacheSize){@Overrideprotected int sizeOf(String key, Bitmap bitmap){return bitmap.getRowBytes() * bitmap.getHeight();}};}public static LruImageCache instance(){if(lruImageCache == null){lruImageCache = new LruImageCache();}return lruImageCache;}@Overridepublic Bitmap getBitmap(String arg0) {return mMemoryCache.get(arg0);}@Overridepublic 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