日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Universal-Image-Loader解析(二)——DisplayImageOptions的详细配置与简单的图片加载...

發(fā)布時(shí)間:2023/11/29 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Universal-Image-Loader解析(二)——DisplayImageOptions的详细配置与简单的图片加载... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  在使用這個(gè)框架的時(shí)候,我們必須要配置一個(gè)DisplayImageOptions對(duì)象來作為ImageLoader.getInstance().displayImage()中的參數(shù),所以很有必要講解這個(gè)對(duì)象的配制方法。講解完了后其實(shí)這個(gè)框架我們就會(huì)了解的比較詳盡了。

1.默認(rèn)的配置

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) //設(shè)置圖片在下載期間顯示的圖片 .showImageForEmptyUri(R.drawable.ic_launcher)//設(shè)置圖片Uri為空或是錯(cuò)誤的時(shí)候顯示的圖片 .showImageOnFail(R.drawable.error) //設(shè)置圖片加載/解碼過程中錯(cuò)誤時(shí)候顯示的圖片.cacheInMemory(true)//設(shè)置下載的圖片是否緩存在內(nèi)存中 .cacheOnDisk(true)//設(shè)置下載的圖片是否緩存在SD卡中 .considerExifParams(true) //是否考慮JPEG圖像EXIF參數(shù)(旋轉(zhuǎn),翻轉(zhuǎn)).imageScaleType(ImageScaleType.IN_SAMPLE_INT)//設(shè)置圖片以如何的編碼方式顯示 .bitmapConfig(Bitmap.Config.RGB_565)//設(shè)置圖片的解碼類型//.decodingOptions(BitmapFactory.Options decodingOptions)//設(shè)置圖片的解碼配置 .delayBeforeLoading(0)//int delayInMillis為你設(shè)置的下載前的延遲時(shí)間//設(shè)置圖片加入緩存前,對(duì)bitmap進(jìn)行設(shè)置 //.preProcessor(BitmapProcessor preProcessor) .resetViewBeforeLoading(true)//設(shè)置圖片在下載前是否重置,復(fù)位 .displayer(new RoundedBitmapDisplayer(20))//不推薦用!!!!是否設(shè)置為圓角,弧度為多少 .displayer(new FadeInBitmapDisplayer(100))//是否圖片加載好后漸入的動(dòng)畫時(shí)間,可能會(huì)出現(xiàn)閃動(dòng).build();//構(gòu)建完成return options;}

?

2.一般常用的配置

/*** 設(shè)置常用的設(shè)置項(xiàng)* @return*/private DisplayImageOptions getSimpleOptions() {DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.loading) //設(shè)置圖片在下載期間顯示的圖片 .showImageForEmptyUri(R.drawable.ic_launcher)//設(shè)置圖片Uri為空或是錯(cuò)誤的時(shí)候顯示的圖片 .showImageOnFail(R.drawable.error) //設(shè)置圖片加載/解碼過程中錯(cuò)誤時(shí)候顯示的圖片.cacheInMemory(true)//設(shè)置下載的圖片是否緩存在內(nèi)存中 .cacheOnDisk(true)//設(shè)置下載的圖片是否緩存在SD卡中 .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//設(shè)置圖片以如何的編碼方式顯示 .bitmapConfig(Bitmap.Config.RGB_565)//設(shè)置圖片的解碼類型.build();//構(gòu)建完成return options;}

?

注意:這里面的參數(shù)當(dāng)然也是可以隨意修改的,根據(jù)項(xiàng)目需要再定!

?

幾點(diǎn)說明:

1).imageScaleType(ImageScaleType?imageScaleType) ?//設(shè)置圖片的縮放方式,如:

.imageScaleType(ImageScaleType.IN_SAMPLE_INT)

其中,mageScaleType的選擇值:
? ? ? ? ? ? ? EXACTLY?:圖像將完全按比例縮小的目標(biāo)大小
? ? ? ? ? ? ? EXACTLY_STRETCHED:圖片會(huì)縮放到目標(biāo)大小完全
? ? ? ? ? ? ? IN_SAMPLE_INT:圖像將被二次采樣的整數(shù)倍
? ? ? ? ? ? ? IN_SAMPLE_POWER_OF_2:圖片將降低2倍,直到下一減少步驟,使圖像更小的目標(biāo)大小
? ? ? ? ? ? ? NONE:圖片不會(huì)調(diào)整

2).displayer(BitmapDisplayer?displayer) ?// 設(shè)置圖片的顯示方式,如:

.displayer(new FadeInBitmapDisplayer(100))

其中,displayer的選擇值:

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

?

3.避免OOM

.bitmapConfig(Bitmap.Config.RGB_565) //默認(rèn)是ARGB_8888,使用RGB_565會(huì)比使用ARGB_8888少消耗2倍的內(nèi)

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

避免使用.displayer(new RoundedBitmapDisplayer(20)) //他會(huì)創(chuàng)建新的ARGB_8888格式的Bitmap對(duì)象;

?

4.實(shí)現(xiàn)簡(jiǎn)單的圖片加載

通過了上面的配置我們就可以實(shí)現(xiàn)圖片的加載了,這里以一個(gè)網(wǎng)絡(luò)圖片進(jìn)行舉例:

1.最簡(jiǎn)單的加載

ImageLoader.getInstance().displayImage(imageUrl, imageView); // imageUrl代表圖片的URL地址,imageView代表承載圖片的IMAGEVIEW控件

?

2.有加載項(xiàng)的加載

//顯示圖片的配置DisplayImageOptions options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.ic_stub).showImageOnFail(R.drawable.ic_error).cacheInMemory(true).cacheOnDisk(true).bitmapConfig(Bitmap.Config.RGB_565).build();final ImageView mImageView = (ImageView) findViewById(R.id.image);String imageUrl = "https://img-my.csdn.net/uploads/201309/01/1378037235_7476.jpg";imageLoader.displayImage(imageUrl, mImageView, options);

?

?

?

3.加載時(shí)進(jìn)行監(jiān)聽

public void displayImage(String uri, ImageAware imageAware, DisplayImageOptions options,ImageLoadingListener listener) {} // ImageLoadingListener 用于監(jiān)聽圖片的下載情況。

?

imageLoader.displayImage(imageUrl, imageView, options, new ImageLoadingListener() { @Override public void onLoadingStarted() { //開始加載的時(shí)候執(zhí)行 } @Override public void onLoadingFailed(FailReason failReason) { //加載失敗的時(shí)候執(zhí)行 } @Override public void onLoadingComplete(Bitmap loadedImage) { //加載成功的時(shí)候執(zhí)行 } @Override public void onLoadingCancelled() { //加載取消的時(shí)候執(zhí)行 }});

?

4.監(jiān)聽加載進(jìn)度

public void loadImage(String uri, ImageSize targetImageSize, DisplayImageOptions options,ImageLoadingListener listener, ImageLoadingProgressListener progressListener) {}

?

imageLoader.displayImage(imageUrl, imageView, options, new ImageLoadingListener() { @Override public void onLoadingStarted() { //開始加載的時(shí)候執(zhí)行 } @Override public void onLoadingFailed(FailReason failReason) { //加載失敗的時(shí)候執(zhí)行 } @Override public void onLoadingComplete(Bitmap loadedImage) { //加載成功的時(shí)候執(zhí)行 } @Override public void onLoadingCancelled() { //加載取消的時(shí)候執(zhí)行 },new ImageLoadingProgressListener() { @Override public void onProgressUpdate(String imageUri, View view, int current,int total) { //在這里更新 ProgressBar的進(jìn)度信息 } });

?

ImageLoader.getInstance().displayImage(imageUrl, mImageView, getSimpleOptions(), new SimpleImageLoadingListener(),
new ImageLoadingProgressListener() {@Overridepublic void onProgressUpdate(String imageUri, View view,int current, int total) {double progress = ((double)current/total)*100;System.out.println(progress+"%");progressTv.setText("當(dāng)前進(jìn)度是:" + progress+"%");}});

?

5.轉(zhuǎn)換到Bitmap中

// Load image, decode it to Bitmap and return Bitmap synchronously Bitmap bmp = imageLoader.loadImageSync(imageUri);

?

6.設(shè)置圖片大小

// Load image, decode it to Bitmap and return Bitmap to callback ImageSize targetSize = new ImageSize(80, 50); // result Bitmap will be fit to this size imageLoader.loadImage(imageUri, targetSize, options, new SimpleImageLoadingListener() {@Overridepublic void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {// Do whatever you want with Bitmap } });

?

7.加載其他來源的圖片

String imageUri = "http://site.com/image.png"; // from Web String imageUri = "file:///mnt/sdcard/image.png"; // from SD card String imageUri = "content://media/external/audio/albumart/1"; // from content provider String imageUri = "assets://image.png"; // from assets String imageUri = "drawable://" + R.drawable.img; // from drawables (non-9patch images)

ps:當(dāng)你真的需要用drawable://+……這種形式的時(shí)候再用這種形式,否則請(qǐng)考慮傳統(tǒng)的方式ImageView.setImageResource(...)來設(shè)置圖片!!!!

others:

    //圖片來源于Content providerString contentprividerUrl = "content://media/external/audio/albumart/13";//圖片來源于assetsString assetsUrl = Scheme.ASSETS.wrap("image.png");//圖片來源于String drawableUrl = Scheme.DRAWABLE.wrap("R.drawable.image");

?

Activity代碼:

package com.kale.universalimageloadertest;import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.TextView;import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.FailReason; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; import com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener; import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final TextView progressTv = (TextView)findViewById(R.id.progress_textView);final ImageView mImageView = (ImageView) findViewById(R.id.image); //圖片來自于SD卡//String imagePath = "/mnt/sdcard/image.png"; /// String imageUrl = Scheme.FILE.wrap(imagePath); //圖片來自于網(wǎng)絡(luò)String imageUrl = "http://static4.photo.sina.com.cn/middle/69670edbx9475f3f01283&690"; ImageLoader.getInstance().displayImage(imageUrl, mImageView, getSimpleOptions(), new SimpleImageLoadingListener(), new ImageLoadingProgressListener() {@Overridepublic void onProgressUpdate(String imageUri, View view,int current, int total) {double progress = ((double)current/total)*100;System.out.println(progress+"%");progressTv.setText("當(dāng)前進(jìn)度是:" + progress+"%");}});//清除緩存 ImageLoader.getInstance().clearDiskCache();ImageLoader.getInstance().clearMemoryCache();}/*** 設(shè)置常用的設(shè)置項(xiàng)* @return*/private DisplayImageOptions getSimpleOptions() {DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.loading) //設(shè)置圖片在下載期間顯示的圖片 .showImageForEmptyUri(R.drawable.ic_launcher)//設(shè)置圖片Uri為空或是錯(cuò)誤的時(shí)候顯示的圖片 .showImageOnFail(R.drawable.error) //設(shè)置圖片加載/解碼過程中錯(cuò)誤時(shí)候顯示的圖片.cacheInMemory(true)//設(shè)置下載的圖片是否緩存在內(nèi)存中 .cacheOnDisk(true)//設(shè)置下載的圖片是否緩存在SD卡中 .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//設(shè)置圖片以如何的編碼方式顯示 .bitmapConfig(Bitmap.Config.RGB_565)//設(shè)置圖片的解碼類型.build();//構(gòu)建完成return options;}/*** 顯示圖片的所有配置* @return*/private DisplayImageOptions getWholeOptions() {DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.loading) //設(shè)置圖片在下載期間顯示的圖片 .showImageForEmptyUri(R.drawable.ic_launcher)//設(shè)置圖片Uri為空或是錯(cuò)誤的時(shí)候顯示的圖片 .showImageOnFail(R.drawable.error) //設(shè)置圖片加載/解碼過程中錯(cuò)誤時(shí)候顯示的圖片.cacheInMemory(true)//設(shè)置下載的圖片是否緩存在內(nèi)存中 .cacheOnDisk(true)//設(shè)置下載的圖片是否緩存在SD卡中 .considerExifParams(true) //是否考慮JPEG圖像EXIF參數(shù)(旋轉(zhuǎn),翻轉(zhuǎn)).imageScaleType(ImageScaleType.IN_SAMPLE_INT)//設(shè)置圖片以如何的編碼方式顯示 .bitmapConfig(Bitmap.Config.RGB_565)//設(shè)置圖片的解碼類型//.decodingOptions(BitmapFactory.Options decodingOptions)//設(shè)置圖片的解碼配置 .delayBeforeLoading(0)//int delayInMillis為你設(shè)置的下載前的延遲時(shí)間//設(shè)置圖片加入緩存前,對(duì)bitmap進(jìn)行設(shè)置 //.preProcessor(BitmapProcessor preProcessor) .resetViewBeforeLoading(true)//設(shè)置圖片在下載前是否重置,復(fù)位 .displayer(new RoundedBitmapDisplayer(20))//不推薦用!!!!是否設(shè)置為圓角,弧度為多少 .displayer(new FadeInBitmapDisplayer(100))//是否圖片加載好后漸入的動(dòng)畫時(shí)間,可能會(huì)出現(xiàn)閃動(dòng).build();//構(gòu)建完成return options;}/* 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();*/ }

?

?

參考自:

http://blog.csdn.net/xiaanming/article/details/26810303

http://blog.csdn.net/vipzjyno1/article/details/23206387

?

總結(jié)

以上是生活随笔為你收集整理的Universal-Image-Loader解析(二)——DisplayImageOptions的详细配置与简单的图片加载...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。