【譯】UNIVERSAL IMAGE LOADER. PART 3(四個DisplayImage重載方法詳解)

來源:互聯網
上載者:User

標籤:android   style   blog   http   color   使用   os   io   

在之前的文章,我們重點講了Android-Universal-Image-Loader的三個主要組件,現在我們終於可以開始使用它了。

Android-Universal-Image-Loader有四個重載方法

void displayImage(String url, ImageView view)void displayImage(String url, ImageView view, DisplayImageOptions options)void displayImage(String url, ImageView view, ImageLoadingListener listener)void displayImage(String url, ImageView view, DisplayImageOptions options, ImageLoadingListener listener)

第一個重載方法

所有東西都很簡單。url就是圖片的,ImageView就是需要顯示它的imageView控制項。這個ViewOption(DisplayOptions)將使用預設配置option(defaultDisplayImageOptions(…))

第二個重載方法

我們可以針對特定的任務做一些特定的option。首先,我會先給一個使用特定操作的例子:

DisplayImageOptions options = new DisplayImageOptions.Builder().showStubImage(R.drawable.stub_image).showImageForEmptyUrl(R.drawable.image_for_empty_url).cacheInMemory().cacheOnDisc().decodingType(DecodingType.MEMORY_SAVING).build();

• 當真正的圖片正在下載,是否需要在ImageView中顯示另一張圖片,顯示什麼圖片;
• 當遇到空的Image URL時,是否需要在ImageView中顯示另一張圖片,顯示什麼圖片;
• 是否在記憶體中緩衝已載入的image;
• 是否在磁碟中(file system)緩衝已下載的圖片;
• 要儘可能快(DecodingType.FAST)還是儘可能節約地使用RAM(DecodingType.MEMORY_SAVING)


所以,我們可以在每次調用displayImage()方法的時候將這些option傳遞過去,或者在初始化中的configuration中定義預設的option,然後程式中就會使用這些特定的options不管你有沒有明確地傳遞DisplayImageOptions。

第三個重載方法

除此之外,我們可以使用ImageLoadingListener監聽圖片的下載和顯示過程:

public interface ImageLoadingListener {    void onLoadingStarted();    void onLoadingFailed();    void onLoadingComplete();}

第四個重載方法是最強大的。你可以定製option和監聽那些過程

1、為了正常運行,你需要傳遞給ImageLoader正確的參數。重點是ImageView而不是Image URL。如果你在代碼裡面建立一個ImageView(而不是使用LayoutInflater),然後將當前的Activity傳遞給建構函式,而不是application context。

ImageView imageView = new ImageView(getApplicationContext()); // Wrong!ImageView imageView = new ImageView(MyActivity.this); // CorrectlyImageView imageView = new ImageView(getActivity()); // Correctly (for Fragments)

2、只有當你想載入ImageView圖片比裝置的螢幕尺寸更大(例如,對於後續的縮放操作),那麼你才需要在configuration配置maxImageWidthForMemoryCache(…)和maxImageHeightForMemoryCache(…)參數。在其他情況下,你不需要特殊的配置:這些參數是因為需要考慮緩衝bitmap時螢幕大小和記憶體大小。

3、明智地在configuration中設定線程池大小:大池(線程數>10)允許多線程同時運行,這將極大地影響UI響應的速度。但是它可以通過將這些線程的優先順序設定為更低解決:當ImageLoader運行以及更多的圖片載入時,低優先順序的線程會讓UI更具響應性。UI的相應能力對列表視圖(如ListView、GridView)來說至關重要(如平滑滾動時),所以你應該配置threadPoolSize(...) and threadPriority(...)參數為你的應用程式選一個最優的配置。

4、memoryCacheSize(...) and memoryCache(...)設定有相互重疊的地方。在一個configuration對象中只使用其中一個。

5、discCacheSize(…),discCacheFileCount(…)和discCache(…)設定有相互重疊的地方。在一個configuration對象中只使用其中一個。

6、如果在App中使用ImageLoader你總是或幾乎總要傳遞相同的載入option(DisplayImageOptions)給displayImage(…)方法,然而一個合理的解決方案時在ImageLoader配置中將這些相同的載入選項設定為預設配置(defaultDisplayImageOptions(...) method)。然後在調用displayImage(…)時你就可以不指明這些option。如果options沒有明確傳遞給這些方法,那麼這個任務就會使用預設的options。

7、對於FAST 和 MEMORY_SAVING兩種解析類型沒有特別的重大的區別,但是推薦對所有種類的列表視圖(GridView、ListView)使用FAST(當你需要顯示許多小圖片)。為圖片查看器使用MEMORY_SAVING(當你需要顯示大尺寸的圖片時)

 

 

 

參考連結:

UNIVERSAL IMAGE LOADER. PART 3

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.