Android中图片处理库Universal-ImageLoader的基本使用
2016-02-17 09:35
681 查看
Universal-ImageLoader的简介和特点:
Universal-ImageLoader是目前Android主流的图片处理库框架之一,作者是白俄罗斯的Sergey Tarasevich。
在Android图片处理中需要考虑的问题很多,例如OOM、图片缓存和网络图片加载、多线程问题及图片压缩处理等等复杂的问题。但是
Universal-ImageLoader已经帮我们把这些问题处理好了,对外提供了相应的完善的请求API,我们只需要按照要求使用即可。
Universal-ImageLoader特点:
支持本地图片和网络图片的多线程异步加载和缓存处理
个性化的配置自己项目的ImageLoader
图片加载过程的监听回调
自动对加载的图片针对当前剩余内存进行裁剪优化,防止OOM
较好的控制图片的加载过程,例如暂停
图片加载,重新开始加载图片
缺点:没有对本地文件压缩处理的相关API方法以及默认都是Src模式设置图片,没有针对
Background属性开放API。
本课时主要介绍Universal-ImageLoader的用法,包含以下几个知识点:
Universal-ImageLoader的配置
用Universal-
ImageLoader加载网络图片和本地图片
Universal-ImageLoader的用法和案例 — Universal-ImageLoader的配置
可以全局配置:在Application里进行配置。
可以针对单一加载图片的地方配置。
例如:可配置图片缓存保存路径、线程池内
加载的数量、缓存的文件数量 、每个缓存文件的最大长宽、加载过程中和加载失败时显示的图片等等。
Universal-ImageLoader支持网络图片的加载和本地图片的加载,而且可以自动缓存、自动根据当前手机环境进行压缩处理防止出现OOM。
也可以监听整个图片的加载过程,可控。
简单例子:
MyApplication中对ImageLoad的进行配置
MainActivity中
主清单文件中
效果:
需要导入的jar包:
universal-image-loader-1.9.3.jar
源码及jar包下载:
http://download.csdn.net/detail/zhaihaohao1/9433869
Universal-ImageLoader是目前Android主流的图片处理库框架之一,作者是白俄罗斯的Sergey Tarasevich。
在Android图片处理中需要考虑的问题很多,例如OOM、图片缓存和网络图片加载、多线程问题及图片压缩处理等等复杂的问题。但是
Universal-ImageLoader已经帮我们把这些问题处理好了,对外提供了相应的完善的请求API,我们只需要按照要求使用即可。
Universal-ImageLoader特点:
支持本地图片和网络图片的多线程异步加载和缓存处理
个性化的配置自己项目的ImageLoader
图片加载过程的监听回调
自动对加载的图片针对当前剩余内存进行裁剪优化,防止OOM
较好的控制图片的加载过程,例如暂停
图片加载,重新开始加载图片
缺点:没有对本地文件压缩处理的相关API方法以及默认都是Src模式设置图片,没有针对
Background属性开放API。
本课时主要介绍Universal-ImageLoader的用法,包含以下几个知识点:
Universal-ImageLoader的配置
用Universal-
ImageLoader加载网络图片和本地图片
Universal-ImageLoader的用法和案例 — Universal-ImageLoader的配置
可以全局配置:在Application里进行配置。
可以针对单一加载图片的地方配置。
例如:可配置图片缓存保存路径、线程池内
加载的数量、缓存的文件数量 、每个缓存文件的最大长宽、加载过程中和加载失败时显示的图片等等。
Universal-ImageLoader支持网络图片的加载和本地图片的加载,而且可以自动缓存、自动根据当前手机环境进行压缩处理防止出现OOM。
也可以监听整个图片的加载过程,可控。
简单例子:
MyApplication中对ImageLoad的进行配置
public class MyApplication extends Application { @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder( this) .memoryCacheExtraOptions(480, 800) // max width, max height,即保存的每个缓存文件的最大长宽 .discCacheExtraOptions(480, 800, null) // Can slow ImageLoader, use it carefully (Better don't use // it)/设置缓存的详细信息,最好不要设置这个 .threadPoolSize(3) // 线程池内加载的数量 .threadPriority(Thread.NORM_PRIORITY - 2) .denyCacheImageMultipleSizesInMemory() .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache // implementation/你可以通过自己的内存缓存实现 .memoryCacheSize(2 * 1024 * 1024) .discCacheSize(50 * 1024 * 1024) .discCacheFileNameGenerator(new Md5FileNameGenerator()) // 将保存的时候的URI名称用MD5 加密 .tasksProcessingOrder(QueueProcessingType.LIFO) .discCacheFileCount(100) // 缓存的文件数量 .discCache( new UnlimitedDiscCache(new File(Environment .getExternalStorageDirectory() + "/myApp/imgCache"))) // 自定义缓存路径 .defaultDisplayImageOptions(getDisplayOptions()) .imageDownloader( new BaseImageDownloader(this, 5 * 1000, 30 * 1000)) .writeDebugLogs() // Remove for release app .build();// 开始构建 ImageLoader.getInstance().init(config); } private DisplayImageOptions getDisplayOptions() { 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(20))// 是否设置为圆角,弧度为多少 .displayer(new FadeInBitmapDisplayer(100))// 是否图片加载好后渐入的动画时间 .build();// 构建完成 return options; } }
MainActivity中
/** * 1、 Universal-ImageLoader的配置 * * 2、用Universal-ImageLoader加载网络图片和本地图片 * * @author Administrator * */ public class MainActivity extends Activity { private ImageLoader loader; private ImageView iv_img; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); loader = ImageLoader.getInstance(); iv_img = (ImageView) this.findViewById(R.id.iv_img); // 加载本地图片 // String uri = "file:///" + "本地路径"; // loader.displayImage( // "http://c.hiphotos.baidu.com/image/pic/item/b3fb43166d224f4a42e295fa0df790529922d1e4.jpg", // iv_img); loader.displayImage( "http://c.hiphotos.baidu.com/image/pic/item/b3fb43166d224f4a42e295fa0df790529922d1e4.jpg", iv_img, new ImageLoadingListener() { // 加载开始 @Override public void onLoadingStarted(String arg0, View arg1) { Log.i("info", "onLoadingStarted"); } // 加载失败 @Override public void onLoadingFailed(String arg0, View arg1, FailReason arg2) { Log.i("info", "onLoadingFailed"); } // 加载完成 @Override public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) { Log.i("info", "onLoadingComplete"); } // 加载取消 @Override public void onLoadingCancelled(String arg0, View arg1) { Log.i("info", "onLoadingCancelled"); } }); } }
主清单文件中
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <application android:name="com.jike.imageloaderdemo.MyApplication" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.jike.imageloaderdemo.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
效果:
需要导入的jar包:
universal-image-loader-1.9.3.jar
源码及jar包下载:
http://download.csdn.net/detail/zhaihaohao1/9433869
相关文章推荐
- Android中Bundle类的作用
- Android intent 属性详解(一)
- Android Activity设置为dialog样式,去掉标题栏
- Android编程绘制圆形图片的方法
- 框架模式MVP在Android中的使用
- 框架模式 MVC 在Android中的使用
- Android内存优化
- Android自定义控件(三)——打造闪闪发光的字体
- Android中scrollTo()和scrollBy()的区别以及Scroller源码解析
- Android应用使用的技术框架和开源库
- 部分Android手机拍照后照片被旋转的解决方案
- Android sqlite sql语句基础
- 干货分享:分析Android应用使用的技术框架和开源库
- Android图片下载缓存库picasso解析
- Android socket 实例(1)
- Android编程之SurfaceView实例详解
- Android逆向分析(2) APK的打包与安装背后的故事
- Android逆向分析(2) APK的打包与安装背后的故事
- Android逆向分析(2) APK的打包与安装背后的故事
- 干货分享:分析Android应用使用的技术框架和开源库