# ImageLoader **Repository Path**: VeiZhang/ImageLoader ## Basic Information - **Project Name**: ImageLoader - **Description**: 封装Android图片加载库 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-07-29 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 图片加载器 ## 统一管理图片加载库,随意切换图片加载框架 * Fresco * Picasso * Glide * Universal-ImageLoader * Volley ## 封装 * 多个图片加载库切换 * 图片加载进度回调 * 自定义配置(如占位图片、错误占位图片、缓存目录、大小等) * 清除缓存 ## 使用 [![imageloader][icon_imageloader]][imageloader] [![imageloader-fresco][icon_imageloader-fresco]][imageloader-fresco] [![imageloader-picasso][icon_imageloader-picasso]][imageloader-picasso] [![imageloader-glide][icon_imageloader-glide]][imageloader-glide] * **独立依赖库** ``` implementation 'com.excellence:imageloader:_latestVersion' // 下面图库三选一,减小安装包大小 implementation 'com.excellence:imageloader-fresco:_latestVersion' implementation 'com.excellence:imageloader-picasso:_latestVersion' implementation 'com.excellence:imageloader-glide:_latestVersion' ``` * 权限 ``` ``` * API ``` // 初始化,不同的加载器,有部分独立的方法 // 可以自定义实现ImageLoader接口,创建新的图库加载器 ImageLoaderOptions options = new ImageLoaderOptions.Builder().isLogEnable(true).isCache(false).build(); mImageLoader = new FrescoImageLoader(this, options); mImageLoader = new PicassoImageLoader(this, options); mImageLoader = new GlideImageLoader(this, options); // 统一的接口 public interface ImageLoader { /** * 加载资源图片 * * @param view * @param resId */ void loadImage(@NonNull ImageView view, @DrawableRes int resId); void loadImage(@NonNull ImageView view, @DrawableRes int resId, IListener listener); /** * 加载资源图片,占位图片,错误图片 * * @param view * @param resId * @param placeholderResId * @param errorResId */ void loadImage(@NonNull ImageView view, @DrawableRes int resId, @DrawableRes int placeholderResId, @DrawableRes int errorResId); void loadImage(@NonNull ImageView view, @DrawableRes int resId, @DrawableRes int placeholderResId, @DrawableRes int errorResId, IListener listener); /** * 加载本地图片 * * @param view * @param file */ void loadImage(@NonNull ImageView view, @NonNull File file); void loadImage(@NonNull ImageView view, @NonNull File file, IListener listener); /** * 加载本地图片,占位图片,错误图片 * * @param view * @param file * @param placeholderResId * @param errorResId */ void loadImage(@NonNull ImageView view, @NonNull File file, @DrawableRes int placeholderResId, @DrawableRes int errorResId); void loadImage(@NonNull ImageView view, @NonNull File file, @DrawableRes int placeholderResId, @DrawableRes int errorResId, IListener listener); /** * 加载网络图片 * * @param view * @param url */ void loadImage(@NonNull ImageView view, @NonNull String url); void loadImage(@NonNull ImageView view, @NonNull String url, IListener listener); /** * 加载网络图片,占位图片,错误图片 * * @param view * @param url * @param placeholderResId * @param errorResId */ void loadImage(@NonNull ImageView view, @NonNull String url, @DrawableRes int placeholderResId, @DrawableRes int errorResId); void loadImage(@NonNull ImageView view, @NonNull String url, @DrawableRes int placeholderResId, @DrawableRes int errorResId, IListener listener); void clearCache(); } ``` ## [Fresco](https://github.com/facebook/fresco/) ``` implementation 'com.facebook.fresco:fresco:1.9.0' // 在 API < 14 上的机器支持 WebP 时,需要添加 compile 'com.facebook.fresco:animated-base-support:0.12.0' // 支持 GIF 动图,需要添加 compile 'com.facebook.fresco:animated-gif:0.12.0' // 支持 WebP (静态图+动图),需要添加 compile 'com.facebook.fresco:animated-webp:0.12.0' compile 'com.facebook.fresco:webpsupport:0.12.0' // 仅支持 WebP 静态图,需要添加 compile 'com.facebook.fresco:webpsupport:0.12.0' ``` ``` Uri uri = Uri.parse("https://raw.githubusercontent.com/facebook/fresco/gh-pages/static/logo.png"); SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view); draweeView.setImageURI(uri); ``` ## [Picasso](https://github.com/square/picasso) ``` implementation 'com.squareup.picasso:picasso:2.71828' ``` ``` Picasso.get() .load(url) .resize(50, 50) .centerCrop() .into(imageView) ``` 缓存路径:`data/data/your package name/cache/picasso-cache/(默认路径)` ## [Glide](https://github.com/bumptech/glide/) ``` implementation 'com.github.bumptech.glide:glide:4.8.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0' ``` ``` Glide.with(getContext()) .load(url) .skipMemoryCache(true) .placeholder(drawable) .centerCrop() .animate(animator) .into(img); ``` ## [Universal-ImageLoader](https://github.com/nostra13/Android-Universal-Image-Loader) ## [Volley](https://github.com/google/volley/) ## 版本更新 | 版本 | 描述 | |------------------------- | -------------------------------------------------------------- | | [1.0.0][ImageLoaderV1.0.0] | 封装Fresco、Picasso、Glide图库,简单加载图片 **2018-10-11** | ## 感谢 > - [ladingwu][ladingwu] > - [hpdx][hpdx] > - [peng8350][peng8350] [imageloader]:https://bintray.com/veizhang/maven/imageloader/_latestVersion "imageloader" [imageloader-fresco]:https://bintray.com/veizhang/maven/imageloader-fresco/_latestVersion "imageloader-fresco" [imageloader-picasso]:https://bintray.com/veizhang/maven/imageloader-picasso/_latestVersion "imageloader-picasso" [imageloader-glide]:https://bintray.com/veizhang/maven/imageloader-glide/_latestVersion "imageloader-glide" [icon_imageloader]:https://api.bintray.com/packages/veizhang/maven/imageloader/images/download.svg [icon_imageloader-fresco]:https://api.bintray.com/packages/veizhang/maven/imageloader-fresco/images/download.svg [icon_imageloader-picasso]:https://api.bintray.com/packages/veizhang/maven/imageloader-picasso/images/download.svg [icon_imageloader-glide]:https://api.bintray.com/packages/veizhang/maven/imageloader-glide/images/download.svg [ImageLoaderV1.0.0]:https://bintray.com/veizhang/maven/imageloader/1.0.0 [ladingwu]:https://github.com/ladingwu/ImageLoaderFramework "图库封装" [hpdx]:https://github.com/hpdx/fresco-helper "Fresco封装" [peng8350]:https://github.com/peng8350/LoadingProgress "图库加载进度"