Android 开源框架Universal-ImageLoader的使用

ImageLoader是一款高效的图片加载框架,支持多种缓存策略及图片加载方式。本文介绍其配置与使用方法,包括内存缓存、硬盘缓存、图片大小调整等功能,并提供在GridView中的优化加载示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ImageLoader 是一个图片加载开源框架,他的很多优点帮助我们解决了开发中图片加载的大部分问题。优点如下:

  • 高效加载。基于BitmapFactory.Options的inSampleSize属性缩放图片,减少了OOM的问题。
  • LRU缓存策略。LRU算法的核心思想是释放最近最少使用的缓存,ImageLoader内部用LruCache和DiskLruCache实现内存缓存和硬盘缓存,避免了过多的流量消耗等问题。
  • 图片的同步加载和异步加载。在特定情况下,我们可以灵活使用不同的并发加载方式。

该项目存在于Github上面https://github.com/nostra13/Android-Universal-Image-Loader上。下载完后,我们从根目录中的downloads中获得jar文件,放入我们的开发环境(这里用的是Eclipse)的Libs里面,完成上面步骤,我们就开始使用ImageLoader了。

使用ImageLoader之前的配置工作

  1. 创建一个继承自Application的类,在onCreate()中创建ImageLoader的配置参数。
  2. 配置Android Manifest文件。


public class ImageLoaderConfigurationApption extends Application {

    @Override  
    public void onCreate() {  
        super.onCreate();  
  
        ImageLoaderConfiguration configuration = ImageLoaderConfiguration  
                .createDefault(this);  
          
        ImageLoader.getInstance().init(configuration);  
    }  
}

 <!-- 配置文件 -->
    <uses-permission android:name="android.permission.INTERNET" />  
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
    <application android:name="com.example.imaeloader.ImageLoaderConfigurationApption"></application>

ImageLoader 异步加载图片的两种方式

1、使用ImageLoader对象的loadImage方法,在回调函数中设置Bitmap。一般是这样调用的ImageLoader.getInstance().loadImage(uri, targetImageSize, options, listener);
我们发现这个方法里面有4个参数。
URI:一般指要下载的路径。
targetImageSize:加载图像的的大小。
options:图片的具体配置。如下所示:
 DisplayImageOptions options = new DisplayImageOptions.Builder()  
        .showImageOnLoading(R.drawable.loading) //设置图片在下载期间显示的图片  
        .showImageForEmptyUri(R.drawable.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片  
        .showImageOnFail(R.drawable.error)  //设置图片加载/解码过程中错误时候显示的图片
        .cacheInMemory(true)//设置下载的图片是否缓存在内存中  
        .cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中  
        .considerExifParams(true)  //是否考虑JPEG图像EXIF参数(旋转,翻转)
        .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示  
        .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型
        //.decodingOptions(BitmapFactory.Options decodingOptions)//设置图片的解码配置  
        .delayBeforeLoading(0)//int delayInMillis为你设置的下载前的延迟时间
        //设置图片加入缓存前,对bitmap进行设置  
        //.preProcessor(BitmapProcessor preProcessor)  
        .resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位  
        .displayer(new RoundedBitmapDisplayer(20))//不推荐用!!!!是否设置为圆角,弧度为多少  
        .displayer(new FadeInBitmapDisplayer(100))//是否图片加载好后渐入的动画时间,可能会出现闪动
        .build();//构建完成
4、listener,监听图片加载过程中的加载状态。
下面是这个方法的具体使用。
 String uri="http://avatar.csdn.net/6/6/3/3_oxuanboy1.jpg";
		//单位为PX。
		ImageSize targetImageSize=new ImageSize(100, 100);
		ImageLoader.getInstance().loadImage(uri, targetImageSize, options, new ImageLoadingListener() {
			
			@Override
			public void onLoadingStarted(String arg0, View arg1) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onLoadingFailed(String arg0, View arg1, FailReason arg2) {
				// TODO Auto-generated method stub
				
			}
			//加载完成
			@Override
			public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onLoadingCancelled(String arg0, View arg1) {
				// TODO Auto-generated method stub
				
			}
		});



2、使用ImageLoader对象的DisplayImage方法。相对较为方便,一般使用格式:ImageLoader.getInstance().displayImage(uri, imageAware),参数说明:
URI:调用的地址:
imageAware:加载图片的View。

在GridView里面优化加载


当我们在GridView里面要显示很多图片的时候优化加载,比如在滑动列表的时候 ,和猛的下滑很多的时候。
  gridView.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling));  
内容概要:本文详细解析了2014年全国大学生电子设计竞赛A题——波形发生器的设计与实现。文章首先介绍了比赛背景,强调了该竞赛在高校教育和学生创新能力培养中的重要性。接着,对A题的具体任务进行了深入剖析,包括生成正弦波、方波、三角波及其组合波形,以及对波形频率和幅度的精确控制。文中还探讨了硬件方案的选择,对比了单片机和FPGA的优劣,并分析了直接数字频率合成(DDS)和模拟电路生成波形的不同特点。软件部分则重点介绍了波形生成、频率幅度控制及显示交互的代码实现,并讨论了PID控制算法和快速傅里叶变换(FFT)算法的应用。最后,文章总结了调试过程中常见的问题及解决方案,提出了性能优化的策略,鼓励学生参与电子设计竞赛,提升实践能力和创新思维。 适合人群:对电子设计感兴趣的学生及爱好者,尤其是准备参加电子设计竞赛的大学生。 使用场景及目标:①理解波形发生器的设计原理,掌握正弦波、方波、三角波的生成方法;②学习如何通过软件代码实现波形的频率和幅度控制;③了解硬件方案的选择依据,熟悉单片机和FPGA的特点及应用场景;④掌握调试和优化波形发生器性能的技巧。 阅读建议:本文内容详实,涵盖了从理论到实践的各个方面。读者在学习过程中应结合实际操作,通过动手实验加深理解。建议读者先理解基本概念,再逐步深入到具体实现细节,并在实践中不断优化和完善设计方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值