在项目中如何搭建自己的imagloader框架

我们都知道在项目中会用到图片异步加载,防止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缓存非常简单呢。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值