Home > Software engineering >  Draw rounded button instead of rectangular in Android
Draw rounded button instead of rectangular in Android

Time:03-25

I'm developing a function to draw a rounded button in my android application. The problem is that the final results is rectangular instead of something rounded on the corners. What am I missing?

fun draw(canvas: Canvas?) {
    canvas?.let {
        if (strokeColor != -1) {
            shaderBorderPaint.color = strokeColor
            shaderBorderPaint.shader = null
        } else {
            shaderBorderPaint.shader = shaderFactory.resize(it.width, it.height)
        }

        val cornerRadius = 8f
        val halfStrokeSize: Float = shaderBorderPaint.strokeWidth / 2
        val rect = RectF(halfStrokeSize, it.height - halfStrokeSize, it.width - halfStrokeSize, halfStrokeSize)

        it.drawRoundRect(rect, cornerRadius, cornerRadius, shaderBorderPaint)
    }
}

CodePudding user response:

Try this instead.

    val corners = floatArrayOf(
      80f, 80f,   // Top left radius in px
      80f, 80f,   // Top right radius in px
      0f, 0f,     // Bottom right radius in px
      0f, 0f      // Bottom left radius in px
    )

    val path = Path()
    path.addRoundRect(rect, corners, Path.Direction.CW)
    canvas.drawPath(path, mPaint)

or this,

public static void makeRoundCorner(int bgcolor,int radius,View v,int strokeWidth,int strokeColor)
{
    GradientDrawable gdDefault = new GradientDrawable();
    gdDefault.setColor(bgcolor);
    gdDefault.setCornerRadius(radius);
    gdDefault.setStroke(strokeWidth, strokeColor);
    v.setBackgroundDrawable(gdDefault);
}

CodePudding user response:

because val cornerRadius = 8f. try to set cornerRadius = heightRect / 2

  • Related