使用第三方库的原则: 最好添加一层自己的封装,不要直接使用。防止替换库带来的麻烦!
以下是使用Fresco加载图片时的简单封装,以备不时之需。
/** * 图片加载的封装 * Created by DevWiki on 2016/8/6. */ public class ImageLoader { private static RoundingParams circleParams; static { circleParams = new RoundingParams(); circleParams.setRoundAsCircle(true); } public static RoundingParams getCircleParams() { return circleParams; } private ImageLoader(){} public static void loadImageRes(Context context, @DrawableRes int resId, SimpleDraweeView view) { Uri uri = Uri.parse("res://" + context.getPackageName() + "/" + resId); loadImage(uri, view); } public static void loadImageResAsCircle(Context context, @DrawableRes int resId, SimpleDraweeView view) { Uri uri = Uri.parse("res://" + context.getPackageName() + "/" + resId); loadImageAsCircle(uri, view); } public static void loadImageFile(String filePath, SimpleDraweeView view) { Uri uri = Uri.parse("file://" + filePath); loadImage(uri, view); } public static void loadImageFileAsCircle(String filePath, SimpleDraweeView view) { Uri uri = Uri.parse("file://" + filePath); loadImageAsCircle(uri, view); } public static void loadNetImage(String url, SimpleDraweeView view) { Uri uri = Uri.parse(url); loadImage(uri, view); } public static void loadNetImageAsCircle(String url, SimpleDraweeView view) { Uri uri = Uri.parse(url); loadImageAsCircle(uri, view); } public static void loadImage(Uri uri, SimpleDraweeView view) { GenericDraweeHierarchy hierarchy = new GenericDraweeHierarchyBuilder(FrescoApp.getContext().getResources()) .setFadeDuration(300) .setPlaceholderImage(R.drawable.bg_loading_gif) .setPlaceholderImageScaleType(ScalingUtils.ScaleType.CENTER_INSIDE) .setActualImageScaleType(ScalingUtils.ScaleType.CENTER_INSIDE) .build(); view.setHierarchy(hierarchy); view.setImageURI(uri); } /** * 加载图片为圆形图片 * @param uri 图片的uri * @param view 要加载的视图 */ public static void loadImageAsCircle(Uri uri, SimpleDraweeView view) { GenericDraweeHierarchy hierarchy = new GenericDraweeHierarchyBuilder(FrescoApp.getContext().getResources()) .setFadeDuration(300) .setRoundingParams(circleParams) .setPlaceholderImage(R.drawable.bg_loading_gif) .setPlaceholderImageScaleType(ScalingUtils.ScaleType.CENTER_INSIDE) .setActualImageScaleType(ScalingUtils.ScaleType.CENTER_INSIDE) .build(); view.setHierarchy(hierarchy); view.setImageURI(uri); } /** * 加载Gif资源 * @param resId Gif的资源Id * @param view 要填充的View */ public static void loadGifRes(Context context, @DrawableRes int resId, SimpleDraweeView view) { Uri uri = Uri.parse("res://" + context.getPackageName() + "/" + resId); loadGif(uri, view); } /** * 加载Gif文件 * @param filePath Gif的路径 * @param view 要填充的View */ public static void loadGifFile(String filePath, SimpleDraweeView view) { Uri uri = Uri.parse("file://" + filePath); loadGif(uri, view); } /** * 加载网络Gif * @param url Gif的URI * @param view 要填充的View */ public static void loadNetGif(String url, SimpleDraweeView view) { Uri uri = Uri.parse(url); loadGif(uri, view); } /** * 加载Gif * @param uri Gif的URI * @param view 要填充的View */ public static void loadGif(Uri uri, SimpleDraweeView view) { GenericDraweeHierarchy hierarchy = new GenericDraweeHierarchyBuilder(FrescoApp.getContext().getResources()) .setFadeDuration(300) .setPlaceholderImage(R.drawable.bg_loading_gif) .setPlaceholderImageScaleType(ScalingUtils.ScaleType.FIT_XY) .setActualImageScaleType(ScalingUtils.ScaleType.FIT_XY) .build(); DraweeController controller = Fresco.newDraweeControllerBuilder() .setUri(uri) .setRetainImageOnFailure(true) .setAutoPlayAnimations(true) .build(); view.setHierarchy(hierarchy); view.setController(controller); } /** * 清除缓存 * @param uri 图片的URI */ public static void clearDiskCache(Uri uri) { Fresco.getImagePipeline().evictFromDiskCache(uri); } public static void clearMemoryCache(Uri uri) { Fresco.getImagePipeline().evictFromMemoryCache(uri); } public static void clearCache(Uri uri) { clearDiskCache(uri); clearMemoryCache(uri); } /** * 清除文件的磁盘缓存 * @param path 文件路径 */ public static void clearFileDiskCache(String path) { Uri uri = Uri.parse("file://" + path); clearDiskCache(uri); } /** * 清除文件的内存缓存 * @param path 文件路径 */ public static void clearFileMemoryCache(String path) { Uri uri = Uri.parse("file://" + path); clearMemoryCache(uri); } /** * 清除文件的内存和磁盘缓存 * @param path 文件路径 */ public static void clearFileCache(String path) { Uri uri = Uri.parse("file://" + path); clearCache(uri); } /** * 清除网络图片的磁盘缓存 * @param url 链接 */ public static void clearUrlDiskCache(String url) { Uri uri = Uri.parse(url); clearDiskCache(uri); } /** * 清除网络图片的内存缓存 * @param url 图片链接 */ public static void clearUrlMemoryCache(String url) { Uri uri = Uri.parse(url); clearMemoryCache(uri); } /** * 清除网络图片的内存和磁盘缓存 * @param url 图片链接 */ public static void clearUrlCache(String url) { Uri uri = Uri.parse(url); clearCache(uri); } }