http://blog.csdn.net/king_is_everyone/article/details/35595515

这篇打算直接告诉大家怎么用吧,其实这个也不是很难的框架,大致使用过程如下:

  1. // 获取缓存图片目录
  2. File cacheDir = StorageUtils.getOwnCacheDirectory(activity,
  3. "imageloader/Cache");
  4. ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
  5. activity).memoryCacheExtraOptions(800, 760)
  6. // 保存每个缓存图片的最大长和宽
  7. .threadPoolSize(3)
  8. .diskCache(new UnlimitedDiscCache(cacheDir))
  9. // 线程池的大小 这个其实默认就是3
  10. .memoryCacheSize(2 * 1024)
  11. // 设置缓存的最大字节
  12. .denyCacheImageMultipleSizesInMemory()
  13. // 缓存显示不同大小的同一张图片
  14. .imageDownloader(
  15. new BaseImageDownloader(activity, 5 * 1000, 30 * 1000)) // connectTimeout
  16. // s)超时时间
  17. .build();
  18. imageLoader.init(config);

上面设置的目录在我手机的/storage/sdcard0/imageloader/Cache中文件是没有.jpg或者.png结尾的,是一堆无格式的文件,可以通过扩展名导出打开

第二步设置显示图片选项:

  1. </pre><p></p><p><pre name="code" class="java">DisplayImageOptionsoptions = new DisplayImageOptions.Builder()
  2. .showImageOnLoading(R.drawable.ic_launcher)//设置图片在下载期间显示的图片
  3. .showImageForEmptyUri(R.drawable.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片
  4. .showImageOnFail(R.drawable.ic_launcher)//设置图片加载/解码过程中错误时候显示的图片
  5. .cacheInMemory(true)//设置下载的图片是否缓存在内存中
  6. .cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中
  7. .displayer(new FadeInBitmapDisplayer(100))
  8. .considerExifParams(true)
  9. .displayer(new FadeInBitmapDisplayer(100))// 图片加载好后渐入的动画时间
  10. .displayer(new RoundedBitmapDisplayer(1)).build();//这个一定要设置,不设置的话会导致图片不能够铺满整个控件,这个是设置圆角效果的,如果大家不喜欢圆角可以设置为1几乎没有什么效果

通过上面的代码就可以正常使用了

下面是官方给的一个列子,会android看看下面的这个代码应该就知道怎么使用了吧,非常简单

  1. public class ImageListActivity extends AbsListViewBaseActivity {
  2. DisplayImageOptions options;
  3. String[] imageUrls;
  4. @Override
  5. public void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.ac_image_list);
  8. Bundle bundle = getIntent().getExtras();
  9. imageUrls = bundle.getStringArray(Extra.IMAGES);
  10. options = new DisplayImageOptions.Builder()
  11. .showImageOnLoading(R.drawable.ic_stub)
  12. .showImageForEmptyUri(R.drawable.ic_empty)
  13. .showImageOnFail(R.drawable.ic_error)
  14. .cacheInMemory(true)
  15. .cacheOnDisk(true)
  16. .considerExifParams(true)
  17. .displayer(new RoundedBitmapDisplayer(20))
  18. .build();
  19. listView = (ListView) findViewById(android.R.id.list);
  20. ((ListView) listView).setAdapter(new ItemAdapter());
  21. listView.setOnItemClickListener(new OnItemClickListener() {
  22. @Override
  23. public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  24. startImagePagerActivity(position);
  25. }
  26. });
  27. }
  1. //注意下这里,当按下返回键的时候清除一下在内存中的图片,大家不过要过度依赖自动内存管理,有些时候还是手动去清除掉内存比较好,
  2. @Override
  3. public void onBackPressed() {
  4. AnimateFirstDisplayListener.displayedImages.clear();
  5. super.onBackPressed();
  6. }
  7. private void startImagePagerActivity(int position) {
  8. Intent intent = new Intent(this, ImagePagerActivity.class);
  9. intent.putExtra(Extra.IMAGES, imageUrls);
  10. intent.putExtra(Extra.IMAGE_POSITION, position);
  11. startActivity(intent);
  12. }
  13. private static class ViewHolder {
  14. TextView text;
  15. ImageView image;
  16. }
  17. class ItemAdapter extends BaseAdapter {
  18. private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener();
  19. @Override
  20. public int getCount() {
  21. return imageUrls.length;
  22. }
  23. @Override
  24. public Object getItem(int position) {
  25. return position;
  26. }
  27. @Override
  28. public long getItemId(int position) {
  29. return position;
  30. }
  31. @Override
  32. public View getView(final int position, View convertView, ViewGroup parent) {
  33. View view = convertView;
  34. final ViewHolder holder;
  35. if (convertView == null) {
  36. view = getLayoutInflater().inflate(R.layout.item_list_image, parent, false);
  37. holder = new ViewHolder();
  38. holder.text = (TextView) view.findViewById(R.id.text);
  39. holder.image = (ImageView) view.findViewById(R.id.image);
  40. view.setTag(holder);
  41. } else {
  42. holder = (ViewHolder) view.getTag();
  43. }
  44. holder.text.setText("Item " + (position + 1));
  45. imageLoader.displayImage(imageUrls[position], holder.image, options, animateFirstListener);
  46. return view;
  47. }
  48. }
  49. private static class AnimateFirstDisplayListener extends SimpleImageLoadingListener {
  50. static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>());
  51. @Override
  52. public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
  53. if (loadedImage != null) {
  54. ImageView imageView = (ImageView) view;
  55. boolean firstDisplay = !displayedImages.contains(imageUri);
  56. if (firstDisplay) {
  57. FadeInBitmapDisplayer.animate(imageView, 500);
  58. displayedImages.add(imageUri);
  59. }
  60. }
  61. }
  62. }
  63. }

这是一个demo,这个图片选项最好配置成一个单列类,便于管理和减少内存的溢出。

android图片缓存框架Android-Universal-Image-Loader(二)的更多相关文章

  1. Android图片缓存框架Glide

    Android图片缓存框架Glide Glide是Google提供的一个组件.它具有获取.解码和展示视频剧照.图片.动画等功能.它提供了灵活的API,帮助开发者将Glide应用在几乎任何网络协议栈中. ...

  2. android图片缓存框架Android-Universal-Image-Loader

    http://blog.csdn.net/king_is_everyone/article/details/34107081 最近跟同学们做了一个创业项目,其实跟以前做项目不同,以前大多数都是做web ...

  3. Android图片载入框架最全解析(一),Glide的基本使用方法

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/53759439 本文同步发表于我的微信公众号.扫一扫文章底部的二维码或在微信搜索 郭 ...

  4. Android图片缓存之初识Glide

    前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ...

  5. Android图片缓存之Bitmap详解

    前言: 最近准备研究一下图片缓存框架,基于这个想法觉得还是先了解有关图片缓存的基础知识,今天重点学习一下Bitmap.BitmapFactory这两个类. 图片缓存相关博客地址: Android图片缓 ...

  6. 安卓高级 Android图片缓存之初识Glide

    前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ...

  7. Android图片缓存之初识Glide(三)

    前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ...

  8. Android图片缓存之Bitmap详解(一)

    前言: 最近准备研究一下图片缓存框架,基于这个想法觉得还是先了解有关图片缓存的基础知识,今天重点学习一下Bitmap.BitmapFactory这两个类. Bitmap: Bitmap是Android ...

  9. Android图片缓存之Lru算法

    前言: 上篇我们总结了Bitmap的处理,同时对比了各种处理的效率以及对内存占用大小.我们得知一个应用如果使用大量图片就会导致OOM(out of memory),那该如何处理才能近可能的降低oom发 ...

随机推荐

  1. C++中的static关键字的总结 (转载)

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的st ...

  2. SGU 123.The sum

    #include <iostream> using namespace std; int f[50]={0,1,1}; int main(){ int n,s=0; cin>> ...

  3. css3基础教程十六变形与动画animation

    前面我们讲过的变形与动画一般都是通过鼠标的单击.获得焦点,被点击或对元素进行一定改变后以后触发效果的,那么有没有像Flash一样自动播放的动画效果呢?答案当然是肯定的,这就是我们今天要讲到的anima ...

  4. PHP做支付宝即时到账需注意

    注意:1按照人家的参数规则,规范填写参数列表:2商家信息填写正确:3然后提交走后注意此时告别了咱们的服务器,将在咱们服务器的订单信息提交到了支付宝服务器,然后支付宝服务器进行支付宝支付流程,当如果支付 ...

  5. 全部与精简切换显示jQuery实例教程

    下面是某网站上的一个品牌列表展示效果,用户进入页面时,品牌列表默认是精简显示的(即不完整的品牌列表)效果如下图所示: 用户可以单击商品列表下方的“显示全部品牌”按钮来显示全部的品牌.单击“显示全部品牌 ...

  6. DB2JAVIT:RC=9505解决方案

    DB2JAVIT:RC=9505解决方案 题记:WIN7下装DB2,启动任务中心.控制中心报DB2JAVIT:RC=9505. 解决方案:进入(计算机—>管理—>本地用户和组)把用户加入到 ...

  7. java 下载文件 内容为空。

    检查下是不是io流没有关闭,记得关闭所有流.

  8. Node 之 Express 学习笔记 第一篇 安装

    最近由于工作不忙,正好闲暇时间学学基于 node 的 web开发框架. 现在关于web开发框架除了Express 还有新出的 KOA以及其它一些. 但是想想还是先从 Express 入手吧.因为比较成 ...

  9. 用jQuery实现瀑布流效果学习笔记

    jQuery一直没系统的学,只知道是js库,封装了好多js函数,方便了开发.以前做过一个原生的图片网站瀑布流效果,超级麻烦,这次用了jQuery方法,瞬间代码浓缩了,只有56行js代码.神奇的让我来把 ...

  10. POJ3274-牛的属性-HASH-ACM

    原题:POJ3274 参考:进击的阿俊 已知有n头牛,用一个K位二进制数Ak,Ak-1,...,A1表示一头牛具有的特征,Ai=1表示具有特征i.现给定按顺序排列的N头牛的k位特征值,称某个连续范围内 ...