Android之图片剪裁(圆角,圆形图)

本文中利用了Xfermode,图片来自互联网

这个重叠MODE,可以帮你干不少好事0.0

Android之图片剪裁(圆角,圆形图)_第1张图片
image.png

这个就基本上是Ps中的重叠视图了,但是好多哥们用这个Mode好像是不起作用的

记得在Canvas中加一句(保存上一次绘画的配置)

 canvas.saveLayerAlpha(0, 0, getWidth(), getHeight(), 255);//保存上一次绘画的配置

这个只是一个基本配置,如果你想在你自己的项目当中使用,记得,缩小图片..使用:Matrix一个专门处理图片的类

将图片缩放至制定大小,这段代码在网上已经屡见不鲜了,我给大家解释一下其中的有些含义

    private Bitmap getBitmap(Bitmap bitmap, int newW, int newH) {

        Matrix matrix = new Matrix();//创建一个处理图片的类
        int width = bitmap.getWidth();//获取图片本身的大小(宽)
        int height = bitmap.getHeight();//获取图片本身的大小(高)

        float wS = (float) newW / width;//缩放比---->这块注意这个是新的宽度/高度除以旧的宽度
        float hS = (float) newH / height;//缩放比---->这块注意这个是新的宽度/高度除以旧的宽度
        matrix.postScale(wS, hS);//这块就是处理缩放的比例
        //matrix.setScale(sX,sY);//缩放图片的质量sX表示宽0.5就代表缩放一半,sX同样

        Bitmap bitmap1 = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);//创建一个新的图像


        return bitmap1;
    }

开始画
先画矩形

//获取缩放后的图片
   Bitmap bitmap1 = getBitmap(bitmap, 400, 400);
//要求保存上一次绘画的结果
   canvas.saveLayerAlpha(0, 0, getWidth(), getHeight(), 255, Canvas.ALL_SAVE_FLAG);
//创建矩形
    RectF rect = new RectF(20, 20, 400, 400);

//开始绘画30px的弧度(矩形)
   canvas.drawRoundRect(rect, 30, 30, paint);

//重叠模式为SRC_IN
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
//在画图片
  canvas.drawBitmap(bitmap1, 0, 0, paint);


效果图:


Android之图片剪裁(圆角,圆形图)_第2张图片
Screenshot_20180108-112830.png

第二个,画圆

            Bitmap bitmap1 = getBitmap(bitmap, 400, 400);

            canvas.saveLayerAlpha(0, 0, getWidth(), getHeight(), 255);

            canvas.drawOval(20, 20, 420, 420, paint);

            paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));

            canvas.drawBitmap(bitmap1, 20, 20, paint);

效果图:


Android之图片剪裁(圆角,圆形图)_第3张图片
Screenshot_20180108-112135.png

如果需要真正的在项目当中使用,你还需要用到图片缩放(质量)防止内存溢出

相比较会这个功能了是不是就可以干很多事情啦~~~

你可能感兴趣的:(Android之图片剪裁(圆角,圆形图))