一般我們的View都是矩形的,但是如果我們要裁剪成為其他的形狀呢?要如何做?是直接重寫onDraw畫出形狀?還是什么呢?
例子
美圖秀秀的圖片拼圖,如果你直接通過一個View進行的話,發現難度比較大,因為圖片移動不影響附近的圖片,而且在附近的區域看不見的。說明他們是三個獨立的View。
Paste_Image.png
如何裁剪
使用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后拼接在一起的。