[英]Trouble with drawing with canvas Android
我创建了一个类,该类绘制了一个通过addTimeline()方法传递的时间轴。 该类扩展了View类,并且我已经重写了onDraw()方法。 在addTimeline()中,有一个“ invalidate()”调用,因此当插入时间线时,类将绘制它。 我通过“ for”语句并调用addTimeline()类在另一个扩展Activity的类中添加了一些时间线。
好吧,只有绘制的最后一个时间线被绘制,之前的时间线未显示,只有空白。
有谁能理解我的应用程序为何具有这种行为?
谢谢。
*我已添加代码*
在这里,我插入时间表
public void addTimeline(int x, int y, int totaleDurata, int distanzaIntervalli, int spessore, int color)
{
this.totaleDurata = totaleDurata;
this.spessoreTimeline = spessore;
this.color = color;
this.coordinataX = x;
this.coordinataY = y + 10;
this.distanzaIntervalli = distanzaIntervalli;
setPaint();
invalidate();
}
方法onDraw()和setPaint()
private void setPaint()
{
p.setStyle(Paint.Style.FILL_AND_STROKE);
p.setAntiAlias(true);
p.setColor(color);
p.setStrokeWidth(1);
}
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
canvas.drawColor(Color.CYAN);
disegnaGrain(canvas,p);
disegnaRettangolo(canvas,p);
disegnaPunta(canvas,p);
}
在一项活动中,我编写了这段代码来插入时间表
for(int i=1, atLeastLength = 100, x = 10, y = 30; i<=5; i++, y += 100)
{
setContentView(disegnoTimeline);
Random r = new Random();
int randomNum = r.nextInt((550 - 100) + 1) + 100;
disegnoTimeline.postInvalidate();
disegnoTimeline.addTimeline(x, y, atLeastLength + randomNum,
}
调用onDraw()
,您会得到一个完全擦除的画布,以便每次使用。 因此,要执行所需的addTimeline
,您需要使用addTimeline
方法将时间轴的记录添加到某种数组中。 然后在onDraw()
您可以遍历数组并绘制每个时间轴。
如果您需要支持大量的时间线,那么最终您将开始看到onDraw()
方法的性能onDraw()
需要做很多事情。 此时,您可以考虑定期将画布写入位图并清除时间线数组,并在绘制其他时间线之前先绘制位图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.