在画布上绘制矩形

时间:2019-11-23 18:24:03

标签: android canvas

我正在尝试在Android中开发一种乒乓游戏,其中我将有两只蝙蝠将球击中。我已经在画布上绘制了一个蝙蝠,并将其放置在屏幕的最左侧。我需要在屏幕的最右侧放置另一个蝙蝠,但是每次在最左侧绘制桨时。有人可以帮我吗?

class gameui(context: Context, attrs: AttributeSet): View(context,attrs){
private val bluePaint = Paint().apply {
    color = Color.BLUE
    strokeWidth = 8f
}
var paddle1 = Rect()
var paddle2 = Rect()
var paint =  Paint()

init{

    val x = 50
    val y = 200
    val sideLength = 20


    paddle1 = Rect(x, y, sideLength, sideLength)
    paddle2 = Rect(x, y, sideLength, sideLength)



    paint = Paint()
    paint.color = Color.RED
}



override fun onDraw(canvas: Canvas?) {
    super.onDraw(canvas)
    canvas!!.drawRect(paddle1, paint);

}

My output on emulator

1 个答案:

答案 0 :(得分:1)

那是因为您将其定位在与第一个球拍相同的X,Y位置,所以您想将右边的球拍定位在

val x = canvas.width - 20 - sideLength

但是,由于尚未测量视图或布置视图,因此在调用init {}时您无权访问画布(或视图宽度)。因此,您可能应该将x坐标设置为在onDraw(..)onSizeChanged(...)内部,以便知道视图的实际宽度。