自定义正方形圆角

在最近的机顶盒媒体中心开发中,遇到这样一个需求


自定义正方形圆角_第1张图片

需要将每张图片展示为正方形,并且拥有圆角。所以先将图片裁剪为正方形,再画出圆角
布局:


android:id="@+id/btn"

将bitmap裁剪为正方形

    public staticBitmapgetRoundCornerImage(Bitmap bitmap, intmRadius, ImageView imageView) {
        intwith = imageView.getWidth();
        intheight = imageView.getHeight();
        intbwith = bitmap.getWidth();
        intbheight = bitmap.getHeight();
        intsw = 0;
        intsh = 0;
        intew = 0;
        inteh = 0;
        Bitmap roundConcerImage = null;
        if (bheight == bwith) {
            roundConcerImage = bitmap;
        } else {
            if (bheight > bwith) {
                sw = 0;
                //裁剪图片中间部位
                sh = (bheight - bwith) / 2;
                ew = bwith;
                eh = bwith;
            } else {
                sh = 0;
                sw = (bwith - bheight) / 2;
                ew = bheight;
                eh = bheight;
            }
            //创建一个正方形的Bitmap
            roundConcerImage = Bitmap.createBitmap(bitmap, sw, sh, ew, eh);
        }
        roundConcerImage = Bitmap.createScaledBitmap(roundConcerImage, with, height, true);
            //画出圆角
        returncreateRoundConerImage(roundConcerImage, mRadius);
    }

    private staticBitmapcreateRoundConerImage(Bitmap source, intmRadius) {
        finalPaint paint = newPaint();
        // 去锯齿
        paint.setAntiAlias(true);
        // 创建一个和原始图片一样大小位图
        Bitmap target = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = newCanvas(target);
        // 创建一个和传入图片一样大小的矩形
        RectF rect = newRectF(0, 0, source.getWidth(), source.getHeight());
        // 画一个和原始图片一样大小的圆角矩形
        canvas.drawRoundRect(rect, mRadius, mRadius, paint);
        // 设置相交模式 取两者相交的部位
        paint.setXfermode(newPorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        // 把图片画到矩形去
        canvas.drawBitmap(source, 0, 0, paint);
        returntarget;
    }

在onCreate中调用方法

iv= (ImageView) findViewById(R.id.iv);
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(newView.OnClickListener() {
@Override
public voidonClick(View v) {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.mipmap.img);
Bitmap roundCornerImage =getRoundCornerImage(bitmap,7,iv);
iv.setImageBitmap(roundCornerImage);
}
});

实际效果

自定义正方形圆角_第2张图片

你可能感兴趣的:(自定义正方形圆角)