用安卓手機,因為手機流量的限制,所以我們在做應用時,要盡量為使用者考慮,盡量少耗點使用者的流量,而在應用中網狀圖片的顯示無疑是消耗流量最大的,所以我們可以採取壓縮圖片或者將圖片進行緩衝,使圖片只需要擷取一次即可。
= = = == Options op = op.inSampleSize = 2= = Rect(0, 0, 0, 0= bitmap =
String CACHE_DIR = "/圖片在手機中的儲存路徑" Map<String, SoftReference<Bitmap>> List<Task> isRunning = LogoLoader(Context ctx.ctx = caches = HashMap<String, SoftReference<Bitmap>>= ArrayList<LogoLoader.Task> isRunning = showImageAsyn(ImageView imageView, String url, = (bitmap == } BitmapDrawable bd = SoftReference<Bitmap> rf = Bitmap bitmap = (bitmap == Task task = == (! ImageCallback getImageCallback( BitmapDrawable bd = Handler handler = Task task = Runnable runnable = (taskQueue.size() > 0 Task task = taskQueue.remove(0 && != File("/mnt/sdcard/jijie/imagecache/" + (file.exists() && file.length() > 100="/mnt/sdcard/jijie/imagecache/" +10 =10= 100 (handler != Message msg == ( = Write(String imageurl, == = BufferedOutputStream(0 index = path.lastIndexOf("/" path.substring(index + 1 netSataus = = (cwjManager.getActiveNetworkInfo() != =
經過上面的代碼雖然能夠實現了圖片的非同步擷取,自動緩衝讀取,圖片壓縮的功能,但是處理圖片使圖片適應控制項大小還是比較讓人頭疼的問題,還有就是如果一起擷取大量的網路的圖片,會佔用的非常多的記憶體,而且系統預設自由在介面銷毀的時候才會釋放,所以很容易遇到記憶體溢出的問題,下面向大家分享一個我在github上看到的一個處理網路的圖片的程式。
下面向大家展示一下:
以集街網(www.jijie.cc)中的一個圖片為例,原圖為:
這分別是在不同大小的空間中顯示同一張圖片,能夠看出來,代碼只是將圖片進行了剪下處理,避免展開變形,程式非同步擷取和自動緩衝就不展示了,大家看代碼就行的了。
工程檔案(百度網盤):http://pan.baidu.com/s/1mguh2qc
github:https://github.com/yimengqingqiu/Android-Universal-Image-Loader
個人郵箱:standopen@foxmail.com(也可以發郵件給我索取)