自定义圆形ViewGroup的步骤记录下(其他形状类似)

主要就是先把画布canvas,先按照自己的需求进行裁剪,我现在需要一个圆形的viewgroup:

public class MyCircleView extends RelativeLayout {
    public MyCircleView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    @Override
    protected void onLayout(boolean c, int l, int t, int r, int b) {
        super.onLayout(c, l, t, r, b);
    }
    @Override
    protected void dispatchDraw(Canvas canvas) {
        Path path = new Path();
        //添加一个圆形的路径,Path.Direction.CW代表顺时针方向
        path.addRoundRect(new RectF(0, 0, getMeasuredWidth(), getMeasuredHeight()), getMeasuredWidth()/2, getMeasuredWidth()/2, Path.Direction.CW);
        //画布按照路线裁剪
//        Region.Op.DIFFERENCE
//        -- 得到的区域    ->在A中,与B不相同的部分
//        Region.Op.REVERSE_DIFFERENCE
//        -- 得到的区域    ->在B中,与A不相同的部分
//        Region.Op.INTERSECT
//        -- 得到的区域    ->A与B相同的部分(交集)
//        Region.Op.XOR
//        -- 得到的区域    ->不包含A与B相同的部分(全集减去交集)
//        Region.Op.UNION
//        -- 得到的区域    ->A与B的所有部分(全集)
//        Region.Op.REPLACE
//        -- 得到的区域    ->将A的区域用B替换
        canvas.clipPath(path, Region.Op.REPLACE);        super.dispatchDraw(canvas);
    }
    @Override
    public void onDraw(Canvas canvas) {
        super.onDraw(canvas);
    }}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容