Android非同步圖片載入元件之 Universal_image_loader
阿新 • • 發佈:2019-02-18
好了,到此封裝已經完成了,直接呼叫即可實現。 例:package com.yongninggo.yongningsdk.Universal_image_loader; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.widget.ImageView; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.cache.memory.impl.WeakMemoryCache; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import com.nostra13.universalimageloader.core.download.BaseImageDownloader; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; import com.yongninggo.yongningsdk.R; /** * @author chao * @function 初始化universal_image_loader,載入網路圖片 */ public class ImageLoaderManager { private static final int THREAD_COUNT = 4; //表示最多可以有4條執行緒 private static final int PROPRITY = 2; //表示我們圖片載入的一個優先順序 private static final int DISK_CACHE_SIZE = 50 * 1024; //表示最多可以快取多少圖片 private static final int CONNETION_TIME_OUT = 5 * 1000; //連線超時時間 private static final int READ_TIME_OUT = 30 * 1000; //讀取超時時間 private static ImageLoaderManager Instance = null; private static ImageLoader imageloader = null; public static ImageLoaderManager getInstance (Context context){ if (Instance == null) { synchronized (ImageLoaderManager.class) { if (Instance == null) { Instance = new ImageLoaderManager(context); } } } return Instance; } //單例模式的私有構造方法 ImageLoaderManager(Context context) { ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(context) .threadPoolSize(THREAD_COUNT) //配置圖片下載執行緒的最大數量 .threadPriority(Thread.NORM_PRIORITY - PROPRITY) //設定優先順序 .denyCacheImageMultipleSizesInMemory() //防止快取多套尺寸的圖片到記憶體中 .memoryCache(new WeakMemoryCache()) //使用弱引用記憶體快取 .diskCacheSize(DISK_CACHE_SIZE) //分配硬碟快取大小 .diskCacheFileNameGenerator(new Md5FileNameGenerator()) //使用Md5命名檔案 .tasksProcessingOrder(QueueProcessingType.FIFO) //圖片下載順序 .defaultDisplayImageOptions(getDefultOptions()) //預設的圖片載入options .imageDownloader(new BaseImageDownloader(context,CONNETION_TIME_OUT,READ_TIME_OUT)) //設定圖片下載器 .writeDebugLogs() //debug環境下輸出日誌 .build(); ImageLoader.getInstance().init(configuration); imageloader = ImageLoader.getInstance(); } //實現預設的options public DisplayImageOptions getDefultOptions() { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageForEmptyUri(R.drawable.psb) //在圖片地址為空的時候載入我們定義的圖片 .showImageOnFail(R.drawable.psb) //在圖片下載失敗的時候載入我們定義的圖片 .cacheInMemory(true) //設定圖片可以快取在記憶體 .cacheOnDisk(true) //設定圖片可以快取在硬碟 .bitmapConfig(Bitmap.Config.RGB_565) //使用的解碼型別 (RGB_565 降低圖片的色彩,從而減少記憶體的使用) .decodingOptions(new BitmapFactory.Options()) //圖片解碼的配置 .imageScaleType(ImageScaleType.IN_SAMPLE_INT) .build(); return options; } /** * @function 載入圖片api(設定圖片) * @param imageView * @param url * @param options * @param listener */ public void displayImage(ImageView imageView, String url, DisplayImageOptions options, ImageLoadingListener listener){ if (imageloader != null) { imageloader.displayImage(url,imageView,options,listener); } } public void display (ImageView imageView, String url, ImageLoadingListener listener){ displayImage(imageView, url, null, listener); } public void display(ImageView imageView,String url){ display(imageView,url,null); } }
ImageLoaderManager.getInstance(context).displayImage();