【工具】Glide基本使用方法说明与圆角图片工具

来源:互联网 发布:cf积分刷点卷软件 编辑:程序博客网 时间:2024/05/17 14:20

添加依赖

dependencies{ compile'com.github.bumptech.glide:glide:3.7.0'}


网络权限

<uses-permission android:name="android.permission.INTERNET" />


将图片转化为圆形

import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.Paint;import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;/** * Created by huruihua on 2017/3/14. * 将图片转化为圆形 */public class GlideCircleTransform  extends BitmapTransformation{    public GlideCircleTransform(Context context) {        super(context);    }    @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {        return circleCrop(pool, toTransform);    }    private static Bitmap circleCrop(BitmapPool pool, Bitmap source) {        if (source == null) return null;        int size = Math.min(source.getWidth(), source.getHeight());        int x = (source.getWidth() - size) / 2;        int y = (source.getHeight() - size) / 2;        // TODO this could be acquired from the pool too        Bitmap squared = Bitmap.createBitmap(source, x, y, size, size);        Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888);        if (result == null) {            result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);        }        Canvas canvas = new Canvas(result);        Paint paint = new Paint();        paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));        paint.setAntiAlias(true);        float r = size / 2f;        canvas.drawCircle(r, r, r, paint);        return result;    }    @Override public String getId() {        return getClass().getName();    }}

将图片转化为圆角

import android.content.Context;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.RectF;import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;/** * Created by huruihua on 2017/3/14. * * 将图片转化为圆角 * 构造中第二个参数定义半径 */public class GlideRoundTransform extends BitmapTransformation {    private static float radius = 0f;    public GlideRoundTransform(Context context) {        this(context, 4);    }    public GlideRoundTransform(Context context, int dp) {        super(context);        this.radius = Resources.getSystem().getDisplayMetrics().density * dp;    }    @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {        return roundCrop(pool, toTransform);    }    private static Bitmap roundCrop(BitmapPool pool, Bitmap source) {        if (source == null) return null;        Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);        if (result == null) {            result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);        }        Canvas canvas = new Canvas(result);        Paint paint = new Paint();        paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));        paint.setAntiAlias(true);        RectF rectF = new RectF(0f, 0f, source.getWidth(), source.getHeight());        canvas.drawRoundRect(rectF, radius, radius, paint);        return result;    }    @Override public String getId() {        return getClass().getName() + Math.round(radius);    }}

使用

import android.content.Context;import android.widget.ImageView;import com.bumptech.glide.Glide;/** * Created by huruihua on 2017/3/14. */public class GlideImgManager {    /**     * load normal  for img     *     * @param url     * @param erroImg     * @param emptyImg     * @param iv     */    public static void glideLoader(Context context, String url, int erroImg, int emptyImg, ImageView iv) {        //原生 API        Glide.with(context).load(url).placeholder(emptyImg).error(erroImg).into(iv);    }    /**     * load normal  for  circle or round img     *     * @param url     * @param erroImg   失败     * @param emptyImg  占位图     * @param iv     * @param tag   0 圆形图片  1 圆角图片     */    public static void glideLoader(Context context, String url, int erroImg, int emptyImg, ImageView iv, int tag) {        if (0 == tag) {            Glide.with(context).load(url).placeholder(emptyImg).error(erroImg).transform(new GlideCircleTransform(context)).into(iv);        } else if (1 == tag) {            Glide.with(context).load(url).placeholder(emptyImg).error(erroImg).transform(new GlideRoundTransform(context,10)).into(iv);        }    }}


0 0
原创粉丝点击