[Android]异步加载图片,内存缓存,文件缓存,imageview显示图片时增加淡入淡出动画

简介: 以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3574131.html  这个可以实现ImageView异步加载图片,内存缓存,文件缓存,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

 

 

 

 

相关文章
|
14天前
|
ARouter Android开发
Android不同module布局文件重名被覆盖
Android不同module布局文件重名被覆盖
|
3月前
|
存储 Shell Android开发
基于Android P,自定义Android开机动画的方法
本文详细介绍了基于Android P系统自定义开机动画的步骤,包括动画文件结构、脚本编写、ZIP打包方法以及如何将自定义动画集成到AOSP源码中。
62 2
基于Android P,自定义Android开机动画的方法
|
3月前
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
200 1
|
5天前
|
Android开发 UED
Android 中加载 Gif 动画
【10月更文挑战第20天】加载 Gif 动画是 Android 开发中的一项重要技能。通过使用第三方库或自定义实现,可以方便地在应用中展示生动的 Gif 动画。在实际应用中,需要根据具体情况进行合理选择和优化,以确保用户体验和性能的平衡。可以通过不断的实践和探索,进一步掌握在 Android 中加载 Gif 动画的技巧和方法,为开发高质量的 Android 应用提供支持。
|
25天前
|
存储 缓存 API
LangChain-18 Caching 将回答内容进行缓存 可在内存中或数据库中持久化缓存
LangChain-18 Caching 将回答内容进行缓存 可在内存中或数据库中持久化缓存
38 6
|
23天前
|
ARouter Android开发
Android不同module布局文件重名被覆盖
Android不同module布局文件重名被覆盖
71 0
|
3月前
|
开发工具 git 索引
repo sync 更新源码 android-12.0.0_r34, fatal: 不能重置索引文件至版本 ‘v2.27^0‘。
本文描述了在更新AOSP 12源码时遇到的repo同步错误,并提供了通过手动git pull更新repo工具来解决这一问题的方法。
112 1
|
3月前
|
缓存 程序员
封装一个给 .NET Framework 用的内存缓存帮助类
封装一个给 .NET Framework 用的内存缓存帮助类
|
3月前
|
缓存 开发框架 .NET
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存