亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

使用ImageLoader實現圖片異步加載

系統 1866 0

注:下面使用的是包:1.8.4,其他版本包的,DisplayImageOptions defaultOptions和 ImageLoaderConfiguration config2配置不一樣,請看官網 我們經常會從網上加載大量的圖片,處理不好,經常會出現內存溢出,導致app崩潰,還有下載速度慢登問題。ImageLoader基本避免了這些問題,下載速度快,基本不會出現內存泄漏,還有很好的緩存管理機制,自己感覺很好用的,下面,簡單介紹其使用方法: 官方網址:https://github.com/nostra13/Android-Universal-Image-Loader 1.到官方網站下載最新的包,地址上面這個,進入官網,點擊zip,就可以下載需要的包了,里面有使用例子。 2.將下載包解壓,把downloads里面的包universal-image-loader-1.8.4.jar加入到你項目的libs里面,注意引入項目,點擊你的項目,右鍵——選擇build path——configure build path——add jars,選擇你項目下面libs里面的包。 點擊ok。 3.開始使用了,使用之前,需要進行配置: 官方網站這么寫的: 1. Include library Manual: Download JAR Put the JAR in the libs subfolder of your Android project or Maven dependency: com.nostra13.universalimageloader universal-image-loader 1.8.4 這種方法,沒用過 2. Android Manifest 配置文件里面加入訪問網絡的權限,注冊全局使用的類 MyApplication(下面創建的),不要忘了註冊相應的activity ,應用啟動后,會首先調用這個類,然后完成我們希望的初始化操作,類在下面 3. Application class public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); // Create global configuration and initialize ImageLoader with this configuration ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) ... .build(); ImageLoader.getInstance().init(config); } } // 創建一個名字叫MyApplicationf的類(名字可以自己隨便取的),繼承Application,重寫onreat方法,在里面初始化Imagerloader。 完整的初始化代碼是這樣的,例子里面拷出來的。 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) .threadPriority(Thread.NORM_PRIORITY - 2) .denyCacheImageMultipleSizesInMemory() .discCacheFileNameGenerator(new Md5FileNameGenerator()) .tasksProcessingOrder(QueueProcessingType.LIFO) .enableLogging() // Not necessary in common .build(); ImageLoader.getInstance().init(config); 這個配置沒有把圖片緩存起來(但是我們可以在后面,加載圖片的時候,設定緩存,看后面使用介紹)。 如果你想把使用的圖片都緩存起來,可以這樣配置:(后面加載圖片,就不需要設置緩存了) DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder() .cacheInMemory() //1.8.6包使用時候,括號里面傳入參數true .cacheOnDisc() //1.8.6包使用時候,括號里面傳入參數true .build(); ImageLoaderConfiguration config2 = new ImageLoaderConfiguration.Builder(context) //contex上下文,在activity里面填入 this即可 .defaultDisplayImageOptions(defaultOptions) .threadPriority(Thread.NORM_PRIORITY - 2) .denyCacheImageMultipleSizesInMemory() .discCacheFileNameGenerator(new Md5FileNameGenerator()) .tasksProcessingOrder(QueueProcessingType.LIFO) .enableLogging() // Not necessary in common //1.8.6包,把這句刪除 .build(); 怎加錄色部分代碼就是了。 也就是說第3步驟完整的應該是這樣:(注意快捷鍵ctrl+shift+o 引入相應包) //沒有把圖片緩存的sdcard的 public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) .threadPriority(Thread.NORM_PRIORITY - 2) .denyCacheImageMultipleSizesInMemory() .discCacheFileNameGenerator(new Md5FileNameGenerator()) .tasksProcessingOrder(QueueProcessingType.LIFO) .enableLogging() // Not necessary in common //1.8.6包,把這句刪除 .build(); ImageLoader.getInstance().init(config); }} //有緩存的配置: public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder() .cacheInMemory() //1.8.6包使用時候,括號里面傳入參數true .cacheOnDisc() //同上 .build(); ImageLoaderConfiguration config2 = new ImageLoaderConfiguration.Builder(context) .defaultDisplayImageOptions(defaultOptions) .threadPriority(Thread.NORM_PRIORITY - 2) .denyCacheImageMultipleSizesInMemory() .discCacheFileNameGenerator(new Md5FileNameGenerator()) .tasksProcessingOrder(QueueProcessingType.LIFO) .enableLogging() // 1.8.6,把這句刪除 .build(); ImageLoader.getInstance().init(config); } } //配置的參數介紹請看官方文檔 好了,配置完成后,我們就可以在任何想用它的地方使用了。具體使用如下(有多種): 就列常用的幾種吧: 1. ImageLoader.getInstance().displayImage(url, ImageView); 在你需要加載圖片的地方調用上面這句話就ok了,url為圖片的url地址,Imageview為你要顯示的imageview。 如果你在上面配置的是有緩存的,那麼使用這個加載圖片,圖片也會被緩存起來的 2. DisplayImageOptions options = new DisplayImageOptions.Builder() .showStubImage(R.drawable.ic_stub) 加載開始默認的圖片 .showImageForEmptyUri(R.drawable.ic_empty) //url爲空會顯示該圖片,自己放在drawable里面的 .showImageOnFail(R.drawable.ic_error) //加載圖片出現問題,會顯示該圖片 .cacheInMemory() //緩存用 .cacheOnDisc() //緩存用 .displayer(new RoundedBitmapDisplayer(5)) //圖片圓角顯示,值為整數 .build(); ImageLoader.getInstance().displayImage(url, imageView,options); 多了一個options,上面已經有注解。當我們在初始化imagerloader時候,沒有加緩存的話,我們可以在這里來配置, 還有可以實現圖片圓角額 3. ImageLoader.getInstance().loadImage(url, new SimpleImageLoadingListener() { public void onLoadingComplete(String imageUri, android.view.View view, android.graphics.Bitmap loadedImage) { imageView.setImageBitmap(loadedImage); //imageView,你要顯示的imageview控件對象,布局文件里面//配置的 }; } ); //還可以給它弄個監聽事件SimpleImageLoadingListener,url還是圖片url地址,SimpleImageLoadingListener里面有好幾個方法,上面這個是圖片下載完成后,我們需要做什么操作。這里是,把獲取的bitmap,顯示在imageview上面。 也就是說,可以用這個方法獲取一個bitmap對象 SimpleImageLoadingListener里面還有幾個重要方法,根據需要在里面進行相應處理 public void onLoadingFailed(String imageUri, android.view.View view, com.nostra13.universalimageloader.core.assist.FailReason failReason) { Toast.makeText(ShowOneImage.this,"加載失敗", Toast.LENGTH_LONG).show(); }; @Override public void onLoadingStarted(String imageUri, View view) { } @Override public void onLoadingCancelled(String imageUri, View view) { }

使用ImageLoader實現圖片異步加載


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 中文字幕国产欧美 | 91精品刘玥在线播放 | 中国特级黄一级真人毛片 | 亚洲aⅴ久久久噜噜噜噜 | 欧美一级毛片香蕉网 | 60欧美老妇做爰视频 | 亚洲欧美日韩精品久久亚洲区 | 国产成人cao在线 | 亚洲看片| 国产精品视频分类一区 | 欧美e片成 人 在线播放乱妇 | 日韩区欧美区 | 国外免费一级 | 日本一区二区免费视频 | 91精品成人免费国产片 | 日日爽夜夜操 | 久久99亚洲综合精品首页 | 久久精品亚洲 | 久久依人 | 99999久久久久久亚洲 | 欧美18videosex护士 | 免费观看日本污污ww网站精选 | 天天做.天天爱.天天综合网 | 久久国产综合尤物免费观看 | 亚洲高清中文字幕一区二区三区 | 黄页在线免费观看 | 99久久99久久精品 | 美女一级毛片免费不卡视频 | 久久99精品久久久久久青青日本 | 香蕉久久高清国产精品免费 | 午夜视频久久久久一区 | 久久8| 色拍自拍亚洲综合在线 | 久久婷婷一区二区三区 | 成年人黄视频大全 | 天天操夜夜爱 | 久久精视频| 天天操夜夜操 | 亚洲天堂三级 | 久久久久久久久久鸭 | 欧美成人鲁丝片在线观看 |