一般我们的View都是矩形的,但是如果我们要裁剪成为其他的形状呢?要如何做?是直接重写onDraw画出形状?还是什么呢?
例子
美图秀秀的图片拼图,如果你直接通过一个View进行的话,发现难度比较大,因为图片移动不影响附近的图片,而且在附近的区域看不见的。说明他们是三个独立的View。
如何裁剪
使用android 的Xfermode模式进行裁剪。在View和ViewGroup是不一样的,View直接在onDraw进行,ViewGroup在dispathDraw进行
@Override
protected void onDraw(Canvas canvas) {
//进行canvas图形运算
canvas.saveLayer(0, 0, mWith, mHeight, mPaint, Canvas.ALL_SAVE_FLAG);
super.onDraw(canvas);
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
canvas.drawBitmap(makeDst(mWith, mHeight), 0, 0, mPaint);
mPaint.setXfermode(null);
}
本例子是我在面试一家公司时遇到的,那时候我拿出的方法是以上方法。关键是,那个裁剪的图片,移动并不出现在附近的View下面,所以不要被复杂化了,是三个裁剪的ViewGroup后拼接在一起的。