我编写了一个简单的 Android 应用程序,它使用从SurfaceView
. 它遵循LunarLander 示例应用程序SurfaceHolder
的模型,并使用后台线程直接在对象中执行所有计算和绘图。
一切都很好,它对于中小型迷宫运行良好,但是如果我将迷宫单元大小设置为 8 像素,那么应用程序会在迷宫中爬行很多单元。
代码正在做一些我不喜欢的事情,即使它没有改变,它也会绘制每个单元格,这是避免屏幕从SurfaceView
双缓冲区闪烁所必需的(在应用程序的先前迭代中,我正在绘制改变的内容,并且导致混乱)。
我想要的是能够使用SurfaceView
但对绘制的内容更具选择性。这可能吗?如果没有,有什么替代方案?保留一个离屏位图,然后有选择地先画进去怎么样?
编辑:我实现了一个屏幕外Bitmap
和Canvas
组合,由我的计时器驱动状态机写入,仅绘制在雕刻/解决方案期间受影响的那些区域。然后我简单地将整个屏幕外位图绘制到方法SurfaceView
内run()
,这解决了我的问题;我能够将单元格大小降低到 5 像素并且性能很好。