我们都知道在项目中会用到图片异步加载,防止oom的,关于imageloader用途非常广泛所以如何在项目中搭建自己的imageloader框架在application里面初始化imageloader
private void initImageLoader() { ImageLoaderConfiguration.Builder builder = new ImageLoaderConfiguration.Builder(getApplicationContext()) .memoryCacheExtraOptions(480, 800) .threadPoolSize(2) .threadPriority(Thread.NORM_PRIORITY - 2) .denyCacheImageMultipleSizesInMemory() .memoryCache(new WeakMemoryCache()).memoryCacheSize(2 * 1024 * 1024) .diskCacheSize(50 * 1024 * 1024) .tasksProcessingOrder(QueueProcessingType.LIFO) .diskCacheFileCount(100) .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) .imageDownloader(new BaseImageDownloader(getApplicationContext(), 5 * 1000, 30 * 1000)); ImageLoaderConfiguration config = null; if (BuildConfig.DEBUG) { Timber.plant(new Timber.DebugTree());//初始化debug Log日志树 config = builder.writeDebugLogs().build(); } else { config = builder.build(); } // Initialize ImageLoader with configuration ImageLoader.getInstance().init(config); }并在oncreate初始化这个方法 在执行完上述操作后 定义图片显示工具类
public class AlbumDisplayUtils { private static Context context = LifeApplication.getInstance(); private static final String AVATAR_ALBUM_CDN_SUFFIX = "@1e_1c_0o_0l_400h_400w_70q.jpg"; private static final String BASE_ALBUM_CDN_SUFFIX = "@1e_1c_0o_1l_400h_400w_40q.jpg"; /** * 用于圈子及其他圆形头像 */ public static DisplayImageOptions avatarImageOptions = new DisplayImageOptions.Builder() .cacheInMemory(true) .cacheOnDisk(true) .displayer(new CircleBitmapDisplayer()) .showImageOnFail(R.mipmap.default_circle_image) .showImageForEmptyUri(R.mipmap.default_circle_image) .showImageOnLoading(R.mipmap.default_circle_image) .build(); /** * 用于圈子列表缩略图,购物车 */ public static DisplayImageOptions circleImageOptions = new DisplayImageOptions.Builder() .cacheInMemory(true) .cacheOnDisk(true) .showImageOnFail(R.mipmap.default_buy_car_image) .showImageForEmptyUri(R.mipmap.default_buy_car_image) .showImageOnLoading(R.mipmap.default_buy_car_image) .build(); public static void displayCircleFromCDN(ImageView imageView, String path) { // String uri = getFileUrlNonSuffix(path); String uri = getDefaultUri(path); ImageLoader.getInstance().displayImage(uri, imageView, circleImageOptions); } public static void displayFromCDN(ImageView imageView, String path) { // String uri = getFileUrlNonSuffix(path); String uri = getDefaultUri(path); ImageLoader.getInstance().displayImage(uri, imageView, circleImageOptions); }}这里面可以是圆形和圆角图片,不必再自定义了,而且我已经进行初始化了,接下来就是使用该操作进行加载网络图片我只需要这样就可以搞定
AlbumDisplayUtils.displayAvatarAlbumFromCDN(mAvatarIv, item.getUserphoto(), 30f);其中第一个参数是imageview,第二个是图片的URL,第三个就是他的size,是不是感觉imageloader缓存非常简单呢。