您的位置:首页 > 移动开发 > Android开发

Android中获取圆角图片和圆形图片的三种方式

2017-12-06 16:56 176 查看
package com.example.test;

import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PorterDuffXfermode;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Shader.TileMode;

public class Utils {

// 获取圆型Bitmap
public static Bitmap getCircleBitmap(Bitmap src) {
int diameter = Math.min(src.getWidth(), src.getHeight());
Bitmap dst = Bitmap.createBitmap(diameter, diameter,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(dst);
Path path = new Path();
path.addCircle(diameter / 2, diameter / 2, diameter / 2,
Path.Direction.CW);
canvas.clipPath(path);
canvas.drawBitmap(src, 0, 0, new Paint());
return dst;
}

// 获取圆型Bitmap
public static Bitmap getCircleBitmap2(Bitmap src) {
int diameter = Math.min(src.getWidth(), src.getHeight());
Bitmap dst = Bitmap.createBitmap(diameter, diameter,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(dst);
BitmapShader shader = new BitmapShader(src, TileMode.REPEAT,
TileMode.REPEAT);
Paint paint = new Paint();
paint.setShader(shader);
canvas.drawCircle(diameter / 2, diameter / 2, diameter / 2, paint);
return dst;
}

// 获取圆型Bitmap
public static Bitmap getCircleBitmap3(Bitmap src) {
int diameter = Math.min(src.getWidth(), src.getHeight());
Bitmap dst = Bitmap.createBitmap(diameter, diameter,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(dst);
Paint paint = new Paint();
paint.setAntiAlias(true);
canvas.drawCircle(diameter / 2, diameter / 2, diameter / 2, paint);
PorterDuffXfermode xfermode = new PorterDuffXfermode(
PorterDuff.Mode.SRC_IN);
paint.setXfermode(xfermode);
canvas.drawBitmap(src, 0, 0, paint);
return dst;
}

// 获取圆角矩形Bitmap
public static Bitmap getRoundCornerBitmap(Bitmap src, float radius) {
Bitmap dst = Bitmap.createBitmap(src.getWidth(), src.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(dst);
Path path = new Path();
RectF rect = new RectF(0, 0, src.getWidth(), src.getHeight());
path.addRoundRect(rect, radius, radius, Path.Direction.CW);
canvas.clipPath(path);
canvas.drawBitmap(src, 0, 0, new Paint());
return dst;
}

// 获取圆角矩形Bitmap
public static Bitmap getRoundCornerBitmap3(Bitmap src, float radius) {
Bitmap dst = Bitmap.createBitmap(src.getWidth(), src.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(dst);
RectF rect = new RectF(0, 0, dst.getWidth(), dst.getHeight());
BitmapShader shader = new BitmapShader(src, TileMode.REPEAT,
TileMode.REPEAT);
Paint paint = new Paint();
paint.setShader(shader);
canvas.drawRoundRect(rect, radius, radius, paint);
return dst;
}

// 获取圆角矩形Bitmap
public static Bitmap getRoundCornerBitmap2(Bitmap bitmap, float pixels) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
Bitmap roundCornerBitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(roundCornerBitmap);
Paint paint = new Paint();
paint.setAntiAlias(true);
Rect rect = new Rect(0, 0, width, height);
RectF rectF = new RectF(rect);
canvas.drawRoundRect(rectF, pixels, pixels, paint);
PorterDuffXfermode xfermode = new PorterDuffXfermode(
PorterDuff.Mode.SRC_IN);
paint.setXfermode(xfermode);
canvas.drawBitmap(bitmap, rect, rect, paint);
return roundCornerBitmap;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: