Android Canvas drawing using SurfaceView


It's important to understand the basic concept of the surface view before using:

  • It's basically just a hole in the current window
  • Native UI can be placed on top of it
  • Drawing is done using a dedicated, non UI thread
  • Drawing is not hardware accelerated
  • Uses two buffers: One is currently shown, one is used for drawing.
  • unlockCanvasAndPost() swaps the buffers.

Deadlocks can easily occur if the lockCanvas() and unlockCanvasAndPost() methods are not called in the correct order.