Android知识总结:Universal-Imageloader学习笔记1 基本功能与配置
2015-11-28 18:55
447 查看
背景
最近换了ImageLoader作为图片缓存工具,在使用时,发现这个框架其实可以实现很多图片处理的功能。在阅读源码时也学习到了不少程序设计方面的知识。在实际开发时,往往自己手中资源很多,很多功能只是自己不了解,浪费了大量时间去寻找其他框架。
今天主要总结了一下ImageLoader的一些基本功能及其配置方式,现在总结如下。
常用全局配置总结
ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context); //设置下载线程的优先级 config.threadPriority(Thread.NORM_PRIORITY - 2); //同一uri地址的图片,解压为两种尺寸的Bitmap,是否允许这两个Bitmap都被缓存 config.denyCacheImageMultipleSizesInMemory(); //硬盘存储文件名的命名方式 //Md5FileNameGenerator //HashCodeFileNameGenerator config.diskCacheFileNameGenerator(new Md5FileNameGenerator()); //硬盘空间大小 config.diskCacheSize(50 * 1024 * 1024); // 50 MiB //处理下载和显示线程的队列类型 先进先出 先进后出 config.tasksProcessingOrder(QueueProcessingType.FIFO); //写错误日志 config.writeDebugLogs(); // Remove for release app //***********************以下内容可以不进行设置*********************************** //为所有用到ImageLoader的地方设置下载选项 如果我们需要在不同页面设置不同种类的图, //则在每个页面中单独进行设置 // DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder(). // cacheInMemory(true). // cacheOnDisk(true). // bitmapConfig(Bitmap.Config.RGB_565). // imageScaleType(ImageScaleType.IN_SAMPLE_INT). // build(); // config.defaultDisplayImageOptions(defaultOptions); //设置硬盘缓存路径和存储结构 //UnlimitedDiskCache 无限制存储 默认存储 在DefaultConfigurationFactory设置 //LimitedAgeDiskCache 有超时的存储方式 String catchPath = context.getExternalCacheDir().getPath().toString() + "/image"; config.diskCache(new UnlimitedDiskCache(new File(catchPath))); //设置内存缓存结构 //FIFOLimitedMemoryCache //FuzzyKeyMemoryCache //LargestLimitedMemoryCache //LimitedAgeMemoryCache //LRULimitedMemoryCache //LruMemoryCache 默认缓存 //UsingFreqLimitedMemoryCache //WeakMemoryCache config.memoryCache(new LruMemoryCache(1024 * 1024)); //下载器 //BaseImageDownloader 默认 //可以使用OkHttp的底层 config.imageDownloader(new OkHttpImageDownloader(context, new OkHttpClient())); //设定缓存文件的数量 //config.diskCacheFileCount(0); //可以设置线程及线程池相关 //可以手动设置加载线程,也可以直接由DefaultConfigurationFractory创建默认 //config.taskExecutor() 下载线程 //config.taskExecutorForCachedImages() 缓存线程 //config.tasksProcessingOrder() 图片处理线程 //设置解码器 解码器用于将图片解压成相应的大小 //用到ImageDecodingInfo参数,用于设置解压的参数 //BaseImageDecoder 默认 //config.imageDecoder(); // Initialize ImageLoader with configuration. ImageLoader.getInstance().init(config.build());
下载option配置总结
options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.ic_stub) //加载时的默认图片 .showImageForEmptyUri(R.drawable.ic_empty) //uri为空时加载的图片 .showImageOnFail(R.drawable.ic_error) //网络错误时加载的图片 .cacheInMemory(true) //是否缓存到内存 .cacheOnDisk(true) //是否缓存到硬盘 .considerExifParams(true) //是否使用Exif信息 (Exif信息可以理解为JPEG图中加入相机相关信息) //添加显示的图片形状 .displayer(new RoundedVignetteBitmapDisplayer(30,10)) //CircleBitmapDisplayer 圆形 //FadeInBitmapDisplayer 逐渐出现 //RoundedBitmapDisplayer 圆边 //RoundedVignetteBitmapDisplayer 圆边 与外框有一层阴影 //SimpleBitmapDisplayer 没变化 //**************************以下选项可以直接默认********************************** //图片拉伸模式 .imageScaleType(ImageScaleType.EXACTLY_STRETCHED) //NONE //NONE_SAFE 如果图片过大,则缩小,适应外部容器 //IN_SAMPLE_POWER_OF_2 如果图片过大,隔点采样,直到适应 //IN_SAMPLE_INT 整数采样 //EXACTLY 将图片完整地放入外部容器 //将图片完整地放入外部容器,节约内存
//设置解码的options,用于配置BitmapFactory的参数 .decodingOptions(new BitmapFactory.Options()) //设置延时加载,默认不延时 .delayBeforeLoading(30) //为ImageDownLoader设置辅助参数 ImageDownloader#getStream(String, Object) .extraForDownloader(null) //为ImageLoadingListener* listener设置Handler .handler(null) //硬盘解码完毕时进行预处理图片 .preProcessor(new BitmapProcessor() { @Override public Bitmap process(Bitmap bitmap) { return bitmap; } }) //显示前处理图片 .postProcessor(new BitmapProcessor() { @Override public Bitmap process(Bitmap bitmap) { return bitmap; } }) .build();
相关文章推荐
- Android系统源码下载过程
- android中用Spannable在TextView中设置超链接、颜色、字体
- Android环境的搭建
- Android播放视频
- Android Studio手把手——帮你了解Gradle
- android---logcat
- Android的绘图机制学习---自定义View
- Android使用AlarmManager全局定时器实现定时更换壁纸
- android-Creating a Content Provider
- 【分享】Android Studio专用文件转换工具:把ANSI文件批量另存为无BOM的UTF-8文件
- Android验证码简单设计
- Activity 生命周期回顾 onSaveInstanceState()
- Android逆向之旅---静态分析技术来破解Apk
- android生命周期:activity
- Android兼容性问题 -- RelativeLayout.mesure()出现NullPointerException异常
- Android自定义view以及组合view
- android MotionEvent
- Android开发中getleft和getX,getRawX的区别
- Android开源BezierView:仿QQ未读消息99+条的红色气泡
- android学习3——长宽的单位问题dp,px,dpi