Android画布:线条和椭圆缩放,但路径不';T

Android画布:线条和椭圆缩放,但路径不';T,android,android-canvas,Android,Android Canvas,我在应用程序中使用了一个方形画布,我的目标是绘制0.0/0.0(左上角)和1.0/1.0(右下角)之间的所有内容,以便以后根据屏幕大小进行放大 这适用于某些基本绘图方法,但不适用于路径。我的onDraw方法: @Override protected void onDraw(Canvas canvas) { canvas.scale(getWidth(), getWidth()); canvas.drawOval(outerRect, linePaint); canvas.

我在应用程序中使用了一个方形画布,我的目标是绘制0.0/0.0(左上角)和1.0/1.0(右下角)之间的所有内容,以便以后根据屏幕大小进行放大

这适用于某些基本绘图方法,但不适用于路径。我的onDraw方法:

@Override
protected void onDraw(Canvas canvas) {
    canvas.scale(getWidth(), getWidth());
    canvas.drawOval(outerRect, linePaint);
    canvas.drawLine(0.5f, 0.05f, 0.5f, 0.95f, linePaint);
    canvas.drawPath(trianglePath, linePaint);
}
outerRect和TriangalPath的定义:

outerRect = new RectF(0.05f, 0.05f, 0.95f, 0.95f);

trianglePath = new Path();
trianglePath.moveTo(0.05f, 0.05f); 
trianglePath.lineTo(0.95f, 0.05f);
trianglePath.lineTo(0.5f, 0.95f);
trianglePath.close();
如您所见,结果中没有三角形:

为什么呢

编辑:整个视图

public class PlaygroundView extends View {

    private Paint linePaint;
    private RectF outerRect;
    private Path trianglePath;

    private final int preferredSize = 300;

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

    private void init() {

        outerRect = new RectF(0.05f, 0.05f, 0.95f, 0.95f);

        trianglePath = new Path();
        trianglePath.reset();
        trianglePath.moveTo(0.05f, 0.05f); 
        trianglePath.lineTo(0.95f, 0.05f);
        trianglePath.lineTo(0.5f, 0.95f);
        trianglePath.close();

        linePaint = new Paint();
        linePaint.setColor(Color.WHITE);
        linePaint.setStyle(Paint.Style.STROKE);
        linePaint.setStrokeWidth(0.01f);

    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int widthMode = MeasureSpec.getMode(widthMeasureSpec);
        int widthSize = MeasureSpec.getSize(widthMeasureSpec);

        int heightMode = MeasureSpec.getMode(heightMeasureSpec);
        int heightSize = MeasureSpec.getSize(heightMeasureSpec);

        int chosenWidth = chooseDimension(widthMode, widthSize);
        int chosenHeight = chooseDimension(heightMode, heightSize);

        int chosenDimension = Math.min(chosenWidth, chosenHeight);

        setMeasuredDimension(chosenDimension, chosenDimension);
    }

    private int chooseDimension(int mode, int size) {
        if (mode == MeasureSpec.AT_MOST || mode == MeasureSpec.EXACTLY) {
            return size;
        } else { // (mode == MeasureSpec.UNSPECIFIED)
            return preferredSize;
        }
    }


    @Override
    protected void onDraw(Canvas canvas) {
        canvas.scale(getWidth(), getWidth());
        canvas.drawOval(outerRect, linePaint);
        canvas.drawLine(0.5f, 0.05f, 0.5f, 0.95f, linePaint);
        canvas.drawPath(trianglePath, linePaint);
    }
}
编辑#2:

嗯,这很奇怪。新创建的仿真器实例显示圆和线,但不显示三角形,而IDE预览显示三角形,但不显示圆和线。两者都基于我多次重建的相同代码


它应该可以工作,请确保您的路径在中不是空的onDraw@pskink也许你可以看看编辑,我发布了整个classi运行它,视图顶部有一个三角形。。。但是质量很差…@pskink正如你在上面看到的,事情变得很奇怪。我今天放弃了,但谢谢你的努力。最可能的问题是