android 图片网络下载github开源框架之Universal-Image-Loader
2015-04-14 12:08
429 查看
最近在做妙趣剪纸项目,剪纸应用项目链接。发扬传统文化,大家多多关注。
需要自己搭建服务器,我用的是新浪sae,简直秒杀京东云几条街,把图片放在网上下载,但是图片经常下载要遇到很多问题,包括oom等。所以研究了一下这个框架。
1.Universal-Image-Loader应用广泛,github地址
2.说说这个项目的优点:
(1)首先这个工具能够获取各个途径的图片,包括网络,文件,asserts,以及provider等。
(2)这个工具对网络下载进行了优化,能够自动实现内存和文件的缓存。
(3)这个工具能够对图片获取的全称进行监控跟踪。
3.这个工具怎么使用?
(1)首先github上面下载,然后把其中的jar包导入。
(2)写一个类实现Application,然后把application在manifest中的application标签中注册,由于application是单例,经常用来初始化一些变量。在oncreate()方法中,创建ImageLoader的配置参数,我们采取的是默认,只有设置了配置参数后才可以使用ImageLoader,不然会报错。只有yo代码如下:
(3)ImageLoader单例模式,有两个主要的方法displayImage(), loadImage(),。分别介绍如下:
loadImage()的相关代码:
其中,ImageSize 这个用来在设置图片的饿大小。
DisplayImageOptions这个类用来对设置图片的加载,比如上例设置缓存在内存和文件中。
如果要对全称进行监控,最后一个参数可以实现ImageLoadingListener方法;代码如下:
displayImage()方法示例代码:
displayImage方法可以自动裁剪图片匹配控件。
5.可以打印图片加载过程:
代码如下:
6.我们在加载网络图片的时候,经常有需要显示图片下载进度的需求,Universal-Image-Loader当然也提供这样的功能,只需要在displayImage()方法中传入ImageLoadingProgressListener接口就行了,代码如下
8.哈可以加载其他途径的代码:
需要像上面那样,包裹一下。
9.相信大部分人都是使用GridView,ListView来显示大量的图片,而当我们快速滑动GridView,ListView,我们希望能停止图片的加载,而在GridView,ListView停止滑动的时候加载当前界面的图片,这个框架当然也提供这个功能,使用起来也很简单,它提供了PauseOnScrollListener这个类来控制ListView,GridView滑动过程中停止去加载图片,该类使用的是代理模式
[java] view plaincopy在CODE上查看代码片派生到我的代码片
第一个参数就是我们的图片加载对象ImageLoader, 第二个是控制是否在滑动过程中暂停加载图片,如果需要暂停传true就行了,第三个参数控制猛的滑动界面的时候图片是否加载
10.总结:
loadImage()方法主要通过回调ImageLoadingListener的onLoadingComplete方法,来显示图片。
diaplayImage()方法吧ImageView作为参数传进去,对iamgeView的是若引用,方便垃圾回收,并且可以根据控件的width和height属性,对土拍进行裁剪。
需要自己搭建服务器,我用的是新浪sae,简直秒杀京东云几条街,把图片放在网上下载,但是图片经常下载要遇到很多问题,包括oom等。所以研究了一下这个框架。
1.Universal-Image-Loader应用广泛,github地址
2.说说这个项目的优点:
(1)首先这个工具能够获取各个途径的图片,包括网络,文件,asserts,以及provider等。
(2)这个工具对网络下载进行了优化,能够自动实现内存和文件的缓存。
(3)这个工具能够对图片获取的全称进行监控跟踪。
3.这个工具怎么使用?
(1)首先github上面下载,然后把其中的jar包导入。
(2)写一个类实现Application,然后把application在manifest中的application标签中注册,由于application是单例,经常用来初始化一些变量。在oncreate()方法中,创建ImageLoader的配置参数,我们采取的是默认,只有设置了配置参数后才可以使用ImageLoader,不然会报错。只有yo代码如下:
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration configuration = ImageLoaderConfiguration .createDefault(this); //Initialize ImageLoader with configuration. ImageLoader.getInstance().init(configuration); } }
(3)ImageLoader单例模式,有两个主要的方法displayImage(), loadImage(),。分别介绍如下:
loadImage()的相关代码:
final ImageView mImageView = (ImageView) findViewById(R.id.image); String imageUrl = "https://lh6.googleusercontent.com/-55osAWw3x0Q/URquUtcFr5I/AAAAAAAAAbs/rWlj1RUKrYI/s1024/A%252520Photographer.jpg"; ImageSize mImageSize = new ImageSize(100, 100); //显示图片的配置 DisplayImageOptions options = new DisplayImageOptions.Builder() .cacheInMemory(true) .cacheOnDisk(true) .bitmapConfig(Bitmap.Config.RGB_565) .build(); ImageLoader.getInstance().loadImage(imageUrl, mImageSize, options, new SimpleImageLoadingListener(){ @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { super.onLoadingComplete(imageUri, view, loadedImage); mImageView.setImageBitmap(loadedImage); } });
其中,ImageSize 这个用来在设置图片的饿大小。
DisplayImageOptions这个类用来对设置图片的加载,比如上例设置缓存在内存和文件中。
如果要对全称进行监控,最后一个参数可以实现ImageLoadingListener方法;代码如下:
final ImageView mImageView = (ImageView) findViewById(R.id.image); String imageUrl = "https://lh6.googleusercontent.com/-55osAWw3x0Q/URquUtcFr5I/AAAAAAAAAbs/rWlj1RUKrYI/s1024/A%252520Photographer.jpg"; ImageLoader.getInstance().loadImage(imageUrl, new ImageLoadingListener() { @Override public void onLoadingStarted(String imageUri, View view) { } @Override public void onLoadingFailed(String imageUri, View view, FailReason failReason) { } @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { mImageView.setImageBitmap(loadedImage); } @Override public void onLoadingCancelled(String imageUri, View view) { } });
displayImage()方法示例代码:
final ImageView mImageView = (ImageView) findViewById(R.id.image); String imageUrl = "https://lh6.googleusercontent.com/-55osAWw3x0Q/URquUtcFr5I/AAAAAAAAAbs/rWlj1RUKrYI/s1024/A%252520Photographer.jpg"; //显示图片的配置 DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.ic_stub) .showImageOnFail(R.drawable.ic_error) .cacheInMemory(true) .cacheOnDisk(true) .bitmapConfig(Bitmap.Config.RGB_565) .build(); ImageLoader.getInstance().displayImage(imageUrl, mImageView, options);
displayImage方法可以自动裁剪图片匹配控件。
5.可以打印图片加载过程:
代码如下:
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); //创建默认的ImageLoader配置参数 ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this) .writeDebugLogs() //打印log信息 .build(); //Initialize ImageLoader with configuration. ImageLoader.getInstance().init(configuration); } }
6.我们在加载网络图片的时候,经常有需要显示图片下载进度的需求,Universal-Image-Loader当然也提供这样的功能,只需要在displayImage()方法中传入ImageLoadingProgressListener接口就行了,代码如下
imageLoader.displayImage(imageUrl, mImageView, options, new SimpleImageLoadingListener(), new ImageLoadingProgressListener() { @Override public void onProgressUpdate(String imageUri, View view, int current, int total) { } });
8.哈可以加载其他途径的代码:
String imagePath = "/mnt/sdcard/image.png"; String imageUrl = Scheme.FILE.wrap(imagePath); String contentprividerUrl = "content://media/external/audio/albumart/13"; //图片来源于assets String assetsUrl = Scheme.ASSETS.wrap("image.png"); //图片来源于 String drawableUrl = Scheme.DRAWABLE.wrap("R.drawable.image");
需要像上面那样,包裹一下。
9.相信大部分人都是使用GridView,ListView来显示大量的图片,而当我们快速滑动GridView,ListView,我们希望能停止图片的加载,而在GridView,ListView停止滑动的时候加载当前界面的图片,这个框架当然也提供这个功能,使用起来也很简单,它提供了PauseOnScrollListener这个类来控制ListView,GridView滑动过程中停止去加载图片,该类使用的是代理模式
[java] view plaincopy在CODE上查看代码片派生到我的代码片
listView.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling)); gridView.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling));
第一个参数就是我们的图片加载对象ImageLoader, 第二个是控制是否在滑动过程中暂停加载图片,如果需要暂停传true就行了,第三个参数控制猛的滑动界面的时候图片是否加载
10.总结:
loadImage()方法主要通过回调ImageLoadingListener的onLoadingComplete方法,来显示图片。
diaplayImage()方法吧ImageView作为参数传进去,对iamgeView的是若引用,方便垃圾回收,并且可以根据控件的width和height属性,对土拍进行裁剪。
相关文章推荐
- android 图片网络下载github开源框架之Universal-Image-Loader
- android 图片网络下载github开源框架之Universal-Image-Loader
- Android_开源框架_AndroidUniversalImageLoader网络图片加载
- Android_开源框架_AndroidUniversalImageLoader网络图片加载
- Android_开源框架_AndroidUniversalImageLoader网络图片加载
- Android_开源框架_AndroidUniversalImageLoader网络图片加载
- **Android_开源框架_AndroidUniversalImageLoader网络图片加载**
- Android 开源框架Universal-Image-Loader完全解析(七)---从源代码分析Android-Universal-Image-Loader图片下载技巧
- Android_开源框架_AndroidUniversalImageLoader网络图片加载
- Android_开源框架_AndroidUniversalImageLoader网络图片加载
- 转 Android_开源框架_AndroidUniversalImageLoader网络图片加载
- Android_开源框架_AndroidUniversalImageLoader网络图片加载
- Android_开源框架_AndroidUniversalImageLoader网络图片加载
- Android_开源框架_AndroidUniversalImageLoader网络图片加载
- Android图片框架对比Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android开源组件加载网络图片的优缺点比较
- Android_开源框架_AndroidUniversalImageLoader网络图片加载
- Android_开源框架_AndroidUniversalImageLoader网络图片加载
- Android开源框架--AndroidUniversalImageLoader网络图片加载
- Android_开源框架_AndroidUniversalImageLoader网络图片加载
- [转]Android_开源框架_AndroidUniversalImageLoader网络图片加载