Android的View裁剪

一般我們的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后拼接在一起的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容