所以我有一些简单的代码,但它似乎不工作。有什么建议吗?
我只是想要一个图像显示后,按钮被按下,然后在2秒后变得不可见。
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
firstImage.setVisibility(ImageView.VISIBLE);
// delay of some sort
firstImage.setVisibility(ImageView.INVISIBLE);
}
}
图像永远不会显示,它总是保持不可见,我应该以另一种方式实现这个吗?我试过处理者…但它没有工作,除非我做错了。
永远不要让你的UI线程休眠!
这样做:
final Handler handler = new Handler();
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
firstImage.setVisibility(ImageView.VISIBLE);
handler.postDelayed(new Runnable(){
public void run(){
firstImage.setVisibility(ImageView.INVISIBLE);
}
}, DELAY);
}
}
将DELAY设置为2000 (ms)
那么,您需要在两行之间添加延迟。使用线程或计时器来完成此操作。
点击按钮启动一个线程。在run方法中,将ImageView的可见性更改为可见,然后将线程休眠n秒,然后将其更改为不可见。
要调用imageView的setvisibility方法,这里需要一个处理程序。
<>之前Handler Handler = new Handler();处理程序。post(new Runnable() {公共无效运行(){image.setVisibiliy(可见);thread . sleep (200);image.setVisibility(看不见的);}});我知道这个问题已经有答案了,但是我想我应该为那些喜欢我的人添加一个答案,偶然发现这个类似的结果,其中延迟是由一个过程而不是"睡眠"引起的
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
firstImage.setVisibility(ImageView.VISIBLE);
// Run the operation on a new thread
new Thread(new Runnable(){
public void run(){
myMethod();
returnVisibility();
}
}).start();
}
}
private void myMethod() {
// Perform the operation you wish to do before restoring visibility
}
private void returnVisibility() {
// Restore visibility to the object being run on the main UI thread.
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
firstImage.setVisibility(ImageView.INVISIBLE);
}
});
}