画圆画布画

时间:2017-10-02 22:19:50

标签: android canvas

我有一张带有width 400height 100的画布,我只是画了一些东西

现在我想绘制一个Drawable

我是这样画的

@Override
protected void onDraw(Canvas canvas) {

    iconDrawable.draw(canvas);
    // ... draw other thing

}

现在结果是

enter image description here

我想要它只能制作Drawable Rounded我看到了一些像RoundedImageView这样的类,但我没有找到好主意将我的Drawable转换为圆形并在画布上绘制而不是全部画布上的小部分

最终结果必须像

enter image description here

在重复之前请仔细阅读问题我希望在所有画布上不要在所有画布上绘制部分的圆形画面,因为我提到我读了一些类似RoundedImageView的类代码......

1 个答案:

答案 0 :(得分:0)

您可以使用RoundedBitmapDrawable的{​​{1}}。

android.support.v4

如果你需要缩放drawable(设置它的大小),你应该使用

Bitmap bm = ...;
RoundedBitmapDrawable drawable = RoundedBitmapDrawableFactory.create(getResources(), bm);
drawable.setCornerRadius(Math.min(bm.getWidth(), bm.getHeight()));
drawable.setAntiAlias(true);
....
drawable.draw(canvas);

如果你需要在(x,y)绘制一个drawable,你应该翻译画布:

drawable.setBounds(0, 0, width, height);

您可以使用canvas.save(); canvas.translate(x, y); drawable.draw(canvas); canvas.restore(); 将drawable剪辑到任何路径:

canvas.cliPath()

如果你需要抗锯齿,你可以试试这些问题:

Antialias on clipPath on layout

How do I antialias the clip boundary on Android's canvas?