DraggingView.java
Dosyayı İndir
package com.godoro.androidgraphics;
import android.content.*;
import android.graphics.*;
import android.view.*;
import java.util.*;
public class DraggingView extends View implements View.OnTouchListener {
private Paint paint = new Paint();
private List<Point> pointList = new ArrayList<Point>();
private Path path=new Path();
private boolean curved=true;
private boolean renewing=false;
public DraggingView(Context context) {
super(context);
setOnTouchListener(this);
}
@Override
protected void onDraw(Canvas canvas) {
if (pointList.size() == 0) {
return;
}
if(curved){
drawCurves(canvas);
}else{
drawLines(canvas);
}
}
private void drawLines(Canvas canvas){
Point from = pointList.get(0);
for (int i = 1; i < pointList.size(); i++) {
Point to = pointList.get(i);
canvas.drawLine(from.x, from.y, to.x, to.y, paint);
from = to;
}
}
private void drawCurves(Canvas canvas){
Point from = pointList.get(0);
path.moveTo(from.x,from.y);
for (int i = 1; i < pointList.size(); i++) {
Point to = pointList.get(i);
path.quadTo(from.x, from.y, to.x, to.y);
from = to;
}
canvas.drawPath(path, paint);
}
@Override
public boolean onTouch(View view, MotionEvent event) {
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
pointList.clear();
if(renewing){
path=new Path();
}
pointList.add(new Point((int) event.getX(), (int) event.getY()));
} else if (event.getActionMasked() == MotionEvent.ACTION_MOVE) {
pointList.add(new Point((int) event.getX(), (int) event.getY()));
} else if (event.getActionMasked() == MotionEvent.ACTION_UP) {
pointList.add(new Point((int) event.getX(), (int) event.getY()));
}
invalidate();
return true;
}
}
Dosyayı İndir