title: paint canvas android
body: <p>I'm developing in android, and I have to do a <code>Paint</code> for android. </p>
  
  <p>I'm using the code below and, when I execute the code, the draw works, but, it seems that there  are 2 surfaces to paint, and when you draw in one, the other one disappears.</p>
  
  <p>I was looking for the exact error, but cannot find it.</p>
  
  <p>Here is the code : </p>
  
  <pre><code>import java.util.Random; 
  
  import android.annotation.SuppressLint;
  import android.annotation.TargetApi;
  import android.app.Activity;
  import android.content.Context;
  import android.graphics.Canvas;
  import android.graphics.Paint;
  import android.graphics.Path;
  import android.os.Bundle;
  import android.view.MotionEvent;
  import android.view.SurfaceHolder;
  import android.view.SurfaceView;
  import android.view.View;
   import android.view.View.OnClickListener;
  import android.widget.Button;
  import android.widget.RelativeLayout;
  
  public class MainActivity extends Activity {
    MySurfaceView mySurfaceView;
    Button Cuadrado;
    Button Circulo;
    Button Color;
    Button Linea;
    private boolean Bcuadrado,Bcirculo,Bcolor=false;
    private boolean Blinea=true;
      Canvas canvas = new Canvas();
  
    @TargetApi(11)
  @SuppressLint("NewApi")
  @Override
    public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         RelativeLayout mainLayout =(RelativeLayout)findViewById(R.id.main_layout_id );
         View view =getLayoutInflater().inflate(R.layout.itemlayout, mainLayout,false);
         mainLayout.addView(view);
         mySurfaceView = new MySurfaceView(this);
         Cuadrado=(Button)findViewById(R.id.button1);
         Circulo=(Button)findViewById(R.id.button2);
         Color=(Button)findViewById(R.id.button3 );
         Linea=(Button)findViewById(R.id.button4 );
         int w= view.getWidth();
         int h= view.getHeight();
         float x=view.getX();
         float y= view.getY();
         mySurfaceView.setY(100);
         mainLayout.addView(mySurfaceView);
         Cuadrado.setOnClickListener(new OnClickListener() {
  
          @Override
          public void onClick(View v) {
              if(Bcuadrado==false){
                  Bcuadrado=true;
                  Bcirculo=false;
                  Bcolor=false;
                  Blinea=false;
              }
          }
         });
  
         Circulo.setOnClickListener(new OnClickListener() {
  
          @Override
          public void onClick(View v) {
              if(!Bcirculo){
              Bcuadrado=false;
              Bcirculo=true;
              Bcolor=false;
              Blinea=false;
          }
      }
     });
  
         Color.setOnClickListener(new OnClickListener() {
  
          @Override
          public void onClick(View v) {
          if(!Bcolor){
              Bcuadrado=false;
              Bcirculo=false;
              Bcolor=true;
              Blinea=false;
          }
      }
     });
  
         Linea.setOnClickListener(new OnClickListener() {
  
          @Override
          public void onClick(View v) {
          if(!Blinea){
              Bcuadrado=false;
              Bcirculo=false;
              Bcolor=false;
              Blinea=true;
          }
      }
     });
  }
  
    class MySurfaceView extends SurfaceView{
     Path path;
     SurfaceHolder surfaceHolder;
     volatile boolean running = false;        
     private Paint paint = new Paint();
     float x0=0;
      float x1=0;
      float y0=0;
      float y1=0;
      Random random = new Random();
  
     public MySurfaceView(Context context) {
      super(context);
      surfaceHolder = getHolder();
      paint.setStyle(Paint.Style.STROKE);
      paint.setStrokeWidth(3);
      paint.setColor(android.graphics.Color.WHITE);
  
     }
  
     @Override
     public boolean onTouchEvent(MotionEvent event) {
  
  
         if(Blinea){
              if(event.getAction() == MotionEvent.ACTION_DOWN){
               path = new Path();
               path.moveTo(event.getX(), event.getY());
              }else if(event.getAction() == MotionEvent.ACTION_MOVE){
               path.lineTo(event.getX(), event.getY());
              }else if(event.getAction() == MotionEvent.ACTION_UP){
               path.lineTo(event.getX(), event.getY());
              }
              if(path != null){
                   canvas = surfaceHolder.lockCanvas();
                   canvas.drawPath(path, paint);
                   surfaceHolder.unlockCanvasAndPost(canvas);
                  }
  
         }else if(Bcuadrado){
             if(event.getAction()==MotionEvent.ACTION_DOWN){
                 x0=event.getX();
                 y0=event.getY();
             }
             else if(event.getAction()==MotionEvent.ACTION_UP){
                 x1=event.getX();
                 y1=event.getY();
                 canvas = surfaceHolder.lockCanvas();
                 canvas.drawRect(x0, y0, x1, y1, paint);
                 surfaceHolder.unlockCanvasAndPost(canvas);
             }
  
         }else if(Bcirculo){
             if(event.getAction()==MotionEvent.ACTION_DOWN){
                 x0=event.getX();
                 y0=event.getY();
             }
             else if(event.getAction()==MotionEvent.ACTION_UP){
                 x1=event.getX();
                 canvas=surfaceHolder.lockCanvas();
                 canvas.drawCircle(x0, y0,(x1-x0), paint);
                 surfaceHolder.unlockCanvasAndPost(canvas);
             }
         }else if(Bcolor){
               int r = random.nextInt(255);
               int g = random.nextInt(255);
               int b = random.nextInt(255);
               canvas=surfaceHolder.lockCanvas();
               paint.setColor(0xff000000 + (r &lt;&lt; 16) + (g &lt;&lt; 8) + b);
               surfaceHolder.unlockCanvasAndPost(canvas);
         }
  
  
      return true; 
     }
    }
  }
  </code></pre>