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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容