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 */
Fresco 使用databinding @BindingAdapter显示图片
最新推荐文章于 2024-05-20 09:22:23 发布
这个博客介绍了如何在Android中结合Fresco库和DataBinding库来加载和显示圆形及圆角图片。提供了多个方法,包括加载网络和本地资源的圆形、圆角图片,并在图片URL为空时设置默认图片。
摘要由CSDN通过智能技术生成