Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Draw Circle on touch

I am trying to draw a circle where user touches screen .

public class MainActivity extends Activity implements OnTouchListener {

LinearLayout layout;
float x=0;
float y=0;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_main);
    layout=(LinearLayout)findViewById(R.id.layout);
    layout.addView(new CustomView(MainActivity.this));
}

public class CustomView extends View {

    Bitmap mBitmap;
    Paint paint;
    public CustomView(Context context) {
        super(context);
        mBitmap = Bitmap.createBitmap(400, 800, Bitmap.Config.ARGB_8888);
        paint=new Paint();
        paint.setColor(Color.RED);
        paint.setStyle(Style.FILL);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.setBitmap(mBitmap);
        canvas.drawCircle(x, y, 50, paint);
        Toast.makeText(MainActivity.this, "DDD", 1).show();
    }
}

@Override
public boolean onTouch(View v, MotionEvent event) {

    if (event.getAction() == MotionEvent.ACTION_DOWN) {
    layout.invalidate();

    }
    return false;
}}
like image 634
Code_Life Avatar asked Aug 03 '12 13:08

Code_Life


1 Answers

The is your version with fixes to make it work:

public class MainActivity extends Activity {

LinearLayout layout;
float x = 0;
float y = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    layout=(LinearLayout)findViewById(R.id.layout);
    layout.addView(new CustomView(MainActivity.this));
}

public class CustomView extends View {

    Bitmap mBitmap;
    Paint paint;

    public CustomView(Context context) {
        super(context);
        mBitmap = Bitmap.createBitmap(400, 800, Bitmap.Config.ARGB_8888);
        paint = new Paint();
        paint.setColor(Color.RED);
        paint.setStyle(Style.FILL);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawCircle(x, y, 50, paint);
    }

    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            x = event.getX();
            y = event.getY();
            invalidate();
        }
        return false;
    }
}

}
like image 133
sdabet Avatar answered Oct 20 '22 16:10

sdabet