我可以使用setClipBounds剪辑带圆圈的视图吗?

Dav*_*tos 3 android

我有以下代码来分隔要绘制的视图的区域:

Rect rect = new Rect();
rect.set(0, 0, 100, 100);
View.setClipBounds(rect);
Run Code Online (Sandbox Code Playgroud)

这将仅在指定的矩形(或在本例中为正方形)上绘制我的视图.但是,我希望将视图剪切为圆形.有没有办法以某种方式绕过Rect对象的角落?

fro*_*tto 5

在这种情况下,您需要继承该视图并为其添加一些额外的逻辑.

将这些代码添加到其构造方法中,或者您希望初始化视图的位置.

final Path path = new Path();
path.addRoundRect(new RectF(0,0,getWidth(),getHeight()),10,10,Direction.CW);
Run Code Online (Sandbox Code Playgroud)

使用这些代码,您将定义将沿其绘制视图的路径(补丁边界内的区域).

将此方法添加到类中以在视图上应用此蒙版.

@Override
protected void dispatchDraw(Canvas canvas){
    canvas.clipPath(path);
    super.dispatchDraw(canvas);
}
Run Code Online (Sandbox Code Playgroud)

致谢:https://stackoverflow.com/a/7559233/1841194