【发布时间】:2021-05-27 14:34:45
【问题描述】:
所以我试图在 kotlin 中绘制一个矩形,并且我有一个可以执行此操作的类,但我需要画布的大小来执行此操作,因此在我的主视图中,我在 onDraw( ) 函数,类似这样。
主视图
var rectangle = Rectangle()
override fun onDraw(canvas:Canvas) {
super.onDraw(canvas)
rectangle.setNewCanvas(canvas)
rectangle.show()
rectangle.update()
invalidate()
}
类
class Rectangle {
private var canvas: Canvas? = null
var x = 0
var speed = 10
fun setNewCanvas(newCanvas: Canvas)
if(canvas == null) {
canvas = newCanvas
x = canvas?.width!!
}
}
fun show() {
canvas?.drawRect(x.toFloat(), 0F, x.toFloat() - 100, 1000F, Paint(Color.RED))
}
fun update() {
x -= speed
}
}
我试图让矩形在屏幕上移动,但是当我检查 setNewCanvas() 中的画布是否为空时,它会移动,但矩形是在应用程序项目名称所在的横幅中的画布上方绘制的。如果我不检查 canvas 是否为空,那么每次调用都会将 x 的值重新分配给宽度,因此矩形永远不会移动。
【问题讨论】:
标签: android android-studio kotlin canvas graphics