安卓图片加载框架--Universal-Image-Loader

  今天来介绍图片加载的框架Android-Universal-Image-Loader

  GITHUB上的下载路径为:https://github.com/nostra13/Android-Universal-Image-Loader

  也可以自行百度下载。

  首先来封装的一个类CacheTool ,由于其他加载图片的方法有点繁琐,所以这里仅封装了一个简单实用的加载方法:

import android.graphics.Bitmap;
import android.widget.ImageView;

import com.ncct.app.R;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageLoadingListener;

/**
 * 图片加载框架
 *
 * @author jiang
 *
 */
public class CacheTool {

//showStubImage   加载中显示的图片

//showImageForEmptyUri   404显示的图片

//showImageOnFail    加载失败显示的图片

private static DisplayImageOptions options = new DisplayImageOptions.Builder().showStubImage(R.drawable.loading_img)
            .showImageForEmptyUri(R.drawable.loading_error).showImageOnFail(R.drawable.loading_error)
            .cacheInMemory(true).cacheOnDisc(true).bitmapConfig(Bitmap.Config.RGB_565).build();

    /**
     * 加载图片并监听回调结果
     *
     * @param iv
     * @param url
     * @param mImageLoadingListener
     */
    public static void displayImg(ImageView iv, String url, ImageLoadingListener mImageLoadingListener) {
        ImageLoader.getInstance().displayImage(url, iv, options, mImageLoadingListener);
    }

    /**
     * 加载图片
     *
     * @param iv
     * @param url
     */
    public static void displayImg(ImageView iv, String url) {

        ImageLoader.getInstance().displayImage(url, iv, options);
    }

    /**
     * 清除内存
     */
    public static void clearMemoryCache() {
        ImageLoader.getInstance().clearMemoryCache();
    }

    /**
     * 清除缓存
     */
    public static void clearDiskCache() {
        ImageLoader.getInstance().clearDiscCache();
    }

}

  封装好了,里面都有详细的介绍,这里介绍下上面的中的ImageLoadingListener 接口回调,按ctrl + 鼠标左键可以进入jar包里的java文件:

/*******************************************************************************
 * Copyright 2011-2013 Sergey Tarasevich
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *******************************************************************************/
package com.nostra13.universalimageloader.core.assist;

import android.graphics.Bitmap;
import android.view.View;

/**
 * Listener for image loading process.<br />
 * You can use {@link SimpleImageLoadingListener} for implementing only needed methods.
 *
 * @author Sergey Tarasevich (nostra13[at]gmail[dot]com)
 * @see SimpleImageLoadingListener
 * @see FailReason
 * @since 1.0.0
 */
public interface ImageLoadingListener {

    /**
     * Is called when image loading task was started
     *
     * @param imageUri Loading image URI
     * @param view     View for image
     */
    void onLoadingStarted(String imageUri, View view);

    /**
     * Is called when an error was occurred during image loading
     *
     * @param imageUri   Loading image URI
     * @param view       View for image. Can be <b>null</b>.
     * @param failReason {@linkplain FailReason The reason} why image loading was failed
     */
    void onLoadingFailed(String imageUri, View view, FailReason failReason);

    /**
     * Is called when image is loaded successfully (and displayed in View if one was specified)
     *
     * @param imageUri    Loaded image URI
     * @param view        View for image. Can be <b>null</b>.
     * @param loadedImage Bitmap of loaded and decoded image
     */
    void onLoadingComplete(String imageUri, View view, Bitmap loadedImage);

    /**
     * Is called when image loading task was cancelled because View for image was reused in newer task
     *
     * @param imageUri Loading image URI
     * @param view     View for image. Can be <b>null</b>.
     */
    void onLoadingCancelled(String imageUri, View view);
}

  从以上代码中我们可以了解到接口中我们可以监听到开始、失败、完成、取消的动作。

  现在开始使用吧:

    private ImageView My_Head;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.personcenter);
        My_Head = (ImageView) findViewById(R.id.My_Head);
                String Url = "http://pic.nipic.com/2007-11-09/200711912453162_2.jpg";
                CacheTool.displayImg(My_Head , Url );
    }     
时间: 2024-12-28 00:58:05

安卓图片加载框架--Universal-Image-Loader的相关文章

Android图片异步加载框架Universal Image Loader的源码分析

项目地址:https://github.com/nostra13/android-universal-image-loader 1. 功能介绍 1.1 Android Universal Image Loader Android Universal Image Loader 是一个强大的.可高度定制的图片缓存,本文简称为UIL. 简单的说 UIL 就做了一件事--获取图片并显示在相应的控件上. 1.2 基本使用 1.2.1 初始化 添加完依赖后在Application或Activity中初始化I

Android 使用图片异步加载框架Universal Image Loader的问题

使用的Jar包 问题:        optionsm = new DisplayImageOptions.Builder() .displayer(new RoundedBitmapDisplayer(20)) .build();   这里.displayer(new RoundedBitmapDisplayer(20))的时候设置圆角报错,.displayer(new SimpleBitmapDisplayer())这样正常显示图片就不报错. 版权声明:本文为博主原创文章,未经博主允许不得转

一起写一个Android图片加载框架

本文会从内部原理到具体实现来详细介绍如何开发一个简洁而实用的Android图片加载缓存框架,并在内存占用与加载图片所需时间这两个方面与主流图片加载框架之一Universal Image Loader做出比较,来帮助我们量化这个框架的性能.通过开发这个框架,我们可以进一步深入了解Android中的Bitmap操作.LruCache.LruDiskCache,让我们以后与Bitmap打交道能够更加得心应手.若对Bitmap的大小计算及inSampleSize计算还不太熟悉,请参考这里:高效加载Bit

常用图片加载框架

我们在项目中使用的是Picasso.其实现在的主流图片加载框架除了Picasso还有ImageLoader,Glide,以及Fresco.ImageLoader是比较老的框架了,稳定, 加载速度适中, 缺点在于不支持GIF图片加载, 使用稍微繁琐, 并且缓存机制没有和http的缓存很好的结合, 完全是自己的一套缓存机制.Glide是谷歌的一位工程师开发的,它可以说是Picasso的升级版, 有Picasso的优点, 并且支持GIF图片加载显示, 图片缓存也会自动缩放, 默认使用RGB_565格式

Android中常见的图片加载框架

图片加载涉及到图片的缓存.图片的处理.图片的显示等.而随着市面上手机设备的硬件水平飞速发展,对图片的显示要求越来越高,稍微处理不好就会造成内存溢出等问题.很多软件厂家的通用做法就是借用第三方的框架进行图片加载. 开源框架的源码还是挺复杂的,但使用较为简单.大部分框架其实都差不多,配置稍微麻烦点,但是使用时一般只需要一行,显示方法一般会提供多个重载方法,支持不同需要.这样会减少很不必要的麻烦.同时,第三方框架的使用较为方便,这大大的减少了工作量.提高了开发效率.本文主要介绍四种常用的图片加载框架,

关于图片加载框架

接上篇,这篇开始对现在比较的流行的第三方图片加载框架做一个对比总结. 这篇文章介绍内容如下: 1.目前流行的图片加载框架有什么? 2.各自的使用方法 3.各自的优缺点 4.优化问题 一.目前流行的图片加载框架有什么? ImageLoader   Glide  Picasso  Fresso(2015年) 注:由于现在ImageLoader使用较少,本篇博文将不再对它进行阐述.主要以其它三个框架为主,有兴趣的同学可以自行学习. 二.各自的使用方法 Picasso:  Picasso .with(t

【光速使用开源框架系列】图片加载框架ImageLoader

[关于本系列] 最近看了不少开源框架,网上的资料也非常多,但是我认为了解一个框架最好的方法就是实际使用.本系列博文就是带领大家快速的上手一些常用的开源框架,体会到其作用. 由于作者水平有限,本系列只会描述如何快速的使用框架的基本功能,更多的详细设置大家可以在这些项目的页面上找到. [介绍]: ImageLoader作为一款开源的异步图片加载框架,在Android开发中经常被使用到,该控件可以加载和显示图片.并且对其进行缓存,提供了很多方便的选项帮助开发者们快速达到开发需求. [GitHub页面]

强大的图片加载框架Fresco的使用

前面在卓新科技有限公司实习的时候,在自己的爱吖头条APP中,在图片异步加载的时候和ListView的滑动中,总会出现卡顿,这是因为图片的缓存做的不是足够到位,在项目监理的帮助下,有使用Xutils框架下的图片加载,也有使用ImageLoader来实现,在今天在威哥的微信公众号了gank到了一个当前最强大的图片加载框架——Fresco. Fresco是Facebook发布的一款开源框架,号称是目前最强的Android图片加载库,在内存方面的表现极为优秀,既然有如此信心,对于Fresco的一些介绍,

Fresco-Facebook的图片加载框架的使用

目前常用的开源图片加载框架有:1.Universal-Image-Loader,该项目存在于Github上面https://github.com/nostra13/Android-Universal-Image-Loader: 2.fresco,该项目的中文网站是:http://www.fresco-cn.org/,在Github上面是:https://github.com/facebook/fresco 之前一直用的是Universal-Image-Loader,改用fresco之后,在有大图