没有绝对的实力,就看运气吧。
先看看效果吧
根据官方APIDemo给出的Xfermode例子我们可以看到下图展示那样
但是,说实话,看到这张图,我是懵逼的,我们应该去自己试一试来加深下自己的理解,所以我画了下,得到的结果如下,仅供参考!最好自己试一试
我先画的正方形,后画的圆
// paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); //圆和正方形相交部分清除,圆与透明部分相交也清除
// paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC)); //覆盖在表面,相交部分正方形被清除,圆与透明相交不被清除
// paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST)); //清除覆盖在上面的圆,圆相交不相交部分都清除
// paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER));//圆覆盖在表面,正方形内部没影响,圆与透明相交不被清除
// paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OVER));//清除覆盖在上面的圆,圆与透明部分相交不清除
// paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));//显示相交的,覆盖在上面的圆,清除不相交部分的圆和相交部分的正方形
// paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));//圆被清除,相交部分随着圆的透明度变化而正比例变化
// paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OUT));//清除相交部分的圆和正方形,不相交不清除
// paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));//圆被清除,相交部分随着圆的透明度变化而反比例
// paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));//显示相交的,覆盖在上面的圆,清除不相交部分的圆不清除相交部分的正方形,和SRC_IN对比
// paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_ATOP));//相交部分圆被清除,相交部分随着圆的透明度变化而正比例变化,与DST_IN对比
// paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XOR<