我遇到了这个问题而且我知道这很常见,问题是我已经应用了代码来绘制here。现在,由于我的ImageView
设置的宽度和高度为50dp
,因此无法实现圆角。
所以我使用了xml替代方案,这里是:
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<stroke
android:width="1dp"
android:color="#999999" />
<padding android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp"/>
<solid android:color="#ffffff" />
<corners android:radius="15dp" />
</shape>
我把它作为ImageView的背景,现在的问题是圆角的唯一受影响的是ImageView本身,而不是它的内容图像。图像的正常(矩形或尖锐)边缘仍然与其容器重叠,即ImageView。我还在android:scaleType="centerCrop"
中设置了此ImageView
。
我现在很困惑,所以设置ImageView的宽度和高度会失去圆角的效果吗?我该怎么办?
答案 0 :(得分:2)
这是一个完整的例子: https://github.com/vinc3m1/RoundedImageView
检查出来。
答案 1 :(得分:1)
试试这个......
public static Bitmap getRoundCorneredBitmapFrom(Bitmap bitmap,int cornerRadius) {
if (bitmap == null) {
return null;
}
if (cornerRadius < 0) {
cornerRadius = 0;
}
// Create plain bitmap
Bitmap canvasBitmap = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = getCanvas(canvasBitmap);
Paint paint = getPaint();
Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
RectF rectF = new RectF(rect);
canvas.drawRoundRect(rectF, cornerRadius, cornerRadius, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
return canvasBitmap;
}
private static Canvas getCanvas(Bitmap bitmap) {
Canvas canvas = new Canvas(bitmap);
canvas.drawARGB(0, 0, 0, 0);
return canvas;
}
private static Paint getPaint() {
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
return paint;
}