我正在模拟帧动画;我所有的工作都剩下一个问题。
我有一个for循环,在每次循环中,它都会在延迟后更改ImageView的Image。

for(int i = 1; i <13; i++){
            if (stop== false){
                String imgName = "b"+ Integer.toString(i);
                  id = getResources().getIdentifier(imgName, "drawable", getPackageName());
                Handler handlerTimer = new Handler();
                handlerTimer.postDelayed(new Runnable(){
                    public void run() {
                       view.setImageDrawable((getResources().getDrawable(id)));
                  }}, 300);

            }
        }


问题是run()不会在每次迭代时都刷新。它只能工作一次。

如何刷新或创建新的run()?

我愿意以任何其他方式来做到这一点。

任何意见,将不胜感激。

最佳答案

步骤#1:将Runnable定义为活动的数据成员(或此代码所在的位置)

步骤#2:转储Handler,因为您不需要它-postDelayed()也在View上实现

步骤#3:创建一个执行postDelayed()调用的辅助方法-在这里我将其称为foo()-并调用foo(),而您不调用postDelayed()

步骤#4:在run()Runnable中,再次调用foo()以将Runnable重新安排为另一个延迟时间

关于java - 在循环中创建唯一的postDelayed Runnable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6589258/

10-10 01:52