我有以下代码来分隔要绘制的视图的区域:
Rect rect = new Rect();
rect.set(0, 0, 100, 100);
View.setClipBounds(rect);
Run Code Online (Sandbox Code Playgroud)
这将仅在指定的矩形(或在本例中为正方形)上绘制我的视图.但是,我希望将视图剪切为圆形.有没有办法以某种方式绕过Rect对象的角落?
在这种情况下,您需要继承该视图并为其添加一些额外的逻辑.
将这些代码添加到其构造方法中,或者您希望初始化视图的位置.
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
| 归档时间: |
|
| 查看次数: |
2975 次 |
| 最近记录: |