【发布时间】:2015-11-08 17:37:03
【问题描述】:
我一开始活动,手机就会挂起然后崩溃。 Logcat 没有显示崩溃的原因。
我有一个画布,圆圈一个接一个地从屏幕顶部出现,并以恒定的速率向下移动。这是我的 onDraw 代码:
protected void onDraw(Canvas canvas)
{
int dy = 1;
paint.setColor(Color.WHITE);
paint.setStyle(Paint.Style.STROKE);
for (int i=0, j=0; i<= dy/55; i=i++, j=j+55){
canvas.drawCircle(canvas.getWidth()/2, dy+j, 25, paint); // there is a horizontal distance of 5 between 2 circles
}
dy +=2;
invalidate();
}
我认为处理太多了。我需要在不同的线程中进行吗?
【问题讨论】:
-
您的 onDraw 方法是否在自定义视图中?如果是,请尝试删除 invalidate();
-
您的
onDraw()方法实际上并没有做任何事情,除了立即调用自己。paint调用可以/应该移到此方法之外。每次都设置dy = 1,所以dy +=2行什么也不做。而且,在for循环中,dy/55的计算结果为 0,因此循环永远不会运行。 -
是的。我尝试删除无效()。还是一样的。但如果 invalidate() 不存在,我的画布上将不会有任何动作。
-
另外,您可以确保
paint不为空。 -
哦,int dy = 1;不在 onDraw 中。它在全局主类中初始化。每次 onDraw 使 dy 无效时增加 2。
标签: android multithreading canvas