0

我有测验应用程序。当有人单击正确答案时,按钮应将颜色更改为绿色,然后我想加载新问题(我在 ListArray 中有它)。这很重要:应用程序应该等待动画结束(此时所有按钮都被禁用),然后加载下一个问题。

谁能给我一个提示如何做到这一点?

4

2 回答 2

4

您可以在动画完成后使用 Handler 进行发布。如果你的动画是 3 秒,你会这样做。

Handler mHandler = new Handler();
Runnable codeToRun = new Runnable() {
    @Override
    public void run() {
        loadNewQuestion();
    };
mHandler.postDelayed(codeToRun, 3000); //Runs the runnable on the UI thread after 3 sec

或者你可以设置一个动画监听器(处理程序更好)

Animation myAnim = AnimationUtils.loadAnimation(context, R.anim.my_anim);
Runnable codeToRun = new Runnable() {
    @Override
    public void run() {
        loadNewQuestion();
    }
};
AnimationListener myAnimationListener = new AnimationListener() {
    @Override
    public void onAnimationEnd(Animation animation) {
        runOnUiThread(codeToRun);
    }
};
myAnim.setAnimationListener(myAnimationListener);
button.startAnimation(myAnim);
于 2012-06-09T23:36:20.210 回答
1

这比听起来更棘手。您需要在主 (GUI) 线程以外的线程上处理问题。尝试查看本教程以了解 Handler。

http://www.vogella.com/articles/AndroidPerformance/article.html#handler

于 2012-06-09T23:38:13.597 回答