【GitHub】Universal–Image–Loader 使用

來源:互聯網
上載者:User

一,快速使用(確保ImageLoader只初始化一次,這樣圖片緩衝會更加優秀。)

情境:為ImageView設定一張指定Uri的圖片。

1,導包,配置連網,讀寫SD卡許可權。

2,初始化:(如果在自訂Application中執行初始化動作,manifest檔案中Application節點的name屬性,記得改變。)

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).build();

ImageLoader.getInstance.init(config);

3,參數配置

DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder()
            .showStubImage(R.drawable.ic_launcher)
            .showImageOnFail(R.drawable.ic_launcher)
            .imageScaleType(ImageScaleType.EXACTLY)
            .showImageForEmptyUri(R.drawable.ic_launcher).cacheInMemory(true)
            .cacheOnDisc(true).displayer(new FadeInBitmapDisplayer(300))
            .imageScaleType(ImageScaleType.EXACTLY).build();

4,設定圖片。

ImageLoader.displayImage(URI,mImageView,displayImageOptions);

二,功能(翻譯自GitHub)

來源:https://github.com/dodola/Android-Universal-Image-Loader

功能:1,多線程圖片載入;

        2,儘可能協調了最廣泛的圖片載入配置(子線程,下載,解碼,記憶體&硬碟緩衝,顯示圖片,和其他);

         3,儘可能的監聽下載進程;

         4,儘可能的為各種參數定製顯示圖片調用;

         5,支援案頭小空間

支援Android 2.0以上版本。

三,初始化參數介紹:

Configuration

所有的選項在配置建造器中都是可選擇的。使用那些你真正想要定製的。

// DON'T COPY THIS CODE TO YOUR PROJECT! This is just example of ALL options using.
File cacheDir = StorageUtils.getCacheDirectory(context);ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)        .memoryCacheExtraOptions(480, 800) // default = device screen dimensions        .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75)        .taskExecutor(AsyncTask.THREAD_POOL_EXECUTOR)        .taskExecutorForCachedImages(AsyncTask.THREAD_POOL_EXECUTOR)        .threadPoolSize(3) // default        .threadPriority(Thread.NORM_PRIORITY - 1) // default        .tasksProcessingOrder(QueueProcessingType.FIFO) // default        .denyCacheImageMultipleSizesInMemory()        .memoryCache(new LruMemoryCache(2 * 1024 * 1024))        .memoryCacheSize(2 * 1024 * 1024)        .discCache(new UnlimitedDiscCache(cacheDir)) // default        .discCacheSize(50 * 1024 * 1024)        .discCacheFileCount(100)        .discCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default        .imageDownloader(new BaseImageDownloader(context)) // default        .imageDecoder(new BaseImageDecoder()) // default        .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default        .enableLogging()        .build();
 
 
Display Option
顯示選項,可以被任何一個顯示線程請求。
// DON'T COPY THIS CODE TO YOUR PROJECT! This is just example of ALL options using.DisplayImageOptions options = new DisplayImageOptions.Builder()        .showImageOnLoading(R.drawable.ic_stub) // resource or drawable        .showImageForEmptyUri(R.drawable.ic_empty) // resource or drawable        .showImageOnFail(R.drawable.ic_error) // resource or drawable        .resetViewBeforeLoading(false)  // default        .delayBeforeLoading(1000)
//如果想要從緩衝中載入圖片 ,下面兩句話的參數設定為true。        .cacheInMemory(false) // default。       
        .cacheOnDisc(false) // default        .preProcessor(...)        .postProcessor(...)        .extraForDownloader(...)        .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default        .bitmapConfig(Bitmap.Config.ARGB_8888) // default        .decodingOptions(...)        .displayer(new SimpleBitmapDisplayer()) // default        .handler(new Handler()) // default        .build();
四,用例
顯示圖片所使用的uri:
String imageUri = "http://site.com/image.png"; // from WebString imageUri = "file:///mnt/sdcard/image.png"; // from SD cardString imageUri = "content://media/external/audio/albumart/13"; // from content providerString imageUri = "assets://image.png"; // from assetsString imageUri = "drawable://" + R.drawable.image; // from drawables (only images, non-9patch)
注意:使用drawable://除非你真的需要他。時刻要注意使用本地圖片載入方法:setImageResource帶代替ImageLoader。
五,有用的資訊
1,ImageLoader.getInstance().init(config); // 在應用開啟的時候初始化。
2,<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>sd卡緩衝是需要寫入許可權
3,ImageLoader根據ImageView的width,height確定圖片的寬高。
4,如果經常出現OOM
   ①減少配置之中線程池的大小,(.threadPoolSize).推薦1-5;
   ②使用.bitmapConfig(Bitmap.config.RGB_565)代替ARGB_8888;
   ③使用.imageScaleType(ImageScaleType.IN_SAMPLE_INT)或者try.imageScaleType(ImageScaleType.EXACTLY);
   ④避免使用RoundedBitmapDisplayer.他會建立新的ARGB_8888格式的Bitmap對象;
   ⑤使用.memoryCache(new WeakMemoryCache()),不要使用.cacheInMemory();
5,記憶體緩衝,sd卡緩衝,顯示圖片,可以使用已經初始化過的實現;
6,為了避免使用list,grid,scroll,你可以使用
boolean pauseOnScroll = false; // or trueboolean pauseOnFling = true; // or falsePauseOnScrollListener listener = new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling);listView.setOnScrollListener(listener);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.