我动态创建了四个ImageView,当我点击一个按钮后我想在一秒钟后更改每个图像,但它们都会在四秒后改变。谁能给我一个关于这个问题的建议?
public void Run_Click(View view) {
int j=10;
try {
while(true) {
if(j<14) {
im=(ImageView)findViewById(j);
im.setImageResource(R.drawable.open);
Thread.sleep(1000);
j++;
} else {
j=10;
for(int i=10;i<14;i++) {
im=(ImageView)findViewById(i);
im.setImageResource(R.drawable.close);
}
Thread.sleep(2000);
}
}
答案 0 :(得分:1)
你正在UI线程中睡觉,这只是一种非常非常非常非常糟糕的方法。
请查看here:
public void addFrame(Drawable frame,int duration)
在API级别1中添加向动画添加框架
参数frame要添加持续时间的帧有多长(以毫秒为单位) 框架应该出现
并使用addFrame方法。
您只需指定一个Drawable和一个持续时间。
答案 1 :(得分:0)
你不应该使用thread.sleep()这是一个糟糕的设计方法。在ui线程上调用thread.sleep()是糟糕的设计。即使你使用线程做一些计算也不要使用thread.sleep()。
如果实现Thread或HandlerThread,请确保在等待工作线程完成时不阻塞UI线程 - 不要调用Thread.wait()或Thread.sleep()。在等待工作线程完成时,您的主线程应该为其他线程提供一个Handler,以便在完成时回发。
http://developer.android.com/training/articles/perf-anr.html
您可以尝试链接中提到的几个选项,例如handler,animation drawable和timer task