安卓

android 圆角图标 和不规则圆角(边框)

2018-09-25  本文已影响217人  神农笔记

android 圆角图标 和不规则圆角(边框)

1.png

需要求就是如图 所示

将 原图 变成 圆角 或者不规则的形状,应为桌面主题需要用到。

当然 方法很多 这边提供如下方法。

// 圓角
    private Bitmap getRoundedCornerBitmap(Bitmap bitmap) {
        Bitmap roundBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
        Canvas canvas = new Canvas(roundBitmap);
        int color = 0xff424242;
        Paint paint = new Paint();
        Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        RectF rectF = new RectF(rect);
        float roundPx = 50;
        paint.setAntiAlias(true);
        canvas.drawARGB(0, 0, 0, 0);
        paint.setColor(color);
        canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        canvas.drawBitmap(bitmap, rect, rect, paint);
        return roundBitmap;
    }

    // 不规则角
    private Bitmap getRoundedCornerBitmap(Bitmap bitmap, Bitmap bg) {
        Paint paint = new Paint();
        float scaleX = (float) (bitmap.getWidth() * 1.0 / bg.getWidth()) + 0.1f;
        float scaleY = (float) (bitmap.getHeight() * 1.0 / bg.getHeight()) + 0.1f;
        Bitmap scaleBitmap = scaleBitmap(bg, scaleX, scaleY);

        Bitmap roundBitmap = Bitmap.createBitmap(scaleBitmap.getWidth(), scaleBitmap.getHeight(), Config.ARGB_8888);
        Canvas canvas = new Canvas(roundBitmap);
        paint.setAntiAlias(true);
        canvas.drawBitmap(scaleBitmap, 0, 0, paint);
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        canvas.drawBitmap(bitmap, scaleBitmap.getWidth() / 2 - bitmap.getWidth() / 2, scaleBitmap.getHeight() / 2
                - bitmap.getHeight() / 2, paint);
        return roundBitmap;
    }

DEMO 下载地址

上一篇 下一篇

猜你喜欢

热点阅读