android開發(fā)中經(jīng)常遇到需要處理圖片的地方迂猴,今天說一下圓角矩形圖片的處理
1:直接處理圖片本身;
2:重寫imageview霜旧;
第一種方法這里暫且不談错忱,方法很多,這里主要談?wù)劦诙N挂据,因?yàn)榈谝环N處理之后經(jīng)常會(huì)遇到scaleType失效的問題以清,許多第三方圖片下載處理中會(huì)與自己處理圖片相沖突,這時(shí)候我們往往想到要對imageview直接處理崎逃,這樣就不會(huì)影響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个绍,
//重要的事情說三遍勒葱,會(huì)嚴(yán)重消耗內(nèi)存
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設(shè)置為imageview本身的寬高
mRectF.set(0,0, getWidth(), getHeight());
//將path設(shè)置rect值
mPath.addRoundRect(mRectF,mCorner,mCorner, Path.Direction.CW);
//切割畫布,只留下自己需要的部分
canvas.clipPath(mPath);
//保留imageview本身的繪制圖片
super.draw(canvas);
//畫出描邊
canvas.drawRoundRect(mRectF,mCorner,mCorner,mPaint);
}
}