Fresco 使用databinding @BindingAdapter显示图片



import android.content.res.Resources;
import android.databinding.BindingAdapter;
import android.graphics.PointF;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.text.TextUtils;
import android.util.TypedValue;

import com.facebook.drawee.drawable.ScalingUtils;
import com.facebook.drawee.generic.RoundingParams;
import com.facebook.drawee.view.SimpleDraweeView;

import java.io.File;

/**
 * Created by wanghailong on 2016/9/27/0027.
 */

public class FrescoUtil {

    public static RoundingParams circleParams = null;

    public static RoundingParams roundingParams = null;

    public static SimpleDraweeView imageView = null;

    public static String getHttpUrl(String imageUrl) {


        return imageUrl;
    }


    /**
     * Fresco 返回圆形图片的配置参数
     * 使用方法 SimpleDraweeView.getHierarchy().setRoundingParams(FrescoUtil.getRoundParams)
     *
     * @return
     */
    public static RoundingParams getCircleParams() {
        if (null == circleParams) {
            synchronized (FrescoUtil.class) {
                if (null == circleParams) {
                    circleParams = new RoundingParams();
                    circleParams.setRoundAsCircle(true);
                }
            }
        }
        return circleParams;
    }

    public static RoundingParams getRoundingParams(int round) {
        roundingParams = new RoundingParams();
        roundingParams.setCornersRadius(round);
        return roundingParams;
    }


    /**
     * Fresco加载圆形图片
     *
     * @param imageView
     * @param imageUrl  //     * @param defaultImageID
     */
    public static void loadCircleImage(SimpleDraweeView imageView, String imageUrl, int defaultDrawableId) {
        imageUrl = getHttpUrl(imageUrl);
        if (!TextUtils.isEmpty(imageUrl)) {
            imageView.getHierarchy().setRoundingParams(getCircleParams());
            imageView.getHierarchy().setActualImageScaleType(ScalingUtils.ScaleType.FOCUS_CROP);
            PointF point = new PointF();
            point.set(0.5f, 0.0f);
            imageView.getHierarchy().setActualImageFocusPoint(point);
            imageView.setImageURI(Uri.parse(imageUrl));
        } else {
            loadResourceCircleImage(imageView, defaultDrawableId, 0);
        }
    }

    /**
     * Fresco加载圆形图片
     *
     * @param imageView
     * @param imageUrl
     * @param defaultImage
     */

    @BindingAdapter({
 "circleUrl", "defaultDrawable"})
    public static void loadCircleImage(SimpleDraweeView imageView, String imageUrl, Drawable defaultImage) {
        imageUrl = getHttpUrl(imageUrl);
        if (!TextUtils.isEmpty(imageUrl)) {
            imageView.getHierarchy().setRoundingParams(getCircleParams());
            imageView.getHierarchy().setActualImageScaleType(ScalingUtils.ScaleType.FOCUS_CROP);
            PointF point = new PointF();
            point.set(0.5f, 0.0f);
            imageView.getHierarchy().setActualImageFocusPoint(point);
            imageView.setImageURI(Uri.parse(imageUrl));
        } else {
//            loadResourceCircleImage(imageView, defaultImageID, 0);
            imageView.setImageDrawable(defaultImage);
        }

    }

    /**
     * 加载网络图片圆角
     *
     * @param imageView
     * @param imageUrl
     * @param round
     * @param defaultImage
     */
    @BindingAdapter({
 "roundUrl", "round", "defaultDrawable"})
    public static void loadRoundImage(SimpleDraweeView imageView, String imageUrl, int round, Drawable defaultImage) {
        imageUrl = getHttpUrl(imageUrl);
        int pix = dip2px(round);
        if (!TextUtils.isEmpty(imageUrl)) {
            imageView.getHierarchy().setRoundingParams(getRoundingParams(pix));
            imageView.setImageURI(Uri.parse(imageUrl));
        } else {
            imageView.setImageDrawable(defaultImage);
        }
    }

    /**
     * 加载网络图片圆角
     *
     * @param imageView
     * @param imageUrl
     * @param round
     * @param imageId
     */
    public static void loadRoundImage(SimpleDraweeView imageView, String imageUrl, int round, int imageId) {
        imageUrl = getHttpUrl(imageUrl);
        int pix = dip2px(round);
        if (!TextUtils.isEmpty(imageUrl)) {
            imageView.getHierarchy().setRoundingParams(getRoundingParams(pix));
            imageView.setImageURI(Uri.parse(imageUrl));
        } else {
            imageView.setBackgroundResource(imageId);
        }
    }

    /**
     * 加载网络图片,图片的顶部为圆角
     *
     * @param imageView
     * @param imageUrl
     * @param round
     * @param defaultImageID
     */
    public static void loadTopRoundImage(SimpleDraweeView imageView, String imageUrl, int round, int defaultImageID) {
        imageUrl = getHttpUrl(imageUrl);
        int pix = dip2px(round);
        if (!TextUtils.isEmpty(imageUrl)) {
            imageView.getHierarchy().setRoundingParams(getRoundingParams(pix).setCornersRadii(pix, pix, 0, 0));
            imageView.setImageURI(Uri.parse(imageUrl));
        } else {
            imageView.setBackgroundResource(defaultImageID);
        }
    }

    /**
     * 加载网络图片,图片的顶部为圆角
     *
     * @param imageView
     * @param imageUrl
     * @param round
     * @param defaultDrawable
     */
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值