Glide 带边框带圆角的工具类

public class BorderRoundTransform extends BitmapTransformation {

    private final String ID = getClass().getName();
    private Paint mBorderPaint;
    private float borderWidth;
    private int borderColor;
    private float mRadius;


    public BorderRoundTransform(float borderWidth, int borderColor, int radius) {
        this.borderWidth = borderWidth;
        this.borderColor = borderColor;
        mRadius = Resources.getSystem().getDisplayMetrics().density * radius;
        mBorderPaint = new Paint();
        mBorderPaint.setColor(borderColor);
        mBorderPaint.setStyle(Paint.Style.STROKE);
        mBorderPaint.setAntiAlias(true);
        mBorderPaint.setStrokeWidth(borderWidth);
        mBorderPaint.setDither(true);

    }

    private Bitmap circleCrop(BitmapPool bitmapPool, Bitmap source) {
        Bitmap result = bitmapPool.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();
        //设置 Shader
        paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
        paint.setAntiAlias(true);
        //----绘制圆角矩形
        RectF rectFs = new RectF(0, 0, source.getWidth(), source.getHeight()); //显示矩形时 具体的宽高 大小数值需要自己调

        canvas.drawRoundRect(rectFs, mRadius, mRadius, paint);

        /************************描边*********************/

        //----绘制圆角矩形
        RectF rectF = new RectF(0, 0, source.getWidth(), source.getHeight()); //显示矩形时 具体的宽高 大小数值需要自己调

        canvas.drawRoundRect(rectF, mRadius, mRadius, mBorderPaint);

        return result;
    }

    @Override
    public void updateDiskCacheKey(MessageDigest messageDigest) {
        messageDigest.update(ID.getBytes(CHARSET));
    }

    @Override
    public boolean equals(Object o) {
        return o instanceof BorderRoundTransform;
    }

    @Override
    public int hashCode() {
        return ID.hashCode();
    }

    @Override
    protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {
//        return null;
        return circleCrop(pool, toTransform);

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值