surfaceView闪烁的画布

问题描述 投票:0回答:1

我正在编写绘图应用程序并使用画布。我创建了surfaceView并重写了onTouch函数来跟踪用户的手指运动。但是当用户绘图时,surfaceView会闪烁。我该如何解决?

这是我的绘图代码:

override fun onTouchEvent(event: MotionEvent?): Boolean {
    if (event != null)
    if (event.action == MotionEvent.ACTION_MOVE && holder != null) {
        thread {
            val canvas = holder.lockCanvas()
            canvas.drawBitmap(brush,
                event.x - brush.width.div(2),
                event.y - brush.height.div(2),
                null)
            holder.unlockCanvasAndPost(canvas)
        }.join()
    }
    return true
}
android canvas surfaceview
1个回答
0
投票

我想每次onTouchEvent发生时都通过https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.concurrent/thread.html创建一个新线程非常昂贵,并且会引起闪烁。相反,我会尝试在单个线程中进行画布锁定/解锁+位图绘制循环,并在从onTouchEvent更改x和y时告诉线程。

© www.soinside.com 2019 - 2024. All rights reserved.