图片加载使用心得
2016-04-29 08:44
288 查看
一、功能特性:
1、多线程异步加载和显示图片(图片来源于网络、sd卡、assets文件夹,drawable文件夹(不能加载9patch),新增加载视频缩略图)
2、支持通过“listener”监视加载的过程,可以暂停加载图片,在经常使用的ListView、GridView中,可以设置滑动时暂
停加载,停止滑动时加载图片(便于节约流量,在一些优化中可以使用)
3、缓存图片至内存时,可以更加高效的工作
4、高度可定制化(可以根据自己的需求进行各种配置,如:线程池,图片下载器,内存缓存策略等)
5、支持图片的内存缓存,SD卡(文件)缓存
6、在网络速度较慢时,还可以对图片进行加载并设置下载监听
二、配置详解
参数解析:
1)方法1:最简单的方式,我们只需要定义要显示的图片的URL和要显示图片的ImageView。这种情况下,图片的显示选项会使用默认的配置
2)方法2:加载自定义配置的一个图片
3)方法3:加载带监听的一个图片
4)方法4:加载自定义配置且带监听的一个图片
5)方法5:加载自定义配置且带监听和进度条的一个图片
方法演示
1、多线程异步加载和显示图片(图片来源于网络、sd卡、assets文件夹,drawable文件夹(不能加载9patch),新增加载视频缩略图)
"http://site.com/image.png" // from Web "file:///mnt/sdcard/image.png" // from SD card "file:///mnt/sdcard/video.mp4" // from SD card (video thumbnail) "content://media/external/images/media/13" // from content provider "content://media/external/video/media/13" // from content provider (video thumbnail) "assets://image.png" // from assets "drawable://" + R.drawable.img // from drawables (non-9patch images)
2、支持通过“listener”监视加载的过程,可以暂停加载图片,在经常使用的ListView、GridView中,可以设置滑动时暂
停加载,停止滑动时加载图片(便于节约流量,在一些优化中可以使用)
3、缓存图片至内存时,可以更加高效的工作
4、高度可定制化(可以根据自己的需求进行各种配置,如:线程池,图片下载器,内存缓存策略等)
5、支持图片的内存缓存,SD卡(文件)缓存
6、在网络速度较慢时,还可以对图片进行加载并设置下载监听
二、配置详解
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" />
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3' 自己配置参数
ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this);
File cacheDir = StorageUtils.getCacheDirectory(context); //缓存文件夹路径 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) .memoryCacheExtraOptions(480, 800) // default = device screen dimensions 内存缓存文件的最大长宽 .diskCacheExtraOptions(480, 800, null) // 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个 .taskExecutor(...) .taskExecutorForCachedImages(...) .threadPoolSize(3) // default 线程池内加载的数量 .threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级 .tasksProcessingOrder(QueueProcessingType.FIFO) // default .denyCacheImageMultipleSizesInMemory() .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现 .memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值 .memoryCacheSizePercentage(13) // default .diskCache(new UnlimitedDiscCache(cacheDir)) // default 可以自定义缓存路径 .diskCacheSize(50 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值 .diskCacheFileCount(100) // 可以缓存的文件数量 // default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密 .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) .imageDownloader(new BaseImageDownloader(context)) // default .imageDecoder(new BaseImageDecoder()) // default .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default .writeDebugLogs() // 打印debug log .build(); //开始构建 相关显示参数配置 DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.ic_stub) // 设置图片下载期间显示的图片 .showImageForEmptyUri(R.drawable.ic_empty) // 设置图片Uri为空或是错误的时候显示的图片 .showImageOnFail(R.drawable.ic_error) // 设置图片加载或解码过程中发生错误显示的图片 .resetViewBeforeLoading(false) // default 设置图片在加载前是否重置、复位 .delayBeforeLoading(1000) // 下载前的延迟时间 .cacheInMemory(false) // default 设置下载的图片是否缓存在内存中 .cacheOnDisk(false) // default 设置下载的图片是否缓存在SD卡中 .preProcessor(...) .postProcessor(...) .extraForDownloader(...) .considerExifParams(false) // default .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 设置图片以如何的编码方式显示 .bitmapConfig(Bitmap.Config.ARGB_8888) // default 设置图片的解码类型 .decodingOptions(...) // 图片的解码设置 .displayer(new SimpleBitmapDisplayer()) // default 还可以设置圆角图片new RoundedBitmapDisplayer(20) .handler(new Handler()) // default .build(); 加载图片的五种方法
1、 ImageLoader.getInstance().displayImage(uri, imageView); 2、 ImageLoader.getInstance().displayImage(uri, imageView, options); 3、 ImageLoader.getInstance().displayImage(uri, imageView, listener); 4、 ImageLoader.getInstance().displayImage(uri, imageView, options, listener); 5、 ImageLoader.getInstance().displayImage(uri, imageView, options, listener, progressListener);
参数解析:
imageUrl 图片的URL地址 imageView 显示图片的ImageView控件 options DisplayImageOptions配置信息 listener 图片下载情况的监听 progressListener 图片下载进度的监听
1)方法1:最简单的方式,我们只需要定义要显示的图片的URL和要显示图片的ImageView。这种情况下,图片的显示选项会使用默认的配置
2)方法2:加载自定义配置的一个图片
3)方法3:加载带监听的一个图片
4)方法4:加载自定义配置且带监听的一个图片
5)方法5:加载自定义配置且带监听和进度条的一个图片
方法演示
ImageLoader.getInstance().displayImage(uri, imageView, options, new ImageLoadingListener() { @Override public void onLoadingStarted(String arg0, View arg1) { //开始加载 } @Override public void onLoadingFailed(String arg0, View arg1, FailReason arg2) { //加载失败 } @Override public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) { //加载成功 } @Override public void onLoadingCancelled(String arg0, View arg1) { //加载取消 } }, new ImageLoadingProgressListener() { @Override public void onProgressUpdate(String imageUri, View view, int current, int total) { //加载进度 } });
相关文章推荐
- 0429 Scrum团队成立与第6-7章读后感
- 使用 CopyFromScreen 打印当前窗体的副本
- 双向队列 Deque
- java项目中经常碰到的内存溢出问题: java.lang.OutOfMemoryError: PermGen space, 堆内存和非堆内存,写的很好,理解很方便
- java中LinkedList的实现
- 省选过了,又开始更新了。。。
- 0429团队3.0
- 声笔码7.00版现已进入Beta测试阶段
- 0429团队3.0
- Java开发中的23种设计模式详解(转)
- ARRAY_SIZE宏
- CSS可以通过简写的方式来减少带宽的占用,比如属性值的简写、16进制颜色的简写
- ZOJ 3946 Highway Project
- ScrollView嵌套ListView 在某些机型报空指针问题
- 30岁后程序员的出路[转]
- 漫谈程序员(十三)健康程序猿系列之男人晚睡的7大危害
- Bootstrap模态对话框的简单使用
- 漫谈程序员(十三)健康程序猿系列之男人晚睡的7大危害
- 构建之法阅读笔记05
- ArrayList类详解