如果 Build.VERSION.SDK_INT < 21,如何绘制 RoundRect()?

How to drawRoundRect() if Build.VERSION.SDK_INT < 21?

方法 canvas.drawRoundRect() 仅适用于具有 Build.VERSION.SDK_INT >= 21 的设备。

方法canvas.drawArc()还需要SDK_INT >= 21

是否可以在旧设备上绘制 RoundRect?

是的。根据官方文档:https://developer.android.com/reference/android/graphics/Canvas#drawRoundRect(android.graphics.RectF,%20float,%20float,%20android.graphics.Paint)

drawRoundRect有两个版本。 for lower apis(<21) 接受 Rect 作为参数。

所以你可以这样做:

@Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint paint = new Paint();
        paint.setStyle(Paint.Style.FILL);
        paint.setColor(Color.RED);
        paint.setAntiAlias(true);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            canvas.drawRoundRect(0, 0, 0, 0, 2f, 3f, paint);
        } else {
            RectF rect = new RectF(10, 10, 20, 20);
            canvas.drawRoundRect(rect, 0, 0, paint);
        }
    }

根据您的用例更改值。