android异步加载网络图片

首先要导入比较主流的jar包universal-image-loader-1.9.5.jar,据说目前主流的app都在使用这个jar包,包括淘宝京东一类的app。

然后就是配置用的公共类


import android.content.Context;
import android.graphics.Bitmap;

import com.meikuang.landongjiguang.renyuandingwei.R;
import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration.Builder;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.decode.BaseImageDecoder;
import com.nostra13.universalimageloader.core.display.CircleBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

public class ImageLoaderUtils {
	/**
	 *
	 * @param context
	 */
	public static ImageLoaderConfiguration initConfiguration(Context context) {
		ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(context)
//				.memoryCacheExtraOptions(480, 800) // default = device screen dimensions
//				.diskCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null)//压缩图片用的?不造啊
				.threadPoolSize(3)
				.threadPriority(Thread.NORM_PRIORITY - 2)
				.tasksProcessingOrder(QueueProcessingType.FIFO)
				.denyCacheImageMultipleSizesInMemory()
				.memoryCache(new LruMemoryCache(2 * 1024 * 1024))
				.memoryCacheSize(2 * 1024 * 1024)
				.memoryCacheSizePercentage(13)
				.diskCacheSize(50 * 1024 * 1024)
				.diskCacheFileCount(100)
				.diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
				.imageDecoder(new BaseImageDecoder(true))
				.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
				.writeDebugLogs()
				.build();

		return configuration;
	}

	/**
	 *
	 * @return
	 */
	public static DisplayImageOptions initOptions() {
		DisplayImageOptions options = new DisplayImageOptions.Builder()
				.showImageOnLoading(R.drawable.setting_page_head)//正在下载时显示的图片
				.showImageForEmptyUri(R.drawable.setting_page_head)//下载地址为空时图片
				.showImageOnFail(R.drawable.setting_page_head)//下载失败时图片
				.cacheInMemory(true)
				.cacheOnDisk(true)
				.considerExifParams(true)
				.bitmapConfig(Bitmap.Config.RGB_565)
				.displayer(new RoundedBitmapDisplayer(20))
				.build();
		return options;
	}
}

具体用法

ImageLoader imageLoader = ImageLoader.getInstance();//定义图片下载
imageLoader.init(ImageLoaderUtils.initConfiguration(this));//图片初始化与优化(主要是缓存的优化跟加载),需要关联一下当前的activity
ImageView img_head = (ImageView)view.findViewById(R.id.img_head);
String IMAGE_URLS ="http://img3.duitang.com/uploads/item/201608/24/20160824193821_2FuVi.jpeg";//图片下载地址
imageLoader.displayImage(IMAGE_URLS, img_head, ImageLoaderUtils.initOptions());//把地址里的图片下载下来并放到自己需要的位置上

总的来说这款比较好用,就是需要注意需要初始化,如果不是使用jar而是公共类进行的话,可以把初始化写在公共类里,这样比较方便。

你可能感兴趣的:(android)