我已经创建了代码,当我点击假设A Image时,B Image应显示100毫秒然后关闭
我是通过Java Code
完成的public void changeRightDrum() {
System.out.println("RIGHT");
imageViewB.setVisibility(View.VISIBLE);
try {
Thread.sleep(100);
} catch (Exception e) {
e.printStackTrace();
}
imageViewB.setVisibility(View.GONE);
System.out.println("RIGHT DONE");
}
但它无效B图像未显示
任何人都可以帮助我实现这个目标
答案 0 :(得分:8)
您使用sleep()
阻止了UI线程,并且无法真正执行任何UI更新。
使用Handler
和postDelayed()
来安排Runnable
在延迟后运行,而不是睡觉。
答案 1 :(得分:2)
像这样使用postDelayed
。
public void changeRightDrum() {
System.out.println("RIGHT");
imageViewB.setVisibility(View.VISIBLE);
imageViewB.postDelayed(new Runnable() {
@Override
public void run() {
imageViewB.setVisibility(View.GONE);
System.out.println("RIGHT DONE");
}
}, 100);
}
答案 2 :(得分:1)
实施@laalto说的话:
public void changeRightDrum() {
System.out.println("RIGHT");
imageViewB.setVisibility(View.VISIBLE);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
imageViewB.setVisibility(View.GONE);
System.out.println("RIGHT DONE");
}
},200);
}
答案 3 :(得分:1)
我通过使用此
实现了目标new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute() {
imgPressedLeftTabla.setVisibility(View.VISIBLE);
super.onPreExecute();
}
@Override
protected void onPostExecute(Void result) {
imgPressedLeftTabla.setVisibility(View.GONE);
super.onPostExecute(result);
}
@Override
protected Void doInBackground(Void... params) {
try {
Thread.sleep(50);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute();