BufferView.java
Dosyayı İndir
package com.godoro.androidgraphics;
import android.content.*;
import android.graphics.*;
import android.view.*;
public class BufferView extends View {
private Bitmap bitmap;
private Canvas bitmapCanvas;
private Path path;
private Paint paint;
private float x;
private float y;
private static final float TOUCH_TOLERANCE = 4;
public BufferView(Context context) {
super(context);
bitmap = Bitmap.createBitmap(800, 1200, Bitmap.Config.ARGB_8888);
bitmapCanvas = new Canvas(bitmap);
path = new Path();
paint = new Paint();
paint.setAntiAlias(true);
paint.setDither(true);
paint.setColor(0xFF0000FF);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeWidth(16);
paint.setAlpha(0xAA);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(0xFFFFFFFF);
canvas.drawBitmap(bitmap, 0, 0, paint);
canvas.drawPath(path, paint);
}
private void touchUp(float x, float y) {
path.reset();
path.moveTo(x, y);
this.x = x;
this.y = y;
}
private void touchMove(float x, float y) {
float dx = Math.abs(x - this.x);
float dy = Math.abs(y - this.y);
if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
path.quadTo(this.x, this.y, (x + this.x)/2, (y + this.y)/2);
this.x = x;
this.y = y;
}
}
private void touchUp() {
path.lineTo(x, y);
bitmapCanvas.drawPath(path, paint);
path.reset();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
touchUp(event.getX(), event.getY());
invalidate();
break;
case MotionEvent.ACTION_MOVE:
touchMove(event.getX(), event.getY());
invalidate();
break;
case MotionEvent.ACTION_UP:
touchUp();
invalidate();
break;
}
return true;
}
}
Dosyayı İndir