Android開發之Universal-Image-Loader解析DisplayImageOptions的詳細配置

來源:互聯網
上載者:User


在使用這個架構的時候,我們必須要配置一個DisplayImageOptions對象來作為ImageLoader.getInstance().displayImage()中的參數,所以很有必要講解這個對象的配製方法。講解完了後其實這個架構我們就會瞭解的比較詳盡了。

1.預設的配置

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)
    .cacheInMemory(false) // default
    .cacheOnDisk(false) // default
    .preProcessor(...)
    .postProcessor(...)
    .extraForDownloader(...)
    .considerExifParams(false) // default
    .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default
    .bitmapConfig(Bitmap.Config.ARGB_8888) // default
    .decodingOptions(...)
    .displayer(new SimpleBitmapDisplayer()) // default
    .handler(new Handler()) // default
    .build();

example:

/**
     * 顯示圖片的所有配置
     * @return
     */
    private DisplayImageOptions getWholeOptions() {
        DisplayImageOptions options = new DisplayImageOptions.Builder() 
        .showImageOnLoading(R.drawable.loading) //設定圖片在下載期間顯示的圖片 
        .showImageForEmptyUri(R.drawable.ic_launcher)//設定圖片Uri為空白或是錯誤的時候顯示的圖片 
        .showImageOnFail(R.drawable.error)  //設定圖片載入/解碼過程中錯誤時候顯示的圖片
        .cacheInMemory(true)//設定下載的圖片是否緩衝在記憶體中 
        .cacheOnDisk(true)//設定下載的圖片是否緩衝在SD卡中 
        .considerExifParams(true)  //是否考慮JPEG映像EXIF參數(旋轉,翻轉)
        .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//設定圖片以如何的編碼方式顯示 
        .bitmapConfig(Bitmap.Config.RGB_565)//設定圖片的解碼類型
        //.decodingOptions(BitmapFactory.Options decodingOptions)//設定圖片的解碼配置 
        .delayBeforeLoading(0)//int delayInMillis為你設定的下載前的延遲時間
        //設定圖片加入緩衝前,對bitmap進行設定 
        //.preProcessor(BitmapProcessor preProcessor) 
        .resetViewBeforeLoading(true)//設定圖片在下載前是否重設,複位 
        .displayer(new RoundedBitmapDisplayer(20))//不推薦用!!!!是否設定為圓角,弧度為多少 
        .displayer(new FadeInBitmapDisplayer(100))//是否圖片載入好後漸入的動畫時間,可能會出現閃動
        .build();//構建完成
       
        return options;
    }

2.一般常用的配置

    /**
     * 設定常用的設定項
     * @return
     */
    private DisplayImageOptions getSimpleOptions() {
        DisplayImageOptions options = new DisplayImageOptions.Builder() 
        .showImageOnLoading(R.drawable.loading) //設定圖片在下載期間顯示的圖片 
        .showImageForEmptyUri(R.drawable.ic_launcher)//設定圖片Uri為空白或是錯誤的時候顯示的圖片 
        .showImageOnFail(R.drawable.error)  //設定圖片載入/解碼過程中錯誤時候顯示的圖片
        .cacheInMemory(true)//設定下載的圖片是否緩衝在記憶體中 
        .cacheOnDisk(true)//設定下載的圖片是否緩衝在SD卡中 
        .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//設定圖片以如何的編碼方式顯示 
        .bitmapConfig(Bitmap.Config.RGB_565)//設定圖片的解碼類型
        .build();//構建完成
        return options;
    }
 

注意:這裡面的參數當然也是可以隨意修改的,根據項目需要再定!

幾點說明:

 
1).imageScaleType(ImageScaleType imageScaleType)  //設定圖片的縮放方式,如:

.imageScaleType(ImageScaleType.IN_SAMPLE_INT)
 

其中,mageScaleType的選擇值:
EXACTLY :映像將完全按比例縮小的目標大小
EXACTLY_STRETCHED:圖片會縮放到目標大小完全
IN_SAMPLE_INT:映像將被二次採樣的整數倍
IN_SAMPLE_POWER_OF_2:圖片將降低2倍,直到下一減少步驟,使映像更小的目標大小
NONE:圖片不會調整

 2).displayer(BitmapDisplayer displayer)  // 設定圖片的顯示方式,如:

.displayer(new FadeInBitmapDisplayer(100))
 

其中,displayer的選擇值:

 

RoundedBitmapDisplayer(int roundPixels)設定圓角圖片,不推薦!!!
FakeBitmapDisplayer()這個類什麼都沒做
FadeInBitmapDisplayer(int durationMillis)設定圖片漸顯的時間
SimpleBitmapDisplayer()正常顯示一張圖片

 

3.避免OOM

 

.bitmapConfig(Bitmap.Config.RGB_565) //預設是ARGB_8888,使用RGB_565會比使用ARGB_8888少消耗2倍的內

 

使用.imageScaleType(ImageScaleType.IN_SAMPLE_INT) 或imageScaleType(ImageScaleType.EXACTLY)

 

避免使用.displayer(new RoundedBitmapDisplayer(20)) //他會建立新的ARGB_8888格式的Bitmap對象;

聯繫我們

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