In this example, we demonstrate how to
draw/paint on canvas when the user touches and drags on the screen.
Here we will create a custom view class called 'PaintView' which
will be used as the contentview for the 'MainActivity'.
So lets start:
1.
Create a new project File
->New -> Project ->Android ->Android Application Project.
While creating a new project, name the activity as
MainActivity(MainActivity.java).Press
Ctrl+Shift+O for missing imports after typing the code
MainActivity.java
public class MainActivity extends Activity {
PaintView paintView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
paintView = new PaintView(this);
setContentView(paintView);
paintView.requestFocus();
}
}
2.
Now
create a new class by rightclicking the /src/<package-name>
and select class to create a new class named
PaintView(PaintView.java).Press
Ctrl+Shift+O for missing imports after typing the code
PaintView.java
public class PaintView extends View implements OnTouchListener {
private static final String TAG = "PaintView";
List<Point> points = new ArrayList<Point>();
Paint paint = new Paint();
public PaintView(Context context) {
super(context);
setFocusable(true);
setFocusableInTouchMode(true);
this.setOnTouchListener(this);
paint.setColor(Color.GREEN);
paint.setAntiAlias(true);
}
@Override
public void onDraw(Canvas canvas) {
for (Point point : points) {
canvas.drawCircle(point.x, point.y, 2, paint);
}
}
public boolean onTouch(View view, MotionEvent event) {
Point point = new Point();
point.x = event.getX();
point.y = event.getY();
points.add(point);
invalidate();
Log.d(TAG, "point: " + point);
return true;
}
}
class Point {
float x, y;
@Override
public String toString() {
return x + ", " + y;
}
}
3.We
did not create any .xml file for UI since the above two files are the
only significant files for this example. Run the project by
rightclicking project Run as → android project. Try enhancing this by providing color options,brush styles etc.,
Output:
The
output of this example after drawing would be something like this
