我试图简单地在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;
}
}
有人有什么想法吗? 提前谢谢。
答案 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);
}
我从旧代码中添加一些样式,随意删除或更改它,在任何不明显的事情中反馈我