Android-超簡單實現圖片圓角
作者:雨雪紛飛
最近被圖片圓角給折騰了,話說網上的很多方法圖片圓角正正常常的。但放到我這后,圓角就有點尖了,點都不圓滑。 我用的是Glide獲取的圖片,這個Glide也有BitmapTransformation能拓展實現圓角,但表示我展示出來效果很不好。 最終我總結下來是因為Glide對圖片像素壓縮,分辨率降低,導致圓角效果差。 網上沒找到辦法,因此自己想辦法。廢話不多說,來看實現。
最近被圖片圓角給折騰了,話說網上的很多方法圖片圓角正正常常的。但放到我這后,圓角就有點尖了,點都不圓滑。 我用的是Glide獲取的圖片,這個Glide也有BitmapTransformation能拓展實現圓角,但表示我展示出來效果很不好。 最終我總結下來是因為Glide對圖片像素壓縮,分辨率降低,導致圓角效果差。 網上沒找到辦法,因此自己想辦法。廢話不多說,來看實現。
此方法只適合分辨率小的圖片,分辨率太高了角度反而不圓
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這個范圍內的都將顯示,超出的部分覆蓋 super.onDraw(canvas); } }
3.ok就那么點,思路就是取圓角矩形顯示范圍內的圖形
責任編輯:陳琳
來源:
雨雪紛飛的博客