android 圆角矩形图片并描边,重写imageview

android开发中经常遇到需要处理图片的地方,今天说一下圆角矩形图片的处理

1:直接处理图片本身;

2:重写imageview;

第一种方法这里暂且不谈,方法很多,这里主要谈谈第二种,因为第一种处理之后经常会遇到scaleType失效的问题,许多第三方图片下载处理中会与自己处理图片相冲突,这时候我们往往想到要对imageview直接处理,这样就不会影响imageview本身的各种属性:

public class RoundImageView extends ImageView {

private Path mPath;

private RectF mRectF;

private int mCorner = Const.DP_1 *3;

private Paintm Paint;

public RoundImageView(Context context, AttributeSet attrs) {

super(context, attrs);

//PS:一定不要再draw里面新建RectF,一定不要再draw里面新建RectF,一定不要再draw里面新建RectF,

//重要的事情说三遍,会严重消耗内存

mRectF =new RectF();

mPath =new Path();

mPaint =new Paint(Paint.ANTI_ALIAS_FLAG);

mPaint.setStyle(Paint.Style.STROKE);

mPaint.setStrokeWidth(Const.DP_1);

mPaint.setColor(0xffE6EEF6);

}

@Override

    public void draw(Canvas canvas) {

mPath.reset();

//将mRectF设置为imageview本身的宽高

mRectF.set(0,0, getWidth(), getHeight());

//将path设置rect值

mPath.addRoundRect(mRectF,mCorner,mCorner, Path.Direction.CW);

//切割画布,只留下自己需要的部分

canvas.clipPath(mPath);

//保留imageview本身的绘制图片

super.draw(canvas);

//画出描边

canvas.drawRoundRect(mRectF,mCorner,mCorner,mPaint);

}

}

你可能感兴趣的:(android 圆角矩形图片并描边,重写imageview)