From 89ccb7749febb6e763fa125a8ef66232eb14c1c9 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 14 Feb 2016 23:18:23 +0100 Subject: [PATCH] add some basic drawing --- .../draw/simplemobiletools/com/MyCanvas.java | 79 +++++++++++++++++++ app/src/main/res/layout/activity_main.xml | 12 +-- app/src/main/res/values-w820dp/dimens.xml | 6 -- app/src/main/res/values/dimens.xml | 4 +- 4 files changed, 84 insertions(+), 17 deletions(-) create mode 100644 app/src/main/java/draw/simplemobiletools/com/MyCanvas.java delete mode 100644 app/src/main/res/values-w820dp/dimens.xml diff --git a/app/src/main/java/draw/simplemobiletools/com/MyCanvas.java b/app/src/main/java/draw/simplemobiletools/com/MyCanvas.java new file mode 100644 index 0000000..9ddd629 --- /dev/null +++ b/app/src/main/java/draw/simplemobiletools/com/MyCanvas.java @@ -0,0 +1,79 @@ +package draw.simplemobiletools.com; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Path; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; + +public class MyCanvas extends View { + private static final float THRESHOLD = 5; + private Paint paint; + private Path path; + private float startX; + private float startY; + + public MyCanvas(Context context, AttributeSet attrs) { + super(context, attrs); + + path = new Path(); + paint = new Paint(); + paint.setColor(Color.BLACK); + paint.setStyle(Paint.Style.STROKE); + paint.setStrokeWidth(5f); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + canvas.drawPath(path, paint); + } + + private void actionDown(float x, float y) { + path.moveTo(x, y); + startX = x; + startY = y; + } + + private void actionMove(float x, float y) { + final float dx = Math.abs(x - startX); + final float dy = Math.abs(y - startY); + if (dx >= THRESHOLD || dy >= THRESHOLD) { + path.quadTo(startX, startY, (x + startX) / 2, (y + startY) / 2); + startX = x; + startY = y; + } + } + + private void actionUp() { + path.lineTo(startX, startY); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + final float x = event.getX(); + final float y = event.getY(); + + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + actionDown(x, y); + invalidate(); + break; + case MotionEvent.ACTION_MOVE: + actionMove(x, y); + invalidate(); + break; + case MotionEvent.ACTION_UP: + actionUp(); + invalidate(); + break; + default: + break; + } + + return true; + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 14d29df..8745764 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -4,14 +4,10 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:paddingBottom="@dimen/activity_vertical_margin" - android:paddingLeft="@dimen/activity_horizontal_margin" - android:paddingRight="@dimen/activity_horizontal_margin" - android:paddingTop="@dimen/activity_vertical_margin" tools:context="draw.simplemobiletools.com.MainActivity"> - + + diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml deleted file mode 100644 index 63fc816..0000000 --- a/app/src/main/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - 64dp - diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 47c8224..e641ba4 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,5 +1,3 @@ - - 16dp - 16dp + 16dp