我有一个视图,想要在每次新的line对象存储到我的lines数组中时更新它。这发生在drawLine()函数中。因此,drawYourselfe()函数应该以某种方式强制onDraw(),并等待它完成。这是我的代码的一部分。有人能告诉我drawYourselfe()应该是什么样子吗?
public class MyView extends View{
private ArrayList<Line> lines;
private Paint paint; //created in constructor
protected void drawLine(float[] f)
{
if(f.length != 5)
{
} else {
lines.add(new Line(f));
Log.d("SuM","added Line");
if(!bufferedDrawing) // in this example bufferedDrawing=false because i want to update the View on every new Line;
{
drawYourselfe();
}
}
}
protected void onDraw(Canvas canvas) {
Log.d("SuM","onDraw");
for(Line l : lines)
{
l.analysis(); //Logs fromX,toX,fromY,toY and color to console
paint.setColor(l.getColor());
canvas.drawLine(l.getFromX(),l.getFromY(),l.getToX(),l.getToY(), paint);
}
}
public void drawYourselfe()
{
//When this is called, onDraw should be called and the Thread should wait till its done;
}
}
编辑说明: 我最好提一下我想做什么以及为什么简单地无效()不起作用:在我的MainActivity中,我调用
myView.drawLine(line1);
myView.drawLine(line2);
myView.drawLine(line3);
//and so on...
我希望能够看到这些线条是一个接一个地绘制出来的。在drawYourselfe()中调用invalidate()时,我只看到所有线条都被绘制出来了,而不是一个接一个地绘制出来。我知道这三条线被绘制得非常快,以至于我无法逐个观察它们的绘制过程,但在我的应用程序中,我需要处理成千上万条线。