【tips】:
上一节课讲了如何傻瓜式配置Universal-Image-Loader框架,现在我们来讨论下,如何定义图片下载路径名称以及格式,这里我们就要讨论下了,那么Universal-Image-Loader框架默认缓存的图片会是什么样。
首先我们在内存卡中找到了我们的包:ImageLoader
上面是这几次拿来实验的图片,不过呢,仔细一看其实很不像图片:
我们来看下
==================================================================================
情况一
默认缓存,这种情况下无需做处理,下载下来的是默认的文件格式,名字也是默认。图片大小比原来小。
这是下载下来的图片,观看的时候还要选择。不过好处是基本已经裁剪过了,显示比较小。
==================================================================================
情况二:
自定义缓存位置图片名称以及格式
<!--EndFragment-->
public void loadimage(View v){ final ImageView mImageView = (ImageView) findViewById(R.id.image); String imageUrl="http://p4.so.qhmsg.com/sdr/1228_768_/t01a44e436353c96159.jpg"; // ImageLoader.getInstance().displayImage(imageUrl, mImageView); // imageUrl代表图片的URL地址,imageView代表承载图片的IMAGEVIEW控件 ImageSize mImageSize = new ImageSize(500, 800); //显示图片的配置 DisplayImageOptions options; options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.ic_launcher) //设置图片在下载期间显示的图片 .showImageForEmptyUri(R.drawable.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片 .showImageOnFail(R.drawable.ic_launcher) //设置图片加载/解码过程中错误时候显示的图片 .cacheInMemory(true)//设置下载的图片是否缓存在内存中 .cacheOnDisc(true)//设置下载的图片是否缓存在SD卡中 .considerExifParams(true) //是否考虑JPEG图像EXIF参数(旋转,翻转) .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//设置图片以如何的编码方式显示 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型// //.delayBeforeLoading(int delayInMillis)//int delayInMillis为你设置的下载前的延迟时间 //设置图片加入缓存前,对bitmap进行设置 //.preProcessor(BitmapProcessor preProcessor) .resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位 .displayer(new RoundedBitmapDisplayer(80))//是否设置为圆角,弧度为多少 .displayer(new FadeInBitmapDisplayer(100))//是否图片加载好后渐入的动画时间 .build();//构建完成 for(i=0;i<imgname.length;i++){ imageload.loadImage(imgname[i], mImageSize, options, new SimpleImageLoadingListener(){ @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { super.onLoadingComplete(imageUri, view, loadedImage); mImageView.setImageBitmap(loadedImage); /** 保存方法 */ File f=new File("/storage/emulated/0/imageloader/cache/"+i+".png"); if (f.exists()) { f.delete(); } try { FileOutputStream out = new FileOutputStream(f); loadedImage.compress(Bitmap.CompressFormat.PNG, 90, out); out.flush(); out.close(); Log.i("TAG", "已经保存"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } }
将昨天的代码改了下:
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage)
在这个方法中,下载完成后会给我们一个Bitmap的图片文件,也是用于显示在ImageView上面的,既然已经获取到了Bitmap那么将它保存在本地也是十分方便简单的的,这样的话就可以完美解决默认缓存坑爹的名字和格式了。因为每次下载一个图片需要提供一个URL地址,所以呢为了类区分,专门建立一个类用于存放URL
public class ConfigField { public static class ImageURL{ public static final String yuelu[]=new String[]{"http://img.ivsky.com/img/tupian/img/201105/02/hunan_changsha_yuelushuyuan-013.jpg", "http://pic19.nipic.com/20120327/2885592_152659703164_2.jpg","http://img.ivsky.com/img/tupian/img/201105/02/hunan_changsha_yuelushuyuan-009.jpg" ,"http://a3.att.hudong.com/03/86/20300000432220134079869338986.jpg", "http://img.ivsky.com/img/tupian/img/201105/02/hunan_changsha_yuelushuyuan-001.jpg"}; } }
由上面的代码看出所有的URL保存在String类型数组里面使用static修饰符可以用类直接调用,比较方便。MainActivity建立一个字符串数组来接收这个URL
public String[] imgname=ConfigField.ImageURL.yuelu;
使用for循环一直加载
这样运行后打开手机内存卡看到的情况是:
到此已经成功,上面的代码还有些疑问,因为切割的圆角图片并没有成功,这个回去研究一下,下节课发上来
<!--EndFragment-->
相关推荐
《Android-Universal-Image-Loader:高效图片加载与缓存框架解析》 在移动应用开发中,图片加载和缓存是至关重要的环节,特别是在Android平台上,由于设备性能和网络环境的差异,良好的图片管理策略能显著提升用户...
《Android-Universal-Image-Loader:打造高效图片加载框架》 在移动开发领域,尤其是在Android平台上,图片加载是一项至关重要的任务。用户界面的美观度、应用的流畅性往往与图片处理息息相关。Android-Universal-...
"Android-Universal-Image-Loader-master"是Android平台上的一个开源图片加载框架,它由Sergey Tarasevich开发并维护,旨在提供高效、灵活且易用的图片加载解决方案。该项目包含了一个名为"library"的模块,其中包含...
"Android-Universal-Image-Loader"(以下简称UIL)就是这样一个强大的图片加载框架,它由Sergey Tarasevich开发,并在GitHub上开源。本文将深入探讨UIL的核心功能和使用方法。 一、概述 Android-Universal-Image-...
"Laravel开发-gallery-loader"项目就是一个很好的示例,它展示了如何利用Laravel框架来创建一个智能的图片画廊加载器,能够自动从指定的文件夹中获取并按文件名排序的图像。接下来,我们将深入探讨这个项目中的关键...
总之,Android-Universal-Image-Loader作为一个成熟的图片缓存框架,提供了丰富的功能和高度的定制性,使得开发者能够轻松地解决图片加载的问题,提升应用的性能和用户体验。在实际项目中,结合最佳实践和具体需求...
Universal Image Loader (UIL) 是一个强大的Android图片加载库,它支持缓存策略、图片的解码和显示,并提供了丰富的自定义选项。开发者可以定制图片的加载、显示和缓存策略,以适应不同的应用场景。 "Universal ...
1. 图片加载框架:为了流畅地展示漫画内容,开发者需要一个高效且可定制的图片加载库。在这个Demo中,采用了`universal-image-loader`,这是一个强大的、开源的图片加载和缓存库。它支持异步加载,可以避免UI阻塞,...
此外,对于非图片资源,如背景图或者SVG图标,我们可以通过自定义加载器实现懒加载。Vue-lazyload允许我们为不同的元素类型创建自定义的加载器,只需要在配置中声明即可: ```javascript Vue.use(VueLazyload, { /...
《Universal Image Loader:高效图片加载框架的深度解析》 在移动开发领域,图片加载和管理是必不可少的一部分。尤其是在网络应用中,如何高效、流畅地显示网络图片,同时保证内存使用和用户体验,是开发者们常常...
1. **多图选择框架**:在Android中,实现多图选择通常会用到第三方库,如`Glide`、`Picasso`用于图片加载,`Android-Universal-Image-Loader`或`Fresco`处理图片缓存。此外,专门的多选图片库如` Auswahl`、`Image...
图片加载应避免阻塞主线程,可以采用异步加载技术,如AsyncTask、Loader或者使用现代的图片加载库。同时,为了避免内存溢出,需要考虑图片的缩放和缓存策略。 7. **文件选择器适配Android版本**: 不同Android...
- 使用Loader类:如果需要更精细的控制,例如处理加载进度,可以使用`flash.display.Loader`类先加载图像,然后将加载的BitmapData对象赋值给Image组件的`bitmapData`属性。 4. **图像缩放和对齐**: - 缩放策略...
`afinal`框架是一个轻量级的Android集成库,特别适用于简化网络请求和图片加载等任务。本篇文章将详细探讨如何利用`afinal`框架来实现`ListView`动态加载图片,并添加下拉刷新和上拉更多的功能。 首先,我们要理解`...
- **Loader框架**:在Android中,`LoaderManager`可以帮助我们管理后台数据加载,尤其是在配置变更时,可以自动恢复加载状态。 6. **状态保存与恢复** - **Parcelable接口**:如果项目使用了`Fragment`来实现图片...
"imageLoading"这个文件名可能表示该示例涉及加载图片到应用程序中,然后进行压缩。在Flex中,可以使用Loader类来加载图片资源。一旦图片加载完成,可以将Loader实例的内容转换为BitmapData对象,这样就可以访问像素...
在"2013.8.19_Universal_Image_Loader_Demo"这个示例项目中,你将看到如何在实际应用中集成并使用ImageLoader框架。通过这个示例,你可以学习到如何在listview、gridview、gallery和viewpager等组件中实现图片的异步...
在ListView中,我们可以使用异步加载技术加载网络图片,例如使用`AsyncTask`或者`Loader`框架。不过,考虑到性能和内存管理,更推荐使用第三方库,如Picasso、Glide或者 Fresco,它们都提供了强大的异步图片加载功能...
3. 动态加载图片:如果图片的来源是动态的,例如从服务器获取,可以使用`load()`方法来异步加载图片。 ```actionscript var imageLoader:Loader = new Loader(); imageLoader.contentLoaderInfo.addEventListener...
为了高效地显示大图,避免内存溢出,通常会使用图片加载库,如Glide、Picasso或Universal Image Loader。这些库支持异步加载、图片缓存和内存管理。源码中可能会展示如何集成这些库并实现图片的动态加载。 4. ...