如何显示一个图像五秒钟然后显示另一个(Android Studio)
问题描述:
我有我的Java代码,我有这种布局,其中有一个ImageView
和一个Button
,在我的Drawable
文件夹中我必须有图像,想要的是:点击Button advance时,ImageView
将显示图像(位于drawable
文件夹中的image1.png),并在5秒后显示其他图像(image2.png)。问题是我不知道该如何停下来。如何显示一个图像五秒钟然后显示另一个(Android Studio)
advance.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
image.setImageResource(R.drawable.image1);
//TO WAIT 5 SCONDS...
image.setImageResource(R.drawable.image2);
}
});
答
使用默认CountDownTimer http://developer.android.com/reference/android/os/CountDownTimer.html
- 设置第一个图像
- 启动CountDownTimer
设置新的图像onFinish()
new CountDownTimer(5000, 1000) { // 5000 = 5 sec
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
image.setImageResource(R.drawable.image2);
}
}.start();
编辑:
额外的信息:在文档中,你可以找到
CountDownTimer(长millisInFuture,长countDownInterval)
所以第一个参数是你想拥有的总时间(以毫秒,5秒= 5000 milis),第二个参数是间隔。这里是1000 = 1秒。这意味着计时器将每秒钟打勾。所以onTick(长)将被称为每秒(定时器运行时)
答
advance.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
image.setImageResource(R.drawable.image1);
Timer t = new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
image.setImageResource(R.drawable.image2);
}
}, 5000);
}
});
答
你也可以使用一个处理程序:http://developer.android.com/reference/android/os/Handler.html#postDelayed(java.lang.Runnable,长)
advance.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
image.setImageResource(R.drawable.image1);
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
image.setImageResource(R.drawable.image2);
}
}, 5000);
}
});
它的工作,谢谢...我只是想知道'1000'的作用。 – 2014-09-01 14:26:26
请参阅编辑。解释你需要了解的内容。 – 2014-09-01 14:35:48
如何使它适用于2个以上的图像?我也不想对资源进行硬编码,因为变量在新对象内不可访问。 – aks 2016-03-29 12:06:42