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

一、前言

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

项目地址:ImageViewEx

项目效果:

二、使用

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

<mrfu.imageviewex.lib.ImageViewEx
android: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() {
@Override
public 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. Android图片载入框架最全解析(一),Glide的基本使用方法

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

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

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

  3. 【Android 进阶】图片载入框架之Glide

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

  4. Android 使用动态载入框架DL进行插件化开发

    如有转载,请声明出处: 时之沙: http://blog.csdn.net/t12x3456    (来自时之沙的csdn博客) 概述: 随着应用的不断迭代.应用的体积不断增大,项目越来越臃肿,冗余添 ...

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

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

  6. Android图片载入缓存框架Glide

    Glide开源框架是Google推荐的图片载入和缓框架,其在Github上的开源地址是:https://github.com/bumptech/glide 当然一个Google推荐的框架肯定就是Vol ...

  7. Android图片异步载入框架Android-Universal-Image-Loader

    Android-Universal-Image-Loader是一个图片异步载入,缓存和显示的框架.这个框架已经被非常多开发人员所使用,是最经常使用的几个Android开源项目之中的一个,主流的应用,随 ...

  8. [置顶] ios 一个不错的图片浏览分享框架demo

    demo功能:一个不错的图片浏览分享框架demo.iphone6.1 测试通过.可以浏览图片,保存,微博分享到新浪,腾讯,网易,人人等. 注:(由于各个微博的接口有时候会有调整,不一定能分享成功.只看 ...

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

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

随机推荐

  1. bzoj2440(莫比乌斯函数)

    bzoj2440 题意 求第 k 个不是完全平方数(除 1 以外)的正倍数的数. 分析 利用二分法求解,二分 x ,判断 x 是否是第 k 个数即可,那么我们就要计算 [1, x] 有几个符合条件的数 ...

  2. 差分【p3948】 数据结构

    顾z 你没有发现两个字里的blog都不一样嘛 qwq 题目描述-->p3948 数据结构 分析 其实这题完全没有分析的 qwq. 只是因为写了差分数组相关知识,所以顺便写一下题解 qwq. 对于 ...

  3. RMI,socket,rpc,hessian,http比较

    SOCKET使用时可以指定协议TCP,UDP等: RIM使用JRMP协议,JRMP又是基于TCP/IP: RPC底层使用SOCKET接口,定义了一套远程调用方法: HTTP是建立在TCP上,不是使用S ...

  4. Missing Ranges -- LeetCode

    Given a sorted integer array where the range of elements are [lower, upper] inclusive, return its mi ...

  5. 每天一个linux命令1之scp

    不同的Linux之间copy文件常用有3种方法: 第一种就是ftp,也就是其中一台Linux安装ftpServer,这样可以另外一台使用ftp的client程序来进行文件的copy. 第二种方法就是采 ...

  6. 6.NFC之非NDEF格式

    先看流程图 使用步骤: 第一步:声明权限 <!-- 允许应用程序使用NFC功能 --> <uses-permission android:name="android.per ...

  7. 导出/导入Eclipse的workspace配置(备份Eclipse配置)

    设置好workspace配置后可以将配置保存为 *.epf 文件. 进入 File -> Export : 选择 General -> Preferences ,下一步: 选择 Expor ...

  8. ubuntu10.10编译TQ2440的x86-qtopia-2.2.0编译问题解决精简版

    转:http://blog.csdn.net/zyxlinux888/article/details/6705480 操作:1.要安装系统缺失的类库和安装包(有些是非必须的):zyx@zyx:/$ s ...

  9. 面试题:Add Two Numbers(模拟单链表)

    题干: You are given two non-empty linked lists representing two non-negative integers. The digits are ...

  10. [WCF菜鸟]什么是WCF

    一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...