title: Efficient 2D drawing in Android
body: <p>I have searched for quite a few hours and have not been able to find a concise definite andswer to my question. I have an application where I need to draw a sports field (including all pitch lines) to the screen. So far, I have extended the SurfaceView and pretty much copied the rest of the LunarLander demo as well.
  All the data the application requires to draw the pitch to the correct dimensions is being received from a socket which works fine too. However, at the minute in the onDraw() function, I am drawing all lines each frame which is causing a fairly slow framerate in the emulator (e.g. ~10fps). Here is my onDraw() function:</p>
  
  <pre><code>@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();
  }
  </code></pre>
  
  <p>I then draw circles and different positions over this background. My question is how do I make this more efficient? Is there a way that I can draw the lines at the application initialisation and not have to redraw them every frame?</p>
  
  <p>Thanks for any help.</p>