Android-使用ImageView显示一系列图像
我尝试使用计时器在单个 ImageView 中显示一系列 png 图像(例如,每 1 秒更改一次图片)。
该应用程序不断崩溃,这是我的代码,请帮忙。 main.xml 中有 ImageView ,由于某种原因我无法在这里发布完整的 xml 文件。无论如何,它只是一个标准的 main.xml,在线性布局中带有额外的 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);
}
}
I try to display series of png images in a single ImageView using Timer (e.g. change pic every 1 sec.).
The app keep crashing, Here is my code, please help.
There is ImageView in the main.xml , for some reason i cant post the full xml file here. Anyway it just a standard main.xml with extra ImageView within the Linear Layout.
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);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的任务在与主线程不同的线程上运行,因此它无法更改 GUI 并导致崩溃。使用 handler 在主线程上执行这些任务。
还有一件事(不相关,但是......),而不是:
你可以写:
Your task is running on a different thread than main thread, so it can't change the GUI and causes crashes. Use handler to perform those tasks on the main thread.
One more thing (which is not related, but...), instead of:
you can write:
使用此代码块来更改 UI 组件
use this block of code to change UI components