Java 如何在android中在画布上绘制多段线?

Java 如何在android中在画布上绘制多段线?,java,android,graphics,android-canvas,polyline,Java,Android,Graphics,Android Canvas,Polyline,我一直想在画布上画一条多段线。我的代码中没有错误,但未显示连接的线段序列。请查找下面的代码段 import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.view.View; public class MyView

我一直想在画布上画一条多段线。我的代码中没有错误,但未显示连接的线段序列。请查找下面的代码段

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.view.View;

public class MyView extends View {
    private Paint redPaint;

    public MyView(Context context) {
        super(context, null);
        redPaint=new Paint(Paint.ANTI_ALIAS_FLAG);
        redPaint.setStyle(Paint.Style.STROKE);
        redPaint.setColor(0xffff0000);
        redPaint.setStrokeWidth(5);

    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawRect(10,30,200,200,redPaint);
        canvas.drawCircle(300,300,250,redPaint);

        Path mylines=new Path();
        mylines.moveTo(0,0);
        mylines.lineTo(1,1);
        mylines.lineTo(2,2);
        mylines.lineTo(3,3);
        mylines.lineTo(4,4);
        Paint GreenPaint=new Paint();
        GreenPaint.setARGB(255,0,255,0);
        canvas.drawPath(mylines,GreenPaint);

    }
}

您的代码基本上是正确的。您没有像
redPaint
那样完全初始化
GreenPaint
,这是一个问题。第二个问题(虽然可能不是问题)是多段线形状太小,即使使用完全初始化的
绿色绘制
,也可能会错过它

这是自定义视图的更新版本,其中包含一个附加构造函数和一个初始化的
greenPaint
。我还更改了多段线的形状,并将其放大以便于查看-它只是代码中的一个斑点。此外,我将对象分配移出了
onDraw()

这是显示器。(我为视图的可见性添加了灰色背景,但不需要。)


感谢您抽出时间@Cheticamp。然而,模拟器应该显示三个对象;矩形、圆和多段线。但是为什么它只显示矩形和圆形呢?我如何让它显示所有三个对象?我真是太感谢你了@Cheticamp,所有三个对象现在都显示出来了。你真棒!非常感谢您抽出时间。@IkeIsrael如果您觉得答案有用,您可以接受答案并投票表决(但您可能没有足够的声誉来投票表决)。感谢提醒您不知道如何接受答案,现在就知道了。答案被接受。非常感谢。
    public class MyView extends View {
    Path mylines = new Path();
    private Paint redPaint;
    private Paint greenPaint;

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MyView(Context context) {
        super(context, null);
        init();
    }

    private void init() {
        redPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        redPaint.setStyle(Paint.Style.STROKE);
        redPaint.setColor(0xffff0000);
        redPaint.setStrokeWidth(5);

        greenPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        greenPaint.setStyle(Paint.Style.STROKE);
        greenPaint.setARGB(255, 0, 255, 0);
        greenPaint.setStrokeWidth(5);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawRect(10, 30, 200, 200, redPaint);
        canvas.drawCircle(300, 300, 250, redPaint);

        mylines.moveTo(0, 0);
        mylines.lineTo(200, 50);
        mylines.lineTo(300, 150);
        mylines.lineTo(400, 250);
        mylines.lineTo(500, 300);

        canvas.drawPath(mylines, greenPaint);

    }
}