I want to crop the image with multiple paths like the below image:
.
So far, what I have implemented saves all drawn paths into an ArrayList
, then I retrieve those cropped paths in another activity.
However, every path is adding the first drawn point.
Here's my code:
public boolean onTouch(View view, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
points.clear();
points2 = new ArrayList<Point>();
}
Point point = new Point();
point.x = (int) event.getX();
point.y = (int) event.getY();
zoomPos.x = event.getX();
zoomPos.y = event.getY();
if (flgPathDraw) {
zooming = true;
if (bfirstpoint) {
if (comparepoint(mfirstpoint, point)) {
points.add(mfirstpoint);
points2.add(mfirstpoint);
} else {
points.add(point);
points2.add(point);
}
} else {
points.add(point);
points2.add(point);
}
if (!(bfirstpoint)) {
mfirstpoint = point;
bfirstpoint = true;
}
}
invalidate();
if (event.getAction() == MotionEvent.ACTION_UP) {
mlastpoint = point;
if (flgPathDraw) {
if (points.size() > 12) {
if (!comparepoint(mfirstpoint, mlastpoint)) {
zooming = false;
points2.add(mfirstpoint);
addpaths.add(path);
invalidate();
}
}
}
if (points2!=null&&!(points2.isEmpty())) {
pointlists.add(points2);
}
}
return true;
}
//Croping code for drawn paths.
for (int j=0;j<CutPhotoView.pointlists.size();j++) {
for (int i = 0; i <CutPhotoView.pointlists.get(j).size(); i++) {
path.lineTo(CutPhotoView.pointlists.get(j).get(i).x,
CutPhotoView.pointlists.get(j).get(i).y);
}
canvas.drawPath(path, paint);
}
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…