// SquareBallRectangleView.kt by Kari Laitinen // http://www.naturalprogramming.com/ // 2013-02-13 File created. // 2017-12-27 Kotlin version created. package square.ball.rectangle import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.util.AttributeSet import android.view.View class SquareBallRectangleView : View { internal var view_center_point_x = 100 internal var view_center_point_y = 100 internal var shape_to_draw = "Square" constructor(context: Context) : super(context) { } // The following constructor is needed when SquareBallRectangleView object is // specified in an XML file, and is thus created automatically. constructor(context: Context, attributes: AttributeSet) : super(context, attributes) { } public override fun onSizeChanged(current_width_of_this_view: Int, current_height_of_this_view: Int, old_width_of_this_view: Int, old_height_of_this_view: Int) { view_center_point_x = current_width_of_this_view / 2 view_center_point_y = current_height_of_this_view / 2 } fun set_shape_to_draw(given_shape_to_draw: String) { shape_to_draw = given_shape_to_draw invalidate() } override fun onDraw(canvas: Canvas) { val filling_paint = Paint() filling_paint.style = Paint.Style.FILL val outline_paint = Paint() // Default color for Paint is black. outline_paint.style = Paint.Style.STROKE if (shape_to_draw == "Square") { filling_paint.color = Color.CYAN canvas.drawRect((view_center_point_x - 80).toFloat(), (view_center_point_y - 80).toFloat(), (view_center_point_x + 80).toFloat(), (view_center_point_y + 80).toFloat(), filling_paint) canvas.drawRect((view_center_point_x - 80).toFloat(), (view_center_point_y - 80).toFloat(), (view_center_point_x + 80).toFloat(), (view_center_point_y + 80).toFloat(), outline_paint) } else if (shape_to_draw == "Ball") { filling_paint.color = Color.MAGENTA canvas.drawCircle(view_center_point_x.toFloat(), view_center_point_y.toFloat(), 80f, filling_paint) canvas.drawCircle(view_center_point_x.toFloat(), view_center_point_y.toFloat(), 80f, outline_paint) } else if (shape_to_draw == "Rectangle") { filling_paint.color = Color.YELLOW canvas.drawRect((view_center_point_x - 120).toFloat(), (view_center_point_y - 60).toFloat(), (view_center_point_x + 120).toFloat(), (view_center_point_y + 60).toFloat(), filling_paint) canvas.drawRect((view_center_point_x - 120).toFloat(), (view_center_point_y - 60).toFloat(), (view_center_point_x + 120).toFloat(), (view_center_point_y + 60).toFloat(), outline_paint) } } }