Android - 路径不绘制

时间:2014-02-03 19:10:52

标签: android path

我试图简单地在Android中绘制一条路径,而我正在遇到路径不幸的情况,因为不知道原因。 当我尝试简单地绘制一条线时,它工作正常。当我尝试运行下面的代码时,没有任何东西被绘制,但程序仍在运行。

代码:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

public class GameView extends View {
    Paint p = new Paint();
    //int initX;
    //int initY;
    //int endX;
    //int endY;
    Path path = new Path();

    public GameView(Context context) {
        super(context);
        init();
    }

    public GameView(Context context, AttributeSet as) {
        super(context, as);
        init();
    }

    private void init() {
        /* one-time initialization stuff */
        setBackgroundResource(R.drawable.space);
    }


    public void onDraw(Canvas c) {
        /* called each time this View is drawn */

        p.setColor(Color.RED);
        p.setStrokeWidth(2);
        //c.drawLines(pts, p);
        c.drawPath(path, p);
        path.close();
    }

    public boolean onTouchEvent(MotionEvent e) {

        if (e.getAction() == MotionEvent.ACTION_DOWN) {
            path.moveTo(e.getX(), e.getY());
            //path.lineTo(e.getX(), e.getY());
            invalidate(); // force redraw
            return true;
        }

        else if (e.getAction() == MotionEvent.ACTION_MOVE){
            path.lineTo(e.getX(), e.getY());
            path.moveTo(e.getX(), e.getY());
            invalidate(); // force redraw
            return true;
        }

        else if (e.getAction() == MotionEvent.ACTION_UP){
            path.lineTo(e.getX(), e.getY());
            invalidate(); // force redraw
            return true;
        }
            return false;
    }
}

有人有什么想法吗? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您需要的是您的代码没有指定路径的开头和结尾,并且需要一些画布声明来准备它以更改您的onDraw方法,如:

 public void onDraw(Canvas c) {
    /* called each time this View is drawn */

    p.setStyle(Paint.Style.FILL);
    p.setColor(Color.TRANSPARENT);
    c.drawPaint(p);
    for (int i = 50; i < 100; i++) {
        path.moveTo(i, i-1);
        path.lineTo(i, i);  
 }
    p.setColor(Color.RED);
    p.setStrokeWidth(2);
    //c.drawLines(pts, p);
    path.close();
    p.setStrokeWidth(3);
    p.setPathEffect(null);
    p.setColor(Color.BLACK);
    p.setStyle(Paint.Style.STROKE);
    c.drawPath(path, p);
}

我从旧代码中添加一些样式,随意删除或更改它,在任何不明显的事情中反馈我