[Android]異步加載圖片,內存緩存,文件緩存,imageview顯示圖片時增加淡入淡出動畫


以下內容為原創,歡迎轉載,轉載請注明

來自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3574131.html 

這個可以實現ImageView異步加載圖片,內存緩存,文件緩存,imageview顯示圖片時增加淡入淡出動畫。

github地址:https://github.com/wangjiegulu/ImageLoaderSample

解決了:

1. listview加載oom問題

2. listview加載時卡頓的現象

3. listview加載時item中圖片重復錯位等情況

可以配置:

1. 設置加載圖片的最大尺寸

2. 設置默認圖片的顯示

3. 設置圖片位圖模式

4. 設置內存緩存的最大值。

5. 文件緩存保存的目錄

  這個框架基本的代碼是很久以前不知道哪里弄的,零零碎碎的,現在已經優化了很多,所以現在上傳到github上共享。

  講講使用方式吧:

 

首先使用前下載源碼或者jar包(見github:https://github.com/wangjiegulu/ImageLoaderSample

然后進行圖片加載器(ImageLoader)的配置和初始化,推薦的方法如下:

新建MyApplication類,繼承Application,在onCreate中增加如下代碼:

 1 /**
 2  * Created with IntelliJ IDEA.
 3  * Author: wangjie  email:tiantian.china.2@gmail.com
 4  * Date: 14-2-27
 5  * Time: 上午11:25
 6  */
 7 public class MyApplication extends Application{
 8     @Override
 9     public void onCreate() {
10         super.onCreate();
11         ImageLoader.init(getApplicationContext(),
12                 new CacheConfig()
13                     .setDefRequiredSize(600) // 設置默認的加載圖片尺寸(表示寬高任一不超過該值,默認是70px)
14                     .setDefaultResId(R.drawable.ic_launcher) // 設置顯示的默認圖片(默認是0,即空白圖片)
15                     .setBitmapConfig(Bitmap.Config.ARGB_8888) // 設置圖片位圖模式(默認是Bitmap.CacheConfig.ARGB_8888)
16                     .setMemoryCachelimit(Runtime.getRuntime().maxMemory() / 3) // 設置圖片內存緩存大小(默認是Runtime.getRuntime().maxMemory() / 4)
17 //                  .setFileCachePath(Environment.getExternalStorageDirectory().toString() + "/mycache") // 設置文件緩存保存目錄
18         );
19 
20     }
21 
22 
23     ……
24 }

 

然后再AndroidManifest.xml中添加:

<application
            ......
            android:name="MyApplication">
            ......
</application>

到此,配置已經全部完成:

接下來,使用ImageLoader來加載圖片:

 1 holder.progress.setText("0%");
 2     holder.progress.setVisibility(View.VISIBLE);
 3     final ViewHolder vhr = holder;
 4     ImageLoader.getInstances().displayImage(list.get(position), holder.image, new ImageLoader.OnImageLoaderListener() {
 5         @Override
 6         public void onProgressImageLoader(ImageView imageView, int currentSize, int totalSize) {
 7             vhr.progress.setText(currentSize * 100 / totalSize + "%");
 8         }
 9 
10         @Override
11         public void onFinishedImageLoader(ImageView imageView, Bitmap bitmap) {
12             vhr.progress.setVisibility(View.GONE);
13         }
14     });
15     或者:
16     ImageLoader.getInstances().displayImage(url, imageIv);
17     或者
18     ImageLoader.getInstances().displayImage(url, imageIv, 100);

備注:

例子中,用到了一部分注解(與ImageLoader功能無關,但是可以簡化代碼的編寫) 可以點下面連接進入:

github:https://github.com/wangjiegulu/androidInject

博客:

http://www.cnblogs.com/tiantianbyconan/p/3459139.html

http://www.cnblogs.com/tiantianbyconan/p/3540427.html

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM