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);
}
}
网友评论