我有一个类 ShapesActivity.java 并在其布局中有一个按钮。我有另一个扩展视图的文件 ShapesView.java。我在这个类中有 AsyncTask 来移动创建的圆圈。现在,当我单击 ShapesActicity.java 类中的停止按钮时,我不想创建新的线程,因此圆圈应该停止在它所在的位置。我无法在 ShapesView 中实现按钮单击的事件处理程序,因此无法调用 cancel(true) 来阻止创建新线程。有人可以帮忙吗
问问题
59 次
2 回答
0
您的 AsyncThread 是否负责创建视图或动画视图?你说按 STOP 应该阻止进一步的 CREATION,这与动画没有任何关系。
如果您的意思是说您的线程正在为视图设置动画,并且 STOP 应该停止动画,那么您可以简单地向 AsyncTask 实现添加一个方法,该方法设置标志,告诉动画循环停止动画。然后你的 STOP 按钮只需要调用mAnimThread.stopAnimating()
. 就像是:
class MyAnimThread extends AsyncTask<Void, Void, Void>
{
boolean mRunning = true;
public void stopAnimating()
{
mRunning = false;
}
@Override
protected Void doInBackground(Void... params)
{
while(mRunning)
{
//animate
}
return null;
}
}
添加一些您自己的源代码将有助于理解问题。
于 2012-06-22T20:23:25.723 回答
0
你想简单地为一个圆圈制作动画吗?如果是这样,你可能把事情复杂化了。你真的不需要 AsyncTask 来完成类似的事情。只需覆盖自定义视图的 draw() 方法并绘制到提供的 Canvas 对象。
于 2012-06-22T19:43:12.403 回答