`

Image-loader图片加载框架下载图片及自定义路径

阅读更多

【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-->

  • 大小: 14.9 KB
  • 大小: 28.3 KB
  • 大小: 18.4 KB
  • 大小: 6.8 KB
  • 大小: 37.3 KB
0
0
分享到:
评论

相关推荐

    Android-Universal-Image-Loader-master.zip

    《Android-Universal-Image-Loader:高效图片加载与缓存框架解析》 在移动应用开发中,图片加载和缓存是至关重要的环节,特别是在Android平台上,由于设备性能和网络环境的差异,良好的图片管理策略能显著提升用户...

    Android-Universal-Image-Loader-1.9.5

    《Android-Universal-Image-Loader:打造高效图片加载框架》 在移动开发领域,尤其是在Android平台上,图片加载是一项至关重要的任务。用户界面的美观度、应用的流畅性往往与图片处理息息相关。Android-Universal-...

    Android-Universal-Image-Loader-master

    "Android-Universal-Image-Loader-master"是Android平台上的一个开源图片加载框架,它由Sergey Tarasevich开发并维护,旨在提供高效、灵活且易用的图片加载解决方案。该项目包含了一个名为"library"的模块,其中包含...

    Android-Universal-Image-Loader

    "Android-Universal-Image-Loader"(以下简称UIL)就是这样一个强大的图片加载框架,它由Sergey Tarasevich开发,并在GitHub上开源。本文将深入探讨UIL的核心功能和使用方法。 一、概述 Android-Universal-Image-...

    Laravel开发-gallery-loader

    "Laravel开发-gallery-loader"项目就是一个很好的示例,它展示了如何利用Laravel框架来创建一个智能的图片画廊加载器,能够自动从指定的文件夹中获取并按文件名排序的图像。接下来,我们将深入探讨这个项目中的关键...

    图片缓存框架

    总之,Android-Universal-Image-Loader作为一个成熟的图片缓存框架,提供了丰富的功能和高度的定制性,使得开发者能够轻松地解决图片加载的问题,提升应用的性能和用户体验。在实际项目中,结合最佳实践和具体需求...

    Imageload框架使用

    Universal Image Loader (UIL) 是一个强大的Android图片加载库,它支持缓存策略、图片的解码和显示,并提供了丰富的自定义选项。开发者可以定制图片的加载、显示和缓存策略,以适应不同的应用场景。 "Universal ...

    android本地漫画阅读器的小Demo

    1. 图片加载框架:为了流畅地展示漫画内容,开发者需要一个高效且可定制的图片加载库。在这个Demo中,采用了`universal-image-loader`,这是一个强大的、开源的图片加载和缓存库。它支持异步加载,可以避免UI阻塞,...

    基于vue的懒加载插件实现图片或者其他资源进入可视区域后加载

    此外,对于非图片资源,如背景图或者SVG图标,我们可以通过自定义加载器实现懒加载。Vue-lazyload允许我们为不同的元素类型创建自定义的加载器,只需要在配置中声明即可: ```javascript Vue.use(VueLazyload, { /...

    Universal_image

    《Universal Image Loader:高效图片加载框架的深度解析》 在移动开发领域,图片加载和管理是必不可少的一部分。尤其是在网络应用中,如何高效、流畅地显示网络图片,同时保证内存使用和用户体验,是开发者们常常...

    安卓图片多选相关-选择多张照片上传.rar

    1. **多图选择框架**:在Android中,实现多图选择通常会用到第三方库,如`Glide`、`Picasso`用于图片加载,`Android-Universal-Image-Loader`或`Fresco`处理图片缓存。此外,专门的多选图片库如` Auswahl`、`Image...

    Android应用源码之自定义本地相册的功能,可以多选图片用.zip

    图片加载应避免阻塞主线程,可以采用异步加载技术,如AsyncTask、Loader或者使用现代的图片加载库。同时,为了避免内存溢出,需要考虑图片的缩放和缓存策略。 7. **文件选择器适配Android版本**: 不同Android...

    Flex4视频教程_03-03使用Image组件.rar

    - 使用Loader类:如果需要更精细的控制,例如处理加载进度,可以使用`flash.display.Loader`类先加载图像,然后将加载的BitmapData对象赋值给Image组件的`bitmapData`属性。 4. **图像缩放和对齐**: - 缩放策略...

    利用afinal框架实现listview动态加载图片,并且添加下拉刷新,上拉更多功能

    `afinal`框架是一个轻量级的Android集成库,特别适用于简化网络请求和图片加载等任务。本篇文章将详细探讨如何利用`afinal`框架来实现`ListView`动态加载图片,并添加下拉刷新和上拉更多的功能。 首先,我们要理解`...

    安卓图片多选相关-Android超高仿微信图片选择器2016年3月13日升级版.rar

    - **Loader框架**:在Android中,`LoaderManager`可以帮助我们管理后台数据加载,尤其是在配置变更时,可以自动恢复加载状态。 6. **状态保存与恢复** - **Parcelable接口**:如果项目使用了`Fragment`来实现图片...

    图片压缩flex demo

    "imageLoading"这个文件名可能表示该示例涉及加载图片到应用程序中,然后进行压缩。在Flex中,可以使用Loader类来加载图片资源。一旦图片加载完成,可以将Loader实例的内容转换为BitmapData对象,这样就可以访问像素...

    Android开源框架ImageLoader的完美例子

    在"2013.8.19_Universal_Image_Loader_Demo"这个示例项目中,你将看到如何在实际应用中集成并使用ImageLoader框架。通过这个示例,你可以学习到如何在listview、gridview、gallery和viewpager等组件中实现图片的异步...

    listView加载多线程异步下载的图片

    在ListView中,我们可以使用异步加载技术加载网络图片,例如使用`AsyncTask`或者`Loader`框架。不过,考虑到性能和内存管理,更推荐使用第三方库,如Picasso、Glide或者 Fresco,它们都提供了强大的异步图片加载功能...

    flex图片显示 很绚丽的图片显示

    3. 动态加载图片:如果图片的来源是动态的,例如从服务器获取,可以使用`load()`方法来异步加载图片。 ```actionscript var imageLoader:Loader = new Loader(); imageLoader.contentLoaderInfo.addEventListener...

    应用源码Gallery从SD卡中获取图片,并显示.zip

    为了高效地显示大图,避免内存溢出,通常会使用图片加载库,如Glide、Picasso或Universal Image Loader。这些库支持异步加载、图片缓存和内存管理。源码中可能会展示如何集成这些库并实现图片的动态加载。 4. ...

Global site tag (gtag.js) - Google Analytics