ImageLoader的使用
来源:互联网 发布:淘宝上手机便宜那么多 编辑:程序博客网 时间:2024/05/03 04:16
首先导入我们要使用的jar包,下载地址:https://github.com/nostra13/Android-Universal-Image-Loader;
下载完成后导入我们的工程项目中
然后创建一个类继承Application
首先我们通过位图加工厂得到一个图片设置效果的权限
其次我设置里面的一些效果,直接上代码,里面都有注释
options1 = newDisplayImageOptions.Builder()
// 正在加载时显示的占位图
.showImageOnLoading(R.drawable.ic_launcher)
// URL为空时显示的占位图
.showImageForEmptyUri(R.drawable.ic_launcher)
// 加载失败时显示的占位图
.showImageOnFail(R.drawable.ic_launcher)
// 在加载前是否重置 view,默认为false
.resetViewBeforeLoading(false)
//设置在开始加载前的延迟时间,单位为毫秒,通过 Builder 构建的对象默认为 0
.delayBeforeLoading(1000)
// 是否缓存在内存中,通过 Builder 构建的对象默认为 false
.cacheInMemory(false)
// 是否缓存在磁盘中,通过 Builder 构建的对象默认为 false。
.cacheOnDisk(false)
//缓存在内存之前的处理程序,默认为 null
.preProcessor(null)
//缓存在内存之后的处理程序,默认为 null。
.postProcessor(null)
//下载器需要的辅助信息。下载时传入ImageDownloader.getStream(String, Object)的对象,方便用户自己扩展,默认为 null。
.extraForDownloader(null)
// 是否考虑图片的 EXIF 信息,通过 Builder 构建的对象默认为 false。
.considerExifParams(false)
// 图片的缩放类型,通过 Builder 构建的对象默认为IN_SAMPLE_POWER_OF_2
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)
// bitmap的质量,默认为ARGB_8888
.bitmapConfig(Bitmap.Config.ARGB_8888)
//为 BitmapFactory.Options,用于BitmapFactory.decodeStream(imageStream, null, decodingOptions)得到图片尺寸等信息。
.decodingOptions(options)
// 在ImageAware中显示 bitmap 对象的接口。可在实现中对 bitmap 做一些额外处理,比如加圆角、动画效果。
.displayer(new SimpleBitmapDisplayer())
// handler 对象,默认为 null
.handler(new Handler())
.build();
注:我在这里 举了两个不同的效果,可以给图片加一些圆角
options2 = new DisplayImageOptions.Builder()
// 正在加载时显示的占位图
.showImageOnLoading(R.drawable.ic_launcher)
// URL为空时显示的占位图
.showImageForEmptyUri(R.drawable.ic_launcher)
// 加载失败时显示的占位图
.showImageOnFail(R.drawable.ic_launcher)
// 在加载前是否重置 view,默认为false
.resetViewBeforeLoading(false)
//设置在开始加载前的延迟时间,单位为毫秒,通过 Builder 构建的对象默认为 0
.delayBeforeLoading(1000)
// 是否缓存在内存中,通过 Builder 构建的对象默认为 false
.cacheInMemory(false)
// 是否缓存在磁盘中,通过 Builder 构建的对象默认为 false。
.cacheOnDisk(false)
//缓存在内存之前的处理程序,默认为 null
.preProcessor(null)
//缓存在内存之后的处理程序,默认为 null。
.postProcessor(null)
//下载器需要的辅助信息。下载时传入ImageDownloader.getStream(String, Object)的对象,方便用户自己扩展,默认为 null。
.extraForDownloader(null)
// 是否考虑图片的 EXIF 信息,通过 Builder 构建的对象默认为 false。
.considerExifParams(false)
// 图片的缩放类型,通过 Builder 构建的对象默认为IN_SAMPLE_POWER_OF_2
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)
// bitmap的质量,默认为ARGB_8888
.bitmapConfig(Bitmap.Config.ARGB_8888)
//为 BitmapFactory.Options,用于BitmapFactory.decodeStream(imageStream, null, decodingOptions)得到图片尺寸等信息。
.decodingOptions(options)
// 在ImageAware中显示 bitmap 对象的接口。可在实现中对 bitmap 做一些额外处理,比如加圆角、动画效果。
.displayer(new RoundedBitmapDisplayer(20))//圆角的一个设置
// handler 对象,默认为 null
.handler(new Handler())
.build();
然后我们在配置一下里面的参数,直接上代码
//初始化配置参数
public static ImageLoaderConfiguration configuration(Context context){
//这里的路径可以自定义
File chFile=StorageUtils.getCacheDirectory(context);
//拿到一个图片加载的参数构造器
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(context)
// 默认等于你的屏幕尺寸,设备屏幕宽高
.memoryCacheExtraOptions(480, 800)
// 在将下载的图片保存到你的sd卡之前会重新计算,压缩。
// 这个属性不要滥用,只有你在对应的需求时再用,因为他会使你的ImageLoader变的很慢。
.diskCacheExtraOptions(480, 800, null)
//用于执行从源获取图片任务的 Executor,为configuration中的 taskExecutor,
// 如果为null,则会调用DefaultConfigurationFactory.createExecutor(…)根据配置返回一个默认的线程池。
.taskExecutor(null)
//用于执行从缓存获取图片任务的 Executor,为configuration中的 taskExecutorForCachedImages,
// 如果为null,则会调用DefaultConfigurationFactory.createExecutor(…)根据配置返回一个默认的线程池。
.taskExecutorForCachedImages(null)
// 表示核心池大小(最大并发数) 默认为3
.threadPoolSize(3)
// 线程优先级,默认Thread.NORM_PRIORITY - 2
.threadPriority(Thread.NORM_PRIORITY - 2)
// 任务进程的顺序,默认为:FIFO 先进先出
.tasksProcessingOrder(QueueProcessingType.FIFO)
//设置内存缓存不允许缓存一张图片的多个尺寸,默认允许。
.denyCacheImageMultipleSizesInMemory()
//图片内存缓存
.memoryCache(new LruMemoryCache(2 * 1024 * 1024))
//memoryCacheSize 为 0,则设置该内存缓存的最大字节数为 App 最大可用内存的 1/8。
.memoryCacheSize(2 * 1024 * 1024)
// 创建最大的内存缓存百分比,默认为 13%
.memoryCacheSizePercentage(13)
// 硬盘缓存路径,默认为StorageUtils.getCacheDirectory(context)
.diskCache(new UnlimitedDiskCache(chFile))
//硬盘缓存大小
.diskCacheSize(50 * 1024 * 1024)
//缓存文件数量
.diskCacheFileCount(100)
// 硬盘缓存文件名生成器,默认为哈希文件名生成器
.diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
// 创建图片下载器,默认是BaseImageDownloader
.imageDownloader(new BaseImageDownloader(context))
// 图片解码器,负责将图片输入流InputStream转换为Bitmap对象
.imageDecoder(new BaseImageDecoder(true))
// 图片显示的配置项。比如加载前、加载中、加载失败应该显示的占位图片,图片是否需要在磁盘缓存,是否需要在内存缓存等。
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
//是否显示调试log信息
.writeDebugLogs()
.build();
return configuration;
以上配置可以按照自己的要求来设置,都有注释,自己更改的话应该不难
然后返回这个配置参数,当然这些还是不够的,我们还没有拿到ImageLoader实例
//拿到一个ImageLoader的实例
public static ImageLoader getLoader(Context context){
if (loader==null) {
loader = ImageLoader.getInstance();
//给ImageLoader设置配置参数
loader.init(configuration(context));
//给imageloader设置显示参数:定义怎么显示
initOpation();//控制不同的显示效果
}
return loader;
}
拿到以后我们就可以在MainActivity中调用这个方法获取我们的一些配置,并设置到相应空间上,
public class MainActivity extends Activity {
private String ss="http://img5.imgtn.bdimg.com/it/u=2026257126,3002325057&fm=21&gp=0.jpg";
@Override
//我们需要调用displayImage方法
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyApp.getLoader(getApplicationContext()).displayImage(ss,
(ImageView)findViewById(R.id.imageview),
MyApp.options1);
MyApp.getLoader(getApplicationContext()).displayImage("http://y2.ifengimg.com/a/" +
"2015_38/2cafb01b79a4f86.jpg",
(ImageView)findViewById(R.id.imageview2),
MyApp.options2);
}
}
显示的是两个不同效果的图片,我在这里是直接给了两个网址,这样就可以了,大家可以按照我的感受一下,当然还有很多,比如从网络获取图片的时候,我们都可以用ImageLoader,其实本人感觉ImageLoader还是非常好用的~~~~
- ImageLoader的使用
- ImageLoader的使用
- 开源库ImageLoader的使用
- ImageLoader的基本使用
- ImageLoader的使用
- ImageLoader的使用
- ImageLoader的简单使用
- ImageLoader的基本使用
- imageloader的简单使用
- ImageLoader的使用
- ImageLoader的使用
- ImageLoader的使用
- ImageLoader的配置使用
- ImageLoader的使用
- ImageLoader的使用
- ImageLoader的简单使用
- imageloader的使用
- ImageLoader的简单使用
- web开发会话跟踪技术
- HashMap HashTable和ConcurrentHashMap的区别
- 4点起床读书心得
- C#控制台基础 使用file类创建一个文件
- 枚举1到n所有数的倍数
- ImageLoader的使用
- 【转载】移植openssh至arm9嵌入式开发板及常见错误
- Mutt+msmtp使用外部邮箱发送邮件
- CVTE2017校招笔试题回忆(C++岗)
- VMware 虚拟机下Ubuntu 16.04 VMware Tools 安装详解
- cygwin配置及使用参考
- shell变量算术运算
- 深度理解开发中的设计模式
- 极客 - 博文15 - 判断是否是闰年