Canvas在简单的Android游戏中导致UI延迟

时间:2017-02-11 18:23:34

标签: android canvas android-canvas

我正在构建一款不需要帧速率的简单Android游戏。把它想象成一个简单的国际象棋游戏。

我创建了一个自定义视图,我使用onDraw()绘制整个游戏:

public class GameView extends View {
   public GameView (Context context, AttributeSet attrs) {
      super(context, attrs);
      ...
   }
   protected void onDraw(Canvas canvas) {
      ...
   }
}

目前在原型设计阶段,我只是画线条,圆圈和矩形,而不是任何位图。

每次玩家使用invalidate()进行移动时我都在画画(每个玩家移动只有1帧)。

问题在于,当已经绘制视图时,我注意到用户界面中的帧速率下降,例如我正在向用户显示对话框或祝酒词。它已经在绘制视图时发生,而不是我正在绘制的那一刻。

那很奇怪,不是吗?由于已经绘制了视图,为什么我会在用户界面中注意到这种延迟?

1 个答案:

答案 0 :(得分:0)

我认为你应该看看SurfaceView,这可能就是你想要的。

视图全部绘制在同一个GUI线程上,该线程也用于所有用户交互。

所以你应该使用SurfaceView,它专门用一个线程在画布上实际绘制。

我还建议Difference between SurfaceView and View?