UniversalImageLoader——异步加载图片

来源:互联网 发布:怎么用淘宝卖东西 编辑:程序博客网 时间:2024/06/05 18:36

    昨天在逛CSDN时,偶然看到了一篇文章是关于异步加载图片的,起初也没再留意,后来深入研究了下,感觉相当有用,这就是第三方开源的——UniversalImageLoader,感觉确实是很屌很实用的一种异步加载图片的方法。关于什么是UniversialImageLoader? 也不多说明介绍了。其实现的功能包括,异步实现加载网上资源并显示在指定位置,可设置加载图片的大小和各种参数设置,可为图片在加载前和加载失败后显示默认图片,以及显示加载进度条。更重要的是它不仅仅可以加载网络资源,也可以加载本地如SD卡,assets里的图片资源。挺强大的功能的,具体看一下代码吧,代码都是注释详细的。

package com.example.universalimageloader;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.assist.ImageSize;import com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener;import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;import android.app.Activity;import android.graphics.Bitmap;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.widget.ImageView;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final ImageView imageView = (ImageView) findViewById(R.id.image);String imgUrl = "http://pic11.nipic.com/20101130/6320018_113749092512_2.jpg";ImageSize imageSize = new ImageSize(100, 100); // 定义加载的图片大小// 显示图片的配置(这里我添加了将图片缓存到内存中已经缓存图片到文件系统中,// 这样我们就不用担心每次都从网络中去加载图片了)DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisk(true).bitmapConfig(Bitmap.Config.RGB_565).showImageOnLoading(R.drawable.ic_launcher) // 图片加载成功前显示的图片.showImageOnFail(R.drawable.ic_launcher) // 图片加载成功后显示的图片.build();/** * 第一种方式实现载入网上图片资源 *//* * ImageLoader.getInstance().loadImage(imgUrl, new * ImageLoadingListener() { *  * @Override public void onLoadingStarted(String arg0, View arg1) { // * TODO Auto-generated method stub *  * } *  * @Override public void onLoadingFailed(String arg0, View arg1, * FailReason arg2) { // TODO Auto-generated method stub *  * } *  * @Override public void onLoadingComplete(String arg0, View arg1, * Bitmap arg2) { imageView.setImageBitmap(arg2); } *  * @Override public void onLoadingCancelled(String arg0, View arg1) { // * TODO Auto-generated method stub *  * } }); *//** * 第二种方式实现载入网络图片资源 *//* * ImageLoader.getInstance().loadImage(imgUrl, new * SimpleImageLoadingListener(){ *  * @Override public void onLoadingComplete(String imageUri, View view, * Bitmap loadedImage) { super.onLoadingComplete(imageUri, view, * loadedImage); imageView.setImageBitmap(loadedImage); } *  * }); *//** * 第三种方式实现载入网络图片资源 */// ImageLoader.getInstance().displayImage(imgUrl,// imageView,displayImageOptions);/** * 添加具有加载进度条的图片加载 */ImageLoader.getInstance().displayImage(imgUrl, imageView,displayImageOptions, new SimpleImageLoadingListener(),new ImageLoadingProgressListener() {@Overridepublic void onProgressUpdate(String arg0, View arg1,int arg2, int arg3) {// TODO Auto-generated method stub}});/** * 加载来源于非网络的图片资源(本地图片资源) *//* * String imagePath = "/mnt/sdcard/image.png"; String imageUrl = * Scheme.FILE.wrap(imagePath); //图片来源于Content provider String * contentprividerUrl = "content://media/external/audio/albumart/13"; *  * //图片来源于assets String assetsUrl = Scheme.ASSETS.wrap("image.png"); *  * //图片来源于 String drawableUrl = * Scheme.DRAWABLE.wrap("R.drawable.image"); * ImageLoader.getInstance().displayImage(imageUrl, imageView, * displayImageOptions); */}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

同时附上Demo源码下载地址:

    点击下载

0 0
原创粉丝点击