我的博客:http://mrfufufu.github.io/

一、前言

近期在整理项目中的一些代码,以备即将开展的新项目中使用,刚刚整理到一个图片载入的 lib。用起来很的简单,和 picasso 或者谷歌的 Volley 等都一样,仅仅须要一行代码就能完毕图片载入的逻辑。

项目地址:ImageViewEx

项目效果:

二、使用

先给出用法:首先在布局文件里增加例如以下代码:

<mrfu.imageviewex.lib.ImageViewExandroid:id="@+id/imageview"android:layout_width="match_parent"android:layout_height="200dp"android:layout_below="@+id/toolbar"android:scaleType="centerCrop" />

假设是要使用圆形或者圆角的图片,仅仅须要将 ImageViewEx 改成 RoundImageView 就能够了。

在 Java 代码中。这样写就能够了

ImageViewEx imageviewex = (ImageViewEx)findViewById(R.id.imageview);
RoundImageView roundimageview1 = (RoundImageView)findViewById(R.id.roundimageview1);
RoundImageView roundimageview2 = (RoundImageView)findViewById(R.id.roundimageview2);
imageviewex.loadImage("http://f.hiphotos.baidu.com/image/pic/item/ae51f3deb48f8c5471a15c2e38292df5e0fe7f45.jpg");
roundimageview1.loadImage("http://f.hiphotos.baidu.com/image/pic/item/ae51f3deb48f8c5471a15c2e38292df5e0fe7f45.jpg");
roundimageview2.setConer(10, 10);//设置圆角图片
roundimageview2.loadImage("http://f.hiphotos.baidu.com/image/pic/item/ae51f3deb48f8c5471a15c2e38292df5e0fe7f45.jpg");

三、 原理

先给出类关系图

使用方式很easy,如今大概来分析一下这个框架的原理:

框架的载入方式主要还是通过 http 请求的 get 方式拿到图片,然后将其保存在 SD 卡中,将 SD 卡中的图片转化为 Bitmap 对象,通过 LruMemoryCache 缓存方式存到内存中。

并将其载入到相应 View 上去。

主要类就是 ImageViewExImageLoader

1、 ImageViewEx.java

这个类的主要功能就是设置载入时的默认图片,调用ImageLoader 类的loadImageAsync进行载入图片,对载入完毕后的回调进行处理。都在loadImage(url)中体现了:

public void loadImage(String url) {mUrl = url;setImageBitmap(null);//设置载入时的默认图片if (defaultDrawable != null) {setImageDrawable(defaultDrawable);} else if (defaultImg != null) {setImageBitmap(defaultImg);} else {setImageDrawable(defaultImage);}//调用ImageLoader,进行图片载入ImageLoader.ImageRequest request = new ImageLoader.ImageRequest(url, this);ImageLoader.get().loadImageAsync(request, mHttpCallback);
}protected void toMeasure(Bitmap bitmap){};AbsHttpCallback mHttpCallback = new AbsHttpCallback() {@Overridepublic void onSuccess(final ImageRequest request, final Bitmap bitmap) {if(!request.url.equals(mUrl)) {return ;}toMeasure(bitmap);final ImageView iv = (ImageView)request.cookie;if(request.inMemory) {iv.setImageBitmap(bitmap);return ;}//设置动画handler.p

posted @ 2017-07-27 14:05 wzjhoutai 阅读(...) 评论(...) 编辑 收藏

一个方便的图片载入框架——ImageViewEx相关推荐

  1. Universal-Image-Loader(UIL)图片载入框架使用简介

    这个也是近期项目中使用到的第三方图片载入框架.在这里也自己总结一下,简单的介绍一些使用的方式. UIL图片载入框架特点 简单介绍: 项目地址:https://github.com/nostra13/A ...

  2. android glide图片框架,【Android 进阶】图片载入框架之Glide(示例代码)

    简单介绍 在泰国举行的谷歌开发人员论坛上,谷歌为我们介绍了一个名叫 Glide 的图片载入库,作者是 bumptech.这个库被广泛的运用在 google 的开源项目中,包含 2014 年 googl ...

  3. Android批量图片载入经典系列——afinal框架实现图片的异步缓存载入

    一.问题描写叙述 在之前的系列文章中,我们使用了Volley和Xutil框架实现图片的缓存载入,接下来我们再介绍一下afinal 框架的使用. Afinal 是一个android的http框架.sql ...

  4. 一个仿微信朋友圈的图片查看框架 - PhotoViewer

    PhotoViewer 该图片查看器是模仿微信朋友圈查看图片编写 allprojects {repositories {...maven { url 'https://jitpack.io' }}}复 ...

  5. 具体解说Android的图片下载框架UniversialImageLoader之磁盘缓存(一)

    沉浸在Android的开发世界中有一些年头的猴子们,预计都可以深深的体会到Android中的图片下载.展示.缓存一直是心中抹不去的痛.鄙人亦是如此.Ok,闲话不说.为了督促自己的学习.以下就逐一的挖掘 ...

  6. Android Handler 异步消息处理机制的妙用 创建强大的图片载入类

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38476887 ,本文出自[张鸿洋的博客] 近期创建了一个群.方便大家交流,群号: ...

  7. Android图片缓存框架Glide

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

  8. Dubbo入门介绍---搭建一个最简单的Demo框架

    Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbo zookeeper 更多 个人分类: ...

  9. 轻量高效!清华智能计算实验室开源基于PyTorch的视频 (图片) 去模糊框架SimDeblur

    作者丨科技猛兽 编辑丨极市平台 清华大学自动化系智能计算实验室团队开源基于 PyTorch 的视频 (图片) 去模糊框架 SimDeblur. 基于 PyTorch 的视频 (图片) 去模糊框架 Si ...

最新文章

  1. 英伟达十年力作:新一代光线追踪显卡 Quadro RTX及核心架构Turing,可支持AI运算...
  2. 【图论专题】负环与01分数规划
  3. eAccelerator和ionCube安装不上的解决办法
  4. 垂直居中实现方式总结
  5. Docker教程-仓库管理
  6. dtree 无法出现横向滚动条 (clip)
  7. 数据结构链表之循环链表——4
  8. 又一尴尬问题!不少用户反馈iPhone 12屏幕特别“黄”
  9. cenyos7安装 yum不可用_小区阳台隐形网横管不可用扁管,要改再去安装,还有问题...
  10. Nginx是如何处理一个HTTP请求的
  11. Log4j漏洞及解决方案,亲测
  12. google aviator:Java逻辑公式引擎
  13. 进制转换【最全进制转换汇总】(整数_小数_正数_负数)正负数整数小数十进制转任意进制-正负数整数小数任意进制转十进制-正负数低进制转高进制-正负数高进制转低进制
  14. 04 ElasticSearch分词及高阶搜索
  15. 如何下载blob:https://www.bilibili.com/的视频
  16. 正在完成android更新三星,手机实时动态:这些都是三星手机正在获取Android 10
  17. matlab中字符串和变量一起显示输出eval()函数用法
  18. 用css编写一个简单的旋转魔方
  19. 模拟电路技术之基础知识(二)
  20. 盘点电脑速度变慢的七大原因

热门文章

  1. 『中级篇』容器网络之host和none(29)
  2. jQuery动态五星评分
  3. Poj(3615),Floyd,最大值中的最小值
  4. HDU 1815, POJ 2749 Building roads(2-sat)
  5. 海量数据(数据量比较大时)的处理分析
  6. 求1+2+…+n变态问题的两个很棒的解法
  7. 浅谈Dynamic 关键字系列之三(下):ExpandoObject,DynamicObject,DynamicMetaObject
  8. Integration Services包部署常见问题汇总 (转自游子吟)
  9. 360智能工程中心期待你的加入
  10. Kafka 源码分析之网络层(二)