0

我有一个类 ShapesActivity.java 并在其布局中有一个按钮。我有另一个扩展视图的文件 ShapesView.java。我在这个类中有 AsyncTask 来移动创建的圆圈。现在,当我单击 ShapesActicity.java 类中的停止按钮时,我不想创建新的线程,因此圆圈应该停止在它所在的位置。我无法在 ShapesView 中实现按钮单击的事件处理程序,因此无法调用 cancel(true) 来阻止创建新线程。有人可以帮忙吗

4

2 回答 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 回答