我是新的java绘图,我想实现一个导航系统,让用户可以在Map上导航。java函数“ondraw”是实现的,因此它可以显示用户在Map上的位置,也可以显示他的移动。以下是我的代码:
class CanvasView extends View {
private Paint paint = new Paint();
private Path path = new Path();
private float lineX = Position.x_axis;
private float lineY = Position.y_axis;
private float lastX = Position.x_axis;
private float lastY = Position.y_axis;
public CanvasView(Context context) {
super(context);
paint.setAntiAlias(true);
paint.setStrokeWidth(10f);
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
drawRotateImage(canvas);
canvas.drawPoint(Position.x_axis, Position.y_axis, paint);
Path path = new Path();
path.moveTo(lastX, lastY);
path.lineTo(lineX,lineY);
canvas.drawPath(path, paint);
}
private void stepDetector (float step) {
stepCount += (int) step;
distance = stepCount * 30;
lineX = (float) (lineX + 30);
lineY = (float) (lineY + 30);
invalidate();
lastX = lineX;
lastY = lineY;
}
}
每次检测到一个步骤时都会调用stepdetector,它应该重新绘制画布以显示移动。注意到前面的运动线需要是可见的,也就是说它应该是一条连续的线。
我在获取导航线路路径时遇到问题。如果我能在这方面得到一些帮助,我将不胜感激。
先谢谢你。
2条答案
按热度按时间0s7z1bwu1#
试试这个,列一个列表,每一步都加点,然后在ondraw中从列表中画出所有的点
}
t5zmwmid2#
这个
onDraw
每次都绘制内容的新副本,并且不保留旧信息。对于要绘制的内容,可以保留一个类型列表Position
并在stepDetector
被称为。然后,在里面
onDraw
,遍历列表并绘制连接列表中所有点的线。