如何在android java中使用Canvas onDraw()绘制导航路径
我是java绘图新手,我想实现一个导航系统,这样用户可以在地图上导航。java函数“onDraw”是实现的,因此它可以显示用户在地图上的位置,也可以显示他的移动。以下是我的代码:如何在android java中使用Canvas onDraw()绘制导航路径,java,android,Java,Android,我是java绘图新手,我想实现一个导航系统,这样用户可以在地图上导航。java函数“onDraw”是实现的,因此它可以显示用户在地图上的位置,也可以显示他的移动。以下是我的代码: class CanvasView extends View { private Paint paint = new Paint(); private Path path = new Path(); private float lineX = Position.x_axis
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,它应该重新绘制画布以显示移动。注意,前面的移动线需要是可见的,也就是说,它应该是一条连续的线
我在获取导航线路路径时遇到问题。如果我能得到一些帮助,我将不胜感激
提前感谢。onDraw每次都会绘制内容的新副本,并且不会保留旧信息。对于您试图绘制的内容,您可以保留一个类型为
Position
的列表,并在调用stepDetector
时将新位置添加到列表中
然后,在onDraw中,迭代列表并绘制连接列表中所有点的线。尝试此操作,制作列表并为每个步骤添加点,然后在onDraw中从列表中绘制所有点
class CanvasView extends View {
List<Point> points;
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);
points=new ArrayList<>();
}
@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);
// now here draw all points from list
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;
// add every point to the list after step
}
class Point{
float x,y;
Hello am项目``drawRotateImage(画布);画布绘制点(Position.x_轴、Position.y_轴、绘制);canvas.save();画布。旋转(方向梯度、lastX、lastY);canvas.restore();对于(行l:listLine){canvas.drawLine(l.StartX,l.StartY,l.EndX,l.EndY,paint);}``我还需要捕获用户的旋转。我正在使用canvas.rotate和orientationgree作为参数,但我看不到正在旋转的线。有什么建议吗。
}