我尝试使用计时器在单个ImageView中显示一系列png图像(例如每1秒更换一次图片)。
应用程序一直崩溃,这是我的代码,请帮忙。 main.xml中有ImageView,由于某些原因我无法在此处发布完整的xml文件。无论如何,它只是一个标准的main.xml,在Linear Layout中有额外的ImageView。
public class AniImgTest extends Activity {
ImageView iv;
public int i=0;
Timer timer = new Timer();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.iv=(ImageView)findViewById(R.id.imageView1);
timer.scheduleAtFixedRate(new TimerTask(){
@Override
public void run() {
Log.v("","myDebug "+i);
if(i<2)
i++;
else
i=0;
switch(i){
case 0:iv.setImageResource(R.drawable.a1);
break;
case 1:iv.setImageResource(R.drawable.a2);
break;
case 2:iv.setImageResource(R.drawable.a3);
break;
}
}
}, 0, 5000);
}
}
答案 0 :(得分:0)
您的任务在与主线程不同的线程上运行,因此无法更改GUI并导致崩溃。使用handler在主线程上执行这些任务。
还有一件事(不相关,但......),而不是:
if(i<2)
i++;
else
i=0;
switch(i){
你可以写:
switch(++i % 3){
答案 1 :(得分:0)
使用此代码块来更改UI组件
AniImgTest.this.runOnUiThread(new Runnable() {
public void run() {
// change your image here.
}
});