在android上使用画布的笔画圈imageview

时间:2015-04-13 20:51:05

标签: android canvas imageview android-canvas android-imageview

我试图在我的圆圈图像周围使用笔划,但是笔划不适合圆圈,看起来圆圈周围有一个正方形,并且笔划正在超过该限制,请参见下图。

public static Bitmap getCircleBitmap(Bitmap bitmap) {
       int size = Math.min(bitmap.getWidth(), bitmap.getHeight());

    Bitmap output = Bitmap.createBitmap(size,
            size, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(output);

    BitmapShader shader;
    shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP,
            Shader.TileMode.CLAMP);

    Paint paint = new Paint();
    Paint paintB = new Paint();
    paintB.setShader(shader);
    paintB.setStyle(Paint.Style.FILL);
    paint.setAntiAlias(true);
    paint.setColor(Color.YELLOW);
    paint.setStrokeWidth(15);
    paint.setStyle(Paint.Style.STROKE);


    RectF rect = new RectF(0, 0 ,size,size);
    int radius = size/2;
    canvas.drawRoundRect(rect, radius, radius, paint);
    canvas.drawRoundRect(rect, radius, radius, paintB);
    return output;
    }

的xml:

  <com.click.CircledNetworkImageView
     android:id="@+id/profilePic"
     android:layout_width="@dimen/feed_item_profile_pic"
     android:layout_height="@dimen/feed_item_profile_pic"
     android:scaleType="centerCrop"
     android:layout_alignParentTop="false"
     android:layout_alignParentLeft="false"
     android:layout_alignParentBottom="false"
     android:layout_alignParentRight="false"
     android:layout_alignWithParentIfMissing="false"
     android:layout_alignParentEnd="false"
     android:layout_alignParentStart="false"
     android:layout_centerInParent="true">
 </com.click.CircledNetworkImageView>

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为BitmapShader是一种神奇的画笔,我画的所有东西都会划掉画布,露出下面的位图。当我设想用BitmapShader减少错误时。

所以,通过查看你的代码,我猜你想要将图像放在圆角矩形内,外面有白色笔划。

由于您将绘画样式设置为STROKE,因此画笔正在抚摸形状,因此它会使位图显示在其描边的位置。

您需要两次调用canvas.drawRoundRect(),使用相同的矩/半径值,但使用两种不同的颜料。第一次绘制将具有位图着色器设置和样式FILL。第二次绘制颜色=白色,笔划宽度= 15,并且样式为STROKE。