Fresco加载图片封装

   2016-10-17 0
核心提示:使用第三方库的原则:最好添加一层自己的封装,不要直接使用。防止替换库带来的麻烦!以下是使用Fresco加载图片时的简单封装,以备不时之需。/** * 图片加载的封装 * Created by DevWiki on 2016/8/6. */public class ImageLoader {private static RoundingPa

使用第三方库的原则: 最好添加一层自己的封装,不要直接使用。防止替换库带来的麻烦!

以下是使用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);
    }
}
 
标签: Fresco
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • Glide、Fresco、Picasso 的背后竟然还有如此强大的图片处理库
    Glide、Fresco、Picasso 的背后竟然还有如此强
    回复 1024 获取更多美女封面图做安卓开发的伙伴儿一定或多或少地都用到过 Image Loader 领域三大领头羊级别的开源库:Glide,Fresco,Picasso。怎么用就不用我在这里啰哩啰嗦了,各自的文档写得非常清楚。今天在[Awesome-Some]里添加了三大 Transformations
    11-10 Fresco
点击排行