Android-Universal-Image-Loader

github地址:https://github.com/nostra13/Android-Universal-Image-Loader

加载缓存网络图片的工具,此工具的最大优点是提供了下载缓存进度接口,缺点需要自己处理加载后的图片

使用效果:

  1. import com.nostra13.universalimageloader.core.DisplayImageOptions;
  2. import com.nostra13.universalimageloader.core.ImageLoader;
  3. import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
  4. import com.nostra13.universalimageloader.core.assist.FailReason;
  5. import com.nostra13.universalimageloader.core.assist.ImageSize;
  6. import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
  7. import com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener;
  8. import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
  9. /** 图片下载demo
  10. * https://github.com/nostra13/Android-Universal-Image-Loader
  11. */
  12. public class UnlversalImageLoaderDemo extends AppCompatActivity implements View.OnClickListener {
  13. private Button mBtn1,mBtn2,mBtn3,mBtn4,mBtn5,mBtn6;
  14. private ImageView mImage;
  15. private ImageLoader mImageLoader;
  16. private Bitmap mBitmap;
  17. private DisplayImageOptions mOptions;
  18. @Override
  19. protected void onCreate(Bundle savedInstanceState) {
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.activity_unlversal_image_loader);
  22. mBtn1 = (Button)findViewById(R.id.btn1);
  23. mBtn2 = (Button)findViewById(R.id.btn2);
  24. mBtn3 = (Button)findViewById(R.id.btn3);
  25. mBtn4 = (Button)findViewById(R.id.btn4);
  26. mBtn5 = (Button)findViewById(R.id.btn5);
  27. mBtn6 = (Button)findViewById(R.id.btn6);
  28. mBtn1.setOnClickListener(this);
  29. mBtn2.setOnClickListener(this);
  30. mBtn3.setOnClickListener(this);
  31. mBtn4.setOnClickListener(this);
  32. mBtn5.setOnClickListener(this);
  33. mBtn6.setOnClickListener(this);
  34. mImage = (ImageView)findViewById(R.id.image);
  35. /**
  36. * 初始化工作
  37. */
  38. ImageLoaderConfiguration imageLoaderConfiguration = new ImageLoaderConfiguration.Builder(UnlversalImageLoaderDemo.this).build();
  39. mImageLoader = ImageLoader.getInstance();
  40. mImageLoader.init(imageLoaderConfiguration);
  41. /* 选项功能模板
  42. DisplayImageOptions options = new DisplayImageOptions.Builder()
  43. .showImageOnLoading(R.drawable.ic_stub) // resource or drawable
  44. .showImageForEmptyUri(R.drawable.ic_empty) // resource or drawable
  45. .showImageOnFail(R.drawable.ic_error) // resource or drawable
  46. .resetViewBeforeLoading(false) // default
  47. .delayBeforeLoading(1000)
  48. .cacheInMemory(false) // default
  49. .cacheOnDisk(false) // default
  50. .preProcessor(...)
  51. .postProcessor(...)
  52. .extraForDownloader(...)
  53. .considerExifParams(false) // default
  54. .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default
  55. .bitmapConfig(Bitmap.Config.ARGB_8888) // default
  56. .decodingOptions(...)
  57. .displayer(new SimpleBitmapDisplayer()) // default
  58. .handler(new Handler()) // default
  59. .build();
  60. */
  61. mOptions = new DisplayImageOptions.Builder().build();
  62. }
  63. @Override
  64. public void onClick(View view) {
  65. switch (view.getId()){
  66. case R.id.btn1:
  67. /**
  68. * 第一种加载图片的方式
  69. */
  70. mImageLoader.displayImage("https://s0.52poke.wiki/wiki/thumb/2/21/001Bulbasaur.png/300px-001Bulbasaur.png",mImage);
  71. break;
  72. case R.id.btn2:
  73. /**
  74. * 第二种加载图片的方式
  75. */
  76. mImageLoader.loadImage("https://s0.52poke.wiki/wiki/thumb/7/73/002Ivysaur.png/300px-002Ivysaur.png",new SimpleImageLoadingListener(){
  77. @Override
  78. public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
  79. mImage.setImageBitmap(loadedImage);
  80. }
  81. });
  82. break;
  83. case R.id.btn3:
  84. /**
  85. * 第三种加载图片的方式
  86. */
  87. mImageLoader.displayImage("https://s0.52poke.wiki/wiki/thumb/a/ae/003Venusaur.png/300px-003Venusaur.png", mImage,mOptions, new ImageLoadingListener() {
  88. @Override
  89. public void onLoadingStarted(String s, View view) {
  90. //开始加载
  91. Toast.makeText(UnlversalImageLoaderDemo.this,"开始加载妙蛙花",Toast.LENGTH_SHORT).show();
  92. }
  93. @Override
  94. public void onLoadingFailed(String s, View view, FailReason failReason) {
  95. //加载失败
  96. Toast.makeText(UnlversalImageLoaderDemo.this,"妙蛙花加载失败",Toast.LENGTH_SHORT).show();
  97. }
  98. @Override
  99. public void onLoadingComplete(String s, View view, Bitmap bitmap) {
  100. //加载成功
  101. Toast.makeText(UnlversalImageLoaderDemo.this,"妙蛙花加载成功",Toast.LENGTH_SHORT).show();
  102. }
  103. @Override
  104. public void onLoadingCancelled(String s, View view) {
  105. //取消加载
  106. Toast.makeText(UnlversalImageLoaderDemo.this,"妙蛙花取消加载",Toast.LENGTH_SHORT).show();
  107. }
  108. }, new ImageLoadingProgressListener() {
  109. @Override
  110. public void onProgressUpdate(String s, View view, int i, int i1) {
  111. //下载进度
  112. /**
  113. * String s = 下载网站url
  114. * View view = 你导入的view 可以是null
  115. * int i = 当前下载字节
  116. * int i1 = 总字节
  117. */
  118. }
  119. });
  120. break;
  121. case R.id.btn4:
  122. /**
  123. * 第四种加载图片的方式
  124. */
  125. new Thread(new Runnable() {
  126. @Override
  127. public void run() {
  128. mBitmap = mImageLoader.loadImageSync("https://s0.52poke.wiki/wiki/thumb/5/53/054Psyduck.png/300px-054Psyduck.png");
  129. runOnUiThread(new Runnable() {
  130. @Override
  131. public void run() {
  132. mImage.setImageBitmap(mBitmap);
  133. }
  134. });
  135. }
  136. }).start();
  137. break;
  138. case R.id.btn5:
  139. /**
  140. * 第五种处理图片的方式,处理图片大小
  141. */
  142. ImageSize targetSize1 = new ImageSize(100, 100); // result Bitmap will be fit to this size
  143. mImageLoader.loadImage("https://s0.52poke.wiki/wiki/thumb/c/c6/094Gengar.png/300px-094Gengar.png", targetSize1, mOptions, new SimpleImageLoadingListener() {
  144. @Override
  145. public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
  146. mImage.setImageBitmap(loadedImage);
  147. }
  148. });
  149. break;
  150. case R.id.btn6:
  151. new Thread(new Runnable() {
  152. @Override
  153. public void run() {
  154. ImageSize targetSize2 = new ImageSize(80, 50); // result Bitmap will be fit to this size
  155. mBitmap = mImageLoader.loadImageSync("https://s0.52poke.wiki/wiki/thumb/e/e2/133Eevee.png/300px-133Eevee.png", targetSize2, mOptions);
  156. runOnUiThread(new Runnable() {
  157. @Override
  158. public void run() {
  159. mImage.setImageBitmap(mBitmap);
  160. }
  161. });
  162. }
  163. }).start();
  164. break;
  165. default:
  166. break;
  167. }
  168. }
  169. }

Android 开发 框架系列 Android-Universal-Image-Loader 图片加载使用demo的更多相关文章

  1. Android 开发 框架系列 OkHttp拦截器

    前言 此篇博客只讲解okhttp的拦截器功能的详细使用,如果你还不太了解okhttp可以参考我另外一篇博客 Android 开发 框架系列 OkHttp使用详解 添加Interceptor的简单例子 ...

  2. Android之Glide(非常好用的图片加载框架)

    谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech. Glide是一种快速.高效的开源媒体管理和Android的包裹mediadecoding图像加载框架,内 ...

  3. 14. Android框架和工具之 ImageLoader(图片加载)

    1. 这个图片加载框架网友很多都已经使用过,而且分析也很到位,这里我就不写了,直接引用别人,尊重别人的劳动成果. 2. 参考如下: (1)Android 开源框架Universal-Image-Loa ...

  4. Android 开发 框架系列 Google的ORM框架 Room

    目录 简介 导入工程 使用流程概况 一个简单的小Demo 深入学习 @Entity使用 自定义表名 tableName  自定义字段名@ColumnInfo 主键 @PrimaryKey 索引 @In ...

  5. Android 开发 框架系列 百度语音合成

    官方文档:http://ai.baidu.com/docs#/TTS-Android-SDK/6d5d6899 官方百度语音合成控制台:https://cloud.baidu.com/product/ ...

  6. android 开发 框架系列 使用 FileDownloader 实现检查更新的功能class

    首先介绍一下FileDownloader GH :https://github.com/lingochamp/FileDownloader/blob/master/README-zh.md FileD ...

  7. Android开发Settings源码分析之主界面加载(二)

    现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕!我这边专门针对Android开发工程师整理了一套[Android进阶学习视频].[全套Android面试秘籍].[Android知识点PDF] ...

  8. android开发里跳过的坑——GridView使用Glide加载图片不显示

    用grideview显示本地图片列表,用了Glide加载框架,具体调用如下: Glide.with(mContext).load(Uri.fromFile(file)).into(imageView) ...

  9. Android 开发 框架系列 OkHttp使用详解

    简介 okhttp是一个第三方类库,用于android中请求网络.这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) . ...

  10. Android 开发 框架系列 EventBus 事件总线

    介绍 GitHub:https://github.com/greenrobot/EventBus 先聊聊EventBus 线程总线是干什么的,使用环境,优点.缺点. 干什么的? 一句话,简单统一数据传 ...

随机推荐

  1. jq demo 简单的图片懒加载效果

    重点:在元素进入可视区域后,把图片元素的 _src 的值,赋值给 src <!DOCTYPE HTML> <html> <head> <meta http-e ...

  2. js--------1.时间

    //获取当前时间 yyyy-MM-dd function getNowFormatDate() { var date = new Date(); var seperator1 = "-&qu ...

  3. 在HTML中用循环语句

    <%for(){%  > <tr> <td></td> <td></td> </tr> <%}%> 注意 ...

  4. 剑指Offer 26. 二叉搜索树与双向链表 (二叉搜索树)

    题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 题目地址 https://www.nowcoder.com/practic ...

  5. 2--Postman脚本介绍

    Postman是访问各种API的客户端.它的强大之处在于其允许在对某一个request访问的之前和之后分别运行自定义的一段Javascript脚本,可以将数条request连结成一个流程完成一体化测试 ...

  6. CentOS 7 快速部署 ELK

    先简单说一下部署思路及原理(不一定正确,只是个人理解而已) 1.修改系统参数,以便安装软件 2.安装配置elasticsearch,这个相当于总监测中心,用来收集logstash监测的各种服务应用日志 ...

  7. 【DB2】SQL1585N 由于没有具有兼容页面大小的可用系统临时表空间,因此无法创建临时表。SQLSTATE=54048

    自己写了一段SQL,SQL中包含ORDER BY 字句,但是在执行的时候报错如下: 经过查询发现是由于临时表空间的PAGESIZE不够大,可考虑建16k或者32k PAGESIZE的表空间 示例如下: ...

  8. js+css jQuery实现页面后退执行 & 遮罩弹框

    JS部分 <script src="http://libs.baidu.com/jquery/2.0.0/jquery.js"></script> < ...

  9. 虚拟空间,malloc

    一,内存空间分布图 所以,mmap其实和堆一样,实际上可以说他们都是动态内存分配,但是严格来说mmap区域并不属于堆区,反而和堆区会争用虚拟地址空间. 这里要提到一个很重要的概念,内存的延迟分配,只有 ...

  10. 黄聪:什么是XSS攻击

    XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中.比如这些代码包括HTML代码和客户端脚本.攻击者利用XSS漏洞旁路掉访问控制——例如同源 ...