Imageview不会更新。我曾尝试使用`invalidate();`但这不起作用

时间:2014-02-17 19:50:49

标签: android imageview

我试图在短时间内将imageview更改3次。 我想设置图像,让sheldon说“Bazinga”,然后在音频完成后直接更改imageview。然后我想第二次这样做。 请注意,在调用此函数之前已经设置了第一个图像:

sound = MediaPlayer.create(this, R.raw.bazinga);
sound.start();
page.setImageResource(R.drawable.counttotwofirst);
while(sound.isPlaying()){}

sound.start();
page.setImageResource(R.drawable.counttotwosecond);
while(sound.isPlaying()){}
sound.release();

page.setClickable(true);

我尝试使用invalidate();,但这不起作用。

是否有强制更新或至少等到imageview更新? 如果是图像视图,更新之间有多长时间? 我应该使用其他一些观点吗?

1 个答案:

答案 0 :(得分:0)

你需要重新考虑设计。我猜您正在应用程序的主(UI)线程上运行所有代码。问题在于,虽然您正在更改图像资源,但是您正在导致UI线程阻塞(坐在while()循环中),因此在您的整个函数返回之后才会执行UI更新。您可能需要更多部分来实现您想要的声音/动画效果。在我的脑海中,可能会创建一个后台线程来执行声音加载/播放,这样就不会在UI线程上完成。此外,不要坐在while()循环中直到声音结束,最好让回调通知你播放已经完成(看一下MediaPlayer :: setOnCompletionListener())。