国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android ListView實(shí)現(xiàn)ImageLoader圖片加載的方法

2019-10-22 18:32:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Android ListView實(shí)現(xiàn)ImageLoader圖片加載的方法。分享給大家供大家參考,具體如下:

最近一直忙著做項(xiàng)目,今天也是忙里偷閑,想寫篇博客來(lái)鞏固下之前在應(yīng)用中所用的知識(shí)。之前我們可能會(huì)也會(huì)肯定遇到了圖片的異步加載問題,然而我們也可能會(huì)遇到圖片二次或多次加載,這是ListView的特性造成的,具體原因不在這里討論,又或者是OOM等問題。今天要講的是一個(gè)開源框架Imageloader,個(gè)人覺得非常的好用。

該框架在github的地址。https://github.com/nostra13/Android-Universal-Image-Loader。我們可以先看看這個(gè)開源庫(kù)存在哪些特征:

① .多線程下載圖片,圖片可以來(lái)源于網(wǎng)絡(luò),文件系統(tǒng),項(xiàng)目文件夾assets中以及drawable中等
② .支持隨意的配置ImageLoader,例如線程池,圖片下載器,內(nèi)存緩存策略,硬盤緩存策略,圖片顯示選項(xiàng)以及其他的一些配置
③ . 支持圖片的內(nèi)存緩存,文件系統(tǒng)緩存或者SD卡緩存
④ .支持圖片下載過程的監(jiān)聽
⑤ .根據(jù)控件(ImageView)的大小對(duì)Bitmap進(jìn)行裁剪,減少Bitmap占用過多的內(nèi)存
⑥ .較好的控制圖片的加載過程,例如暫停圖片加載,重新開始加載圖片,一般使用在ListView,GridView中,滑動(dòng)過程中暫停加載圖片,停止滑動(dòng)的時(shí)候去加載圖片
⑦ .提供在較慢的網(wǎng)絡(luò)下對(duì)圖片進(jìn)行加載

下面就直接進(jìn)入正題:

1.我們需要去github下載imageloader的jar包,網(wǎng)址上面已經(jīng)給了,然后放在你的開發(fā)環(huán)境中,具體怎么操作大家都會(huì)的。

2.配置Android Manifest文件

<manifest> <uses-permission android:name="android.permission.INTERNET" /> <!-- Include next permission if you want to allow UIL to cache images on SD card --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ... <application android:name="MyApplication">  ... </application></manifest>

3.首先我們要新建一個(gè)MyApplication,繼承于application,在oncreate進(jìn)行配置ImageLoader配置。你可以參照下面的代碼。

private void initImageLoader(Context context) {  ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context);  config.threadPoolSize(3);  config.memoryCache(new WeakMemoryCache());  config.threadPriority(Thread.NORM_PRIORITY - 2);  config.denyCacheImageMultipleSizesInMemory();  config.diskCacheFileNameGenerator(new Md5FileNameGenerator());  config.diskCacheSize(50 * 1024 * 1024); // 50 MiB  config.tasksProcessingOrder(QueueProcessingType.LIFO);  ImageLoader.getInstance().init(config.build());}

在onCreate中調(diào)用下即可。

4.設(shè)置圖片顯示屬性

DisplayImageOptions options=new DisplayImageOptions.Builder()// .showStubImage(R.mipmap.ic_launcher)   // 設(shè)置圖片下載期間顯示的圖片.showImageForEmptyUri(R.mipmap.ic_launcher) // 設(shè)置圖片Uri為空或是錯(cuò)誤的時(shí)候顯示的圖片//.showImageOnFail(R.mipmap.ic_launcher)  // 設(shè)置圖片加載或解碼過程中發(fā)生錯(cuò)誤顯示的圖片.cacheInMemory(true)      // 設(shè)置下載的圖片是否緩存在內(nèi)存中.cacheOnDisc(true)      // 設(shè)置下載的圖片是否緩存在SD卡中.build();        // 創(chuàng)建配置過得DisplayImageOption對(duì)象

5.通過調(diào)用displayImage來(lái)顯示圖片

ImageLoader.getInstance().displayImage(url,viewHolder.imageView,options);//第一個(gè)參數(shù),圖片地址URL;第二個(gè)參數(shù):布局控件;第三個(gè)參數(shù):圖片屬性。

這樣就可以完成圖片的加載。

當(dāng)然 這樣做會(huì)有個(gè)小問題,就是圖片會(huì)加載兩次。原因是下載圖片之前會(huì)緩存一次,后面又會(huì)緩存一次,具體原因可以自行百度。我就不在這里討論了。只需要把上面的代碼換成下面這個(gè)就好了。直接上代碼

ImageLoader.getInstance().displayImage    (url,new ImageViewAware(viewHolder.imageView,false),options);//解決圖片重復(fù)加載問題

好了 ,Imageloader就講到這里了 ,有什么問題還希望大家指出來(lái)。

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 获嘉县| 罗江县| 北宁市| 泽普县| 宁都县| 泗阳县| 行唐县| 股票| 青铜峡市| 河池市| 新营市| 汕尾市| 工布江达县| 云林县| 龙里县| 深圳市| 清苑县| 威信县| 小金县| 潼关县| 固镇县| 奎屯市| 茌平县| 吉安市| 杭锦后旗| 克东县| 囊谦县| 米易县| 民乐县| 霍山县| 巫溪县| 抚宁县| 阿勒泰市| 饶阳县| 秦安县| 梅州市| 连山| 永定县| 个旧市| 淮南市| 大余县|