使用canvas Android绘制时遇到的问题
我创建了一个类,用于绘制addTimeline()方法传递的时间线。 这个类扩展了View类,我已经重写了onDraw()方法。在addTimeline()中有一个“invalidate()”调用,所以当插入时间线时,类将绘制它。我在另一个类中添加了一些时间线,该类通过“for”语句和调用addTimeline()类来扩展活动 好的,只有最后创建的时间线被绘制,之前的时间线没有显示,只有空白 有人能理解为什么我的应用程序有这种行为吗 谢谢 *我添加了代码* 在这里,我插入时间线使用canvas Android绘制时遇到的问题,android,canvas,drawing,Android,Canvas,Drawing,我创建了一个类,用于绘制addTimeline()方法传递的时间线。 这个类扩展了View类,我已经重写了onDraw()方法。在addTimeline()中有一个“invalidate()”调用,所以当插入时间线时,类将绘制它。我在另一个类中添加了一些时间线,该类通过“for”语句和调用addTimeline()类来扩展活动 好的,只有最后创建的时间线被绘制,之前的时间线没有显示,只有空白 有人能理解为什么我的应用程序有这种行为吗 谢谢 *我添加了代码* 在这里,我插入时间线 public v
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()的
在一个活动中,我编写了这段代码来插入时间线
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,
}
for(int i=1,atLeastLength=100,x=10,y=30;i当调用onDraw()
时,每次都会得到一个完全擦除的画布。因此,要执行您想要的操作,您需要使用addTimeline
方法将时间线的记录添加到某种数组中。然后在onDraw()中
您可以在阵列中循环并绘制每个时间线
如果您需要支持大量的时间线,您最终将看到onDraw()对性能的影响方法必须这么做。在这一点上,你可能会考虑定期将画布写入位图并清除时间线数组,然后在绘制额外的时间线之前绘制位图。你能提供你的OnDead代码和你调用无效的地方吗?如果你只是发布了一个模糊的描述,我们就无能为力了。关于一点代码,甚至是一个应用程序的屏幕截图?谢谢你的回复,我尝试按照你的建议!
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,
}