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

简介:

[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

 

 

 

 

本文转自天天_byconan博客园博客,原文链接:http://www.cnblogs.com/tiantianbyconan/p/3574131.html ,如需转载请自行联系原作者
相关文章
|
1月前
|
存储 前端开发 Java
Android MVVM架构模式下如何避免内存泄漏
Android采用MVVM架构开发项目,如何避免内存泄漏风险?怎样避免内存泄漏?
96 1
|
16天前
|
Android开发 开发者
Android性能优化——内存管理的艺术
Android性能优化——内存管理的艺术
|
1月前
|
编解码 Android开发 UED
构建高效Android应用:从内存优化到用户体验
【10月更文挑战第11天】本文探讨了如何通过内存优化和用户体验改进来构建高效的Android应用。介绍了使用弱引用来减少内存占用、懒加载资源以降低启动时内存消耗、利用Kotlin协程进行异步处理以保持UI流畅,以及采用响应式设计适配不同屏幕尺寸等具体技术手段。
51 2
|
1月前
|
SQL 缓存 Java
JVM知识体系学习三:class文件初始化过程、硬件层数据一致性(硬件层)、缓存行、指令乱序执行问题、如何保证不乱序(volatile等)
这篇文章详细介绍了JVM中类文件的初始化过程、硬件层面的数据一致性问题、缓存行和伪共享、指令乱序执行问题,以及如何通过`volatile`关键字和`synchronized`关键字来保证数据的有序性和可见性。
30 3
|
2月前
|
Java 测试技术 Android开发
Android性能测试——发现和定位内存泄露和卡顿
本文详细介绍了Android应用性能测试中的内存泄漏与卡顿问题及其解决方案。首先,文章描述了使用MAT工具定位内存泄漏的具体步骤,并通过实例展示了如何分析Histogram图表和Dominator Tree。接着,针对卡顿问题,文章探讨了其产生原因,并提供了多种测试方法,包括GPU呈现模式分析、FPS Meter软件测试、绘制圆点计数法及Android Studio自带的GPU监控功能。最后,文章给出了排查卡顿问题的四个方向,帮助开发者优化应用性能。
178 4
Android性能测试——发现和定位内存泄露和卡顿
|
3月前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
131 1
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
3月前
|
存储 缓存 NoSQL
【Azure Redis 缓存 Azure Cache For Redis】如何设置让Azure Redis中的RDB文件暂留更久(如7天)
【Azure Redis 缓存 Azure Cache For Redis】如何设置让Azure Redis中的RDB文件暂留更久(如7天)
|
2月前
|
监控 算法 数据可视化
深入解析Android应用开发中的高效内存管理策略在移动应用开发领域,Android平台因其开放性和灵活性备受开发者青睐。然而,随之而来的是内存管理的复杂性,这对开发者提出了更高的要求。高效的内存管理不仅能够提升应用的性能,还能有效避免因内存泄漏导致的应用崩溃。本文将探讨Android应用开发中的内存管理问题,并提供一系列实用的优化策略,帮助开发者打造更稳定、更高效的应用。
在Android开发中,内存管理是一个绕不开的话题。良好的内存管理机制不仅可以提高应用的运行效率,还能有效预防内存泄漏和过度消耗,从而延长电池寿命并提升用户体验。本文从Android内存管理的基本原理出发,详细讨论了几种常见的内存管理技巧,包括内存泄漏的检测与修复、内存分配与回收的优化方法,以及如何通过合理的编程习惯减少内存开销。通过对这些内容的阐述,旨在为Android开发者提供一套系统化的内存优化指南,助力开发出更加流畅稳定的应用。
73 0
|
3月前
|
编解码 Android开发 UED
【性能狂飙!】揭秘Android应用极速变身秘籍:内存瘦身+用户体验升级,打造丝滑流畅新境界!
【8月更文挑战第12天】构建高效Android应用需全方位优化,尤其重视内存管理和用户体验。通过弱引用降低内存占用,懒加载资源减少启动负担。运用Kotlin协程确保UI流畅不阻塞,响应式设计适配多屏需求。这些策略共同提升了应用性能与用户满意度。
56 1