Android的View裁剪

一般我们的View都是矩形的,但是如果我们要裁剪成为其他的形状呢?要如何做?是直接重写onDraw画出形状?还是什么呢?

例子

美图秀秀的图片拼图,如果你直接通过一个View进行的话,发现难度比较大,因为图片移动不影响附近的图片,而且在附近的区域看不见的。说明他们是三个独立的View。

Android的View裁剪_第1张图片
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后拼接在一起的。

你可能感兴趣的:(Android的View裁剪)