xml地图|网站地图|网站标签 [设为首页] [加入收藏]

智能家电

当前位置:美高梅游戏网站 > 智能家电 > 美高梅游戏网站ImageLoader加载本地图片

美高梅游戏网站ImageLoader加载本地图片

来源:http://www.gd-chuangmei.com 作者:美高梅游戏网站 时间:2019-09-07 12:59

ImageLoader加载图片的方法有两种:1.loadImage2.displayImage经过查看源码,发现其实两种加载方法最终是一样的,因为loadImage方法最终也是调用的displayImage方法。代码如下:

import android.widget.ImageView;

美高梅游戏网站 1

import com.nostra13.universalimageloader.core.ImageLoader;

所以分析ImageLoader加载图片流程时,只需分析displayImage()方法就OK了。下面就开始分析displayImage的加载图片流程。

/**

美高梅游戏网站 2通过上图代码,我们可以看到,首先是检查一些必要的参数。

  • 异步加载本地图片工具类
    • @author tony

第一步,第236行首先通过checkConfiguration()检查Configuration参数。从图中可以看到,如果Configuration参数为空,会抛出初始化异常,说明在调用加载图片之前没有进行初始化。

*/
public class LoadLocalImageUtil {
private LoadLocalImageUtil() {
}

美高梅游戏网站 3

private static LoadLocalImageUtil instance = null;


public static synchronized LoadLocalImageUtil getInstance() {
    if (instance == null) {
        instance = new LoadLocalImageUtil();
    }
    return instance;
}


/**
 * 从内存卡中异步加载本地图片
 * 
 * @param uri
 * @param imageView
 */
public void displayFromSDCard(String uri, ImageView imageView) {
    // String imageUri = "file:///mnt/sdcard/image.png"; // from SD card
    ImageLoader.getInstance().displayImage("file://" + uri, imageView);
}


/**
 * 从assets文件夹中异步加载图片
 * 
 * @param imageName
 *            图片名称,带后缀的,例如:1.png
 * @param imageView
 */
public void dispalyFromAssets(String imageName, ImageView imageView) {
    // String imageUri = "assets://image.png"; // from assets
    ImageLoader.getInstance().displayImage("assets://" + imageName,
            imageView);
}


/**
 * 从drawable中异步加载本地图片
 * 
 * @param imageId
 * @param imageView
 */
public void displayFromDrawable(int imageId, ImageView imageView) {
    // String imageUri = "drawable://" + R.drawable.image; // from drawables
    // (only images, non-9patch)
    ImageLoader.getInstance().displayImage("drawable://" + imageId,
            imageView);
}


/**
 * 从内容提提供者中抓取图片
 */
public void displayFromContent(String uri, ImageView imageView) {
    // String imageUri = "content://media/external/audio/albumart/13"; //
    // from content provider
    ImageLoader.getInstance().displayImage("content://" + uri, imageView);
}

第二步,然后从237行到245行是在检查我们方法中传入的参数是否为空。如果imageAware为空,直接抛出异常。但如果是listener这样的参数为空,就会使用ImageLoader初始化时配置的参数。从这里我们可以看出如果我们在调用方法时传入了自己的DisplayImageOptions、ImageLoadingListener参数,就会使用传入的参数,否则会使用初始化时候配置的参数,也就是说我们传入的参数是具有优先权的。

检查完毕参数,接下来就是该根据url来加载图片来。先截图代码。

美高梅游戏网站 4美高梅游戏网站 5美高梅游戏网站 6美高梅游戏网站 7

一、 首先从247行到257行,是检查我们的图片url是否为空。在为空的情况下,会先取消正在为这个imageview加载图片的任务(可能是上次为这个imageview加载不同url的任务)。接着会调用ImageLoadingListener的onLoadingStarted方法,表示加载图片开始了。然后,查找我们在Configuration中是否配置了图片地址为空时显示的图片,如果配置了,就显示配置的图片,否则设置显示null.最后调用ImageLoadingListener的onLoadingComplete方法,这次加载图片就愉快的完成了!

二、下面我们再来看url不为空的情况,分为以下几个步骤

1、首先,映入眼帘的是String memoryCacheKey = MemoryCacheUtils.generateKey(uri, targetSize);这行代码根据url和对应的imageview的大小,生成一个对应的key值,这个key将来作为从内存缓存中存取图片的依据。

本文由美高梅游戏网站发布于智能家电,转载请注明出处:美高梅游戏网站ImageLoader加载本地图片

关键词:

上一篇:美高梅棋牌html5之input类型

下一篇:没有了