0

我遇到了这个问题,我知道这很常见,问题是我已经应用了代码来绘制,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的宽度和高度会失去圆角的效果?我应该怎么办?

4

2 回答 2

2

这是一个完整的例子: https ://github.com/vinc3m1/RoundedImageView

一探究竟。

于 2013-09-30T06:00:18.117 回答
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;
 }
于 2013-09-30T06:07:23.683 回答