title: how to set backgroundColor to a surfaceview in android?
body: <p>i am using a surface view to draw interactive piechart. here is my code which will looks like all surface view examples.</p>
  
  <pre><code>class PieChart extends SurfaceView implements SurfaceHolder.Callback {
  
  public PieChart(Context context) {
          super(context);
          // Log.i("PieChart", "PieChart : constructor");
          getHolder().addCallback(this); 
  }
  
  @Override
      public void onDraw(Canvas canvas) {
          if (hasData) {
  
              resetColor();
              try {
                  canvas.drawColor(getResources().getColor(R.color.graphbg_color));
  
                  graphDraw(canvas);
              } catch (ValicException ex) {
  
              }
  
          }
      }
  
      @Override
      public void surfaceChanged(SurfaceHolder holder, int format, int width,
              int height) {
  
          Log.i("PieChart", "surfaceChanged");
  
      }
  
      public int callCount = 0;
  
      @Override
      public void surfaceCreated(SurfaceHolder holder) {
  
              try {
                  // Log.i("PieChart", "surfaceCreated");
                  mChartThread = new ChartThread(getHolder(), this);
                  mChartThread.setRunning(true);
  
                  if (!mChartThread.isAlive()) {
                      mChartThread.start();
                  }
  
                  Rect mFrame = holder.getSurfaceFrame();
  
                  mOvalF = new RectF(0, 0, mFrame.right, mFrame.right);
  
              } catch (Exception e) {
                  // No error message required
              }
  
      }
  
      @Override
      public void surfaceDestroyed(SurfaceHolder holder) {
          // Log.i("PieChart", "surfaceDestroyed");
          boolean retry = true;
          callCount = 0;
          mChartThread.setRunning(false);
          while (retry) {
              try {
                  mChartThread.join();
                  retry = false;
              } catch (InterruptedException e) {
                  // No error message required
              }
          }
      }
  }
  
  class ChartThread extends Thread {
  
      private SurfaceHolder mSurfaceHolder;
      private PieChart mPieChart;
      private boolean mRefresh = false;
  
      public ChartThread(SurfaceHolder surfaceHolder, PieChart pieChart) {
          // Log.i("ChartThread", "ChartThread");
          mSurfaceHolder = surfaceHolder;
          mPieChart = pieChart;
      }
  
      public void setRunning(boolean Refresh) {
          // Log.i("ChartThread", "setRunning : " + Refresh);
          mRefresh = Refresh;
      }
  
      @Override
      public void run() {
          Canvas c;
          // Log.i("ChartThread", "run : " + mRefresh);
          while (mRefresh) {
              c = null;
              try {
                  c = mSurfaceHolder.lockCanvas(null);
              //  c.drawColor(0xFFebf3f5);
                  synchronized (mSurfaceHolder) {
  
                      mPieChart.onDraw(c);
  
                  }
              } catch (Exception ex) {
  
              } finally {
                  // do this in a finally so that if an exception is thrown
                  // during the above, we don't leave the Surface in an
                  // inconsistent state
                  if (c != null) {
                      mSurfaceHolder.unlockCanvasAndPost(c);
                  }
              }
          }
      }
  }
  </code></pre>
  
  <p>with this i am able to draw pie charts successfully. but here the issue is "before loading pie chart black rectangle is visible for a second which is surfaceview's default back ground". so I want to set background color for surface view to avoid the black rectangle.</p>
  
  <p>The following is the changed code for drawing background color to surface view.</p>
  
  <pre><code> public PieChart(Context context) {
              super(context);
              // Log.i("PieChart", "PieChart : constructor");
              getHolder().addCallback(this); 
              setBackgroundColor(getResources().getColor(R.color.graphbg_color));
      }
  
  
  @Override
      public void onDraw(Canvas canvas) {
          if (hasData) {
               setBackgroundColor(getResources().getColor(R.color.graphbg_color));
              resetColor();
              try {
          canvas.drawColor(getResources().getColor(R.color.graphbg_color));
  
                  graphDraw(canvas);
              } catch (ValicException ex) {
  
              }
  
          }
      }
  </code></pre>
  
  <p>with these changes, black rectangle issue is resolved. but piechart is not refreshing properly. can someone help me to resolve any of these two issues.</p>