溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android ListView實現ImageLoader圖片加載的方法

發布時間:2020-09-05 09:28:51 來源:腳本之家 閱讀:267 作者:Simon_Crystin 欄目:移動開發

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

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

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

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

下面就直接進入正題:

1.我們需要去github下載imageloader的jar包,網址上面已經給了,然后放在你的開發環境中,具體怎么操作大家都會的。

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.首先我們要新建一個MyApplication,繼承于application,在oncreate進行配置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中調用下即可。

4.設置圖片顯示屬性

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

5.通過調用displayImage來顯示圖片

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

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

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

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

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

更多關于Android相關內容感興趣的讀者可查看本站專題:《Android圖形與圖像處理技巧總結》、《Android開發入門與進階教程》、《Android調試技巧與常見問題解決方法匯總》、《Android基本組件用法總結》、《Android視圖View技巧總結》、《Android布局layout技巧總結》及《Android控件用法總結》

希望本文所述對大家Android程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女