多線程下載圖片,圖片能夠來源於網絡,文件系統,項目文件夾assets中以及drawable中等java
支持隨意的配置ImageLoader,例如線程池,圖片下載器,內存緩存策略,硬盤緩存策略,圖片顯示選項以及其餘的一些配置android
支持圖片的內存緩存,文件系統緩存或者SD卡緩存git
支持圖片下載過程的監聽github
根據控件(ImageView)的大小對Bitmap進行裁剪,減小Bitmap佔用過多的內存緩存
較好的控制圖片的加載過程,例如暫停圖片加載,從新開始加載圖片,通常使用在ListView,GridView中,滑動過程當中暫停加載圖片,中止滑動的時候去加載圖片網絡
提供在較慢的網絡下對圖片進行加載多線程
public class XXXApplication extends Application { @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) .denyCacheImageMultipleSizesInMemory() .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) .memoryCacheSize(2 * 1024 * 1024) .discCacheSize(50 * 1024 * 1024) .denyCacheImageMultipleSizesInMemory() .discCacheFileNameGenerator(new Md5FileNameGenerator()) .tasksProcessingOrder(QueueProcessingType.LIFO) .discCacheFileCount(100) .writeDebugLogs() .build(); ImageLoader.getInstance().init(config); } }
android:name=".XXXApplication"
public class ImageManager{ public static void Load(String imgUrl,ImageView imageView){ ImageLoader.getInstance().displayImage(imgUrl, imageView); } public static void Load(String imgUrl,ImageView imageView,DisplayImageOptions o){ ImageLoader.getInstance().displayImage(imgUrl, imageView,o); } }
//設置圖片在下載期間顯示的圖片 showStubImage(R.drawable.ic_launcher) //設置圖片Uri爲空或是錯誤的時候顯示的圖片 showImageForEmptyUri(R.drawable.ic_empty) //設置圖片加載/解碼過程當中錯誤時候顯示的圖片 showImageOnFail(R.drawable.ic_error) //設置圖片在下載前是否重置,復位 resetViewBeforeLoading() //設置下載的圖片是否緩存在內存中 cacheInMemory() //設置下載的圖片是否緩存在SD卡中 cacheOnDisc() //設置圖片的解碼類型 bitmapConfig(Bitmap.Config.RGB_565) //設置圖片的解碼配置 decodingOptions(android.graphics.BitmapFactory.Options decodingOptions) //設置圖片下載前的延遲 delayBeforeLoading(int delayInMillis) //設置額外的內容給ImageDownloader extraForDownloader(Object extra) //設置圖片加入緩存前,對bitmap進行設置 preProcessor(BitmapProcessor preProcessor) //設置顯示前的圖片,顯示後這個圖片一直保留在緩存中 postProcessor(BitmapProcessor postProcessor) //設置圖片以如何的編碼方式顯示 imageScaleType(ImageScaleType imageScaleType)/** * 設置圖片的顯示方式 * @param displayer */displayer(BitmapDisplayer displayer) displayer: RoundedBitmapDisplayer(int roundPixels)設置圓角圖片 FakeBitmapDisplayer()這個類什麼都沒作 FadeInBitmapDisplayer(int durationMillis)設置圖片漸顯的時間 SimpleBitmapDisplayer()正常顯示一張圖片 /** * 圖片的縮放方式 * @param imageScaleType */ imageScaleType(ImageScaleType imageScaleType) imageScaleType: EXACTLY :圖像將徹底按比例縮小的目標大小 EXACTLY_STRETCHED:圖片會縮放到目標大小徹底 IN_SAMPLE_INT:圖像將被二次採樣的整數倍 IN_SAMPLE_POWER_OF_2:圖片將下降2倍,直到下一減小步驟,使圖像更小的目標大小 NONE:圖片不會調整/** *DisplayImageOptions簡單示例 */// 建立默認的DisplayImageOptionsDisplayImageOptions option_0=DisplayImageOptions.createSimple();// 使用DisplayImageOptions.Builder()建立DisplayImageOptionsDisplayImageOptions options = new DisplayImageOptions.Builder() .imageScaleType(ImageScaleType.EXACTLY_STRETCHED) .showStubImage(R.drawable.loading) .showImageForEmptyUri(R.drawable.load_fail) .showImageOnFail(R.drawable.load_fail) .cacheInMemory(true) .cacheOnDisc(true) .build();
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />