我已经搜索了好几个小时,但无法找到一个简洁明确的答案来回答我的问题。我有一个应用程序,我需要在屏幕上绘制一个运动场(包括所有球场线)。到目前为止,我已经扩展了 SurfaceView 并且几乎复制了 LunarLander 演示的其余部分。应用程序将间距绘制到正确尺寸所需的所有数据都从一个也可以正常工作的插座接收。然而,在 onDraw() 函数的那一刻,我正在绘制每一帧的所有线条,这导致模拟器中的帧速率相当慢(例如~10fps)。这是我的 onDraw() 函数:
@Override
public void onDraw(Canvas canvas) {
canvas.drawARGB(255,0,144,0);
canvas.drawLine(canvas, getFirstLine(), mPaint);
canvas.drawRect(canvas, getFirstRect(), mPaint);
canvas.drawRect(canvas, getSecondRect(), mPaint);
...
canvas.drawRect(canvas, getSecondRect(), mPaint);
drawAnimatedObjects();
}
然后我在这个背景上画出圆圈和不同的位置。我的问题是如何提高效率?有没有一种方法可以在应用程序初始化时绘制线条,而不必每帧都重新绘制它们?
谢谢你的帮助。