Android-超簡(jiǎn)單實(shí)現(xiàn)圖片圓角
最近被圖片圓角給折騰了,話說(shuō)網(wǎng)上的很多方法圖片圓角正正常常的。但放到我這后,圓角就有點(diǎn)尖了,點(diǎn)都不圓滑。 我用的是Glide獲取的圖片,這個(gè)Glide也有BitmapTransformation能拓展實(shí)現(xiàn)圓角,但表示我展示出來(lái)效果很不好。 最終我總結(jié)下來(lái)是因?yàn)镚lide對(duì)圖片像素壓縮,分辨率降低,導(dǎo)致圓角效果差。 網(wǎng)上沒(méi)找到辦法,因此自己想辦法。廢話不多說(shuō),來(lái)看實(shí)現(xiàn)。
此方法只適合分辨率小的圖片,分辨率太高了角度反而不圓
1.自定義ImageView,重寫ondraw方法
2.代碼如下:
- /**
- * 切除圓角
- */ public class RoundCornersImageView extends ImageView { private float radiusX; private float radiusY; public RoundCornersImageView(Context context) { super(context); init(); } public RoundCornersImageView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public RoundCornersImageView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } /**
- *
- * @param rx x方向弧度
- * @param ry y方向弧度
- */ public void setRadius(float rx, float ry) { this.radiusX = rx; this.radiusY = ry; } private void init() { radiusX = 58; radiusY = 58; } @Override protected void onDraw(Canvas canvas) { Path path = new Path(); Rect rect = new Rect(0, 0, getWidth(), getHeight()); RectF rectF = new RectF(rect); path.addRoundRect(rectF, radiusX, radiusY, Path.Direction.CCW); canvas.clipPath(path, Region.Op.REPLACE);//Op.REPLACE這個(gè)范圍內(nèi)的都將顯示,超出的部分覆蓋 super.onDraw(canvas); } }
3.ok就那么點(diǎn),思路就是取圓角矩形顯示范圍內(nèi)的圖形