我正在模拟帧动画;我所有的工作都剩下一个问题。
我有一个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/