import android.content.res.Resources; import android.graphics.PointF; import android.net.Uri; import android.support.annotation.NonNull; 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 defaultImageID) { 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); } } /** * 加载网络图片圆角 * * @param imageView * @param imageUrl * @param round * @param defaultImageID */ public static void loadRoundImage(SimpleDraweeView imageView, String imageUrl, int round, int defaultImageID) { imageUrl = getHttpUrl(imageUrl); int pix = dip2px(round); if (!TextUtils.isEmpty(imageUrl)) { imageView.getHierarchy().setRoundingParams(getRoundingParams(pix)); imageView.setImageURI(Uri.parse(imageUrl)); } else { imageView.setImageResource(defaultImageID); } } /** * 加载网络图片,图片的顶部为圆角 * * @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.setImageResource(defaultImageID); } } public static void loadTopRoundimage(SimpleDraweeView imageView, int targetImageResId, int round, int defaultImageResId) { int pix = dip2px(round); if (0 != targetImageResId) { imageView.getHierarchy().setRoundingParams(getRoundingParams(pix).setCornersRadii(pix, pix, 0, 0)); imageView.setImageURI(new Uri.Builder().scheme("res").path(String.valueOf(targetImageResId)).build()); } else if (0 != defaultImageResId) { imageView.setImageResource(defaultImageResId); } } /** * 加载矩形图片 * * @param imageView * @param imageUrl * @param defaultImageID */ public static void loadImage(SimpleDraweeView imageView, String imageUrl, int defaultImageID) { imageUrl = getHttpUrl(imageUrl); if (!TextUtils.isEmpty(imageUrl)) { imageView.setImageURI(Uri.parse(imageUrl)); } else { if (0 == defaultImageID) { } else { imageView.setImageResource(defaultImageID); } } } /** * fresco 加载本地图片 * 已测试 * * @param imageView * @param targetImageResId * @param defaultImageResId */ public static void loadResourceImage(SimpleDraweeView imageView, int targetImageResId, int defaultImageResId) { if (0 != targetImageResId) { imageView.setImageURI(new Uri.Builder().scheme("res").path(String.valueOf(targetImageResId)).build()); } else if (0 != defaultImageResId) { imageView.setImageResource(defaultImageResId); } } /** * fresco加载本地图片处理为圆形 * * @param imageView * @param targetImageResId * @param defaultImageResId */ public static void loadResourceCircleImage(SimpleDraweeView imageView, int targetImageResId, int defaultImageResId) { if (0 != targetImageResId) { imageView.getHierarchy().setRoundingParams(getCircleParams()); imageView.setImageURI(new Uri.Builder().scheme("res").path(String.valueOf(targetImageResId)).build()); } else { if (defaultImageResId != 0) { loadResourceCircleImage(imageView, defaultImageResId, 0); } } } /** * fresco加载本地图片需要输入图片的角度 int * * @param imageView * @param targetImageResId * @param defaultImageResId * @param round */ public static void loadLocalRoundImage(SimpleDraweeView imageView, int targetImageResId, int defaultImageResId, int round) { if (0 != targetImageResId) { int pix = dip2px(round); imageView.getHierarchy().setRoundingParams(getRoundingParams(pix)); imageView.setImageURI(new Uri.Builder().scheme("res").path(String.valueOf(targetImageResId)).build()); } else if (0 != defaultImageResId) { imageView.setImageResource(defaultImageResId); } } /** * fresco加载手机设备上的图片 * * @param imageView * @param filePath * @param defaultImageResId */ public static void loadFileImage(SimpleDraweeView imageView, String filePath, int defaultImageResId) { if (!TextUtils.isEmpty(filePath)) { if (new File(filePath).exists()) { Uri uri = Uri.parse("file://" + filePath); imageView.setImageURI(uri); } else { imageView.setImageResource(defaultImageResId); } } else if (0 != defaultImageResId) { imageView.setImageResource(defaultImageResId); } } /** * fresco加载设备上的文件,显示为圆形 * * @param imageView * @param filePath * @param defaultImageResId */ public static void LoadFileCircleImage(SimpleDraweeView imageView, String filePath, int defaultImageResId) { if (!TextUtils.isEmpty(filePath)) { if (new File(filePath).exists()) { imageView.getHierarchy().setRoundingParams(getCircleParams()); Uri uri = Uri.parse("file://" + filePath); imageView.setImageURI(uri); } else { imageView.setImageResource(defaultImageResId); } } else if (0 != defaultImageResId) { imageView.setImageResource(defaultImageResId); } } /** * fresco加载设备图片显示为圆形,传入角度 * * @param imageView * @param filePath * @param defaultImageResId * @param round */ public static void LoadFileRoundImage(SimpleDraweeView imageView, String filePath, int defaultImageResId, int round) { if (!TextUtils.isEmpty(filePath)) { if (new File(filePath).exists()) { imageView.getHierarchy().setRoundingParams(getRoundingParams(round)); Uri uri = Uri.parse("file://" + filePath); imageView.setImageURI(uri); } else { imageView.setImageResource(defaultImageResId); } } else if (0 != defaultImageResId) { imageView.setImageResource(defaultImageResId); } } public static int dip2px(int dip) { Resources r = Resources.getSystem(); return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, r.getDisplayMetrics()); } }
dependencies { compile 'com.facebook.fresco:imagepipeline:0.13.0' compile 'com.facebook.fresco:fresco:0.13.0' compile('cn.finalteam:toolsfinal:1.1.4') { exclude module: 'support' //by artifact name exclude group: 'com.android.support' //by group // exclude group: 'org.unwanted', module: 'iAmBuggy' //by both name and group } compile('com.facebook.fresco:imagepipeline:0.13.0') { exclude module: 'support' //by artifact name exclude group: 'com.android.support' //by group // exclude group: 'org.unwanted', module: 'iAmBuggy' //by both name and group } compile('com.facebook.fresco:fresco:0.13.0') { exclude module: 'support' //by artifact name exclude group: 'com.android.support' //by group // exclude group: 'org.unwanted', module: 'iAmBuggy' //by both name and group } compile 'com.facebook.fresco:animated-gif:0.13.0' compile 'com.android.support:appcompat-v7:25.0.1' }