我正在尝试绘制图像,稍后将其与图纸一起保存。我的xml仅具有ImageView,并且尝试覆盖onDraw。它仅使de Canvas可以工作,但没有图像。
public class Body1 extends View {
public LayoutParams params;
private Path path = new Path();
private Paint brush = new Paint();
public Body1(Context context) {
super(context);
brush.setAntiAlias(true);
brush.setColor(Color.MAGENTA);
brush.setStyle(Paint.Style.STROKE);
brush.setStrokeJoin(Paint.Join.ROUND);
brush.setStrokeWidth(8f);
params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float pointX = event.getX();
float pointY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(pointX, pointY);
return true;
case MotionEvent.ACTION_MOVE:
path.lineTo(pointX, pointY);
break;
default:
return false;
}
postInvalidate();
return false;
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawPath(path, brush);
}
}
答案 0 :(得分:0)
好,您走对了路。 您缺少的是无效调用,它将导致操作系统调用视图的OnDraw。
每当您要更新视图时,调用无效。但是请注意,您的类只有一个路径对象,因此只会绘制最后一段。
如果我没记错的话,您应该持有ArrayList
个对象中的一个Path
。
在onDraw
中,您应该遍历它们,并将它们一个接一个地绘制。