I have made a custom view which is refereed from xml layout. I added a button for clearing the view. Now I want to clear the canvas area upon clicking. I added an onClick event in xml layout file.Now how n where do I add the code for clearing the whole view/canvas? I have just added few portion of code. (this is not clearing anything). I have added my activity,view and layout file in order as below.
public class CustomViewActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void clearLine(View v) {
new CustomView(CustomViewActivity.this, null).clearCanvas();
}
}
public class CustomView extends View {
private Paint paint = new Paint();
private Path path = new Path();
public Boolean clearCanvas = false;
public CustomView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CustomView(Context context,AttributeSet attrs ) {
super(context,attrs);
paint.setAntiAlias(true);
paint.setColor(Color.BLUE);
paint.setTextSize(20);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeWidth(5f);
}
protected void onDraw(Canvas canvas) {
if(clearCanvas)
{ // Choose the colour you want to clear with.
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
//canvas.drawColor(0, Mode.CLEAR);
clearCanvas = false;
}
super.onDraw(canvas);
canvas.drawText("Hello World", 5, 30, paint);
canvas.drawPath(path, paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
//int action = event.getAction() & MotionEvent.ACTION_MASK;
float eventX = event.getX();
float eventY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(eventX, eventY);
return true;
case MotionEvent.ACTION_MOVE:
path.lineTo(eventX, eventY);
break;
case MotionEvent.ACTION_UP:
// nothing to do
break;
default:
return false;
}
// Schedules a repaint.
invalidate();
return true;
}
public void clearCanvas(){
clearCanvas = true;
postInvalidate();
//canvas.drawColor(0, Mode.CLEAR);
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.example.CustomViewEvent.CustomView
android:id="@+id/customView"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="28dp"
android:onClick="clearLine"
android:text="CLEAR" />
</RelativeLayout>