public class Main2Activity extends AppCompatActivity {
int square5 = 0;
int flag = 1;
int userclick5 = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
//here i set some click listeners. one example is as follows:
ImageButton image_button1 = (ImageButton) findViewById(R.id.image_button1);
image_button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
goToIB();
}
});
}
//click listener call this function. This function set the color of image button as green.
//Then it calls the function goTofirst3cpu()
private int goToIB() {
ImageButton imageButton5 = (ImageButton) findViewById(R.id.image_button5);
if (imageButton5.isPressed() & square5 == 0) {
{
imageButton5.setImageResource(R.color.green_color);
flag = flag + 1;
square5 = square5 + 1;
userclick5 = userclick5 + 1;
goTofirst3cpu();
return square5;
}
}
return 0;
}
//This function shows red color in image button
private void goTofirst3cpu() {
ImageButton imageButton5 = (ImageButton) findViewById(R.id.image_button5);
if (square5 == 0) {
//HERE IS WHAT I NEED TO DO SOMETHING
//when i do something, there will be a gap of 5 seconds
//before changing imagebutton's color from green to red.
//????????? WHAT I WILL DO HERE. ??????
imageButton5.setImageResource(R.color.red_color);
square5 = square5 + 1;
}
}
}
我用Toast和所有的东西。还有系统时钟。但那些事情对我来说并不起作用。 在将图像按钮的颜色更改为红色之前,我需要休息5秒钟。 我是编程新手。所以用简单的语言解释。 在此先感谢.....
答案 0 :(得分:1)
解决方案:
try
{
Thread.sleep(//milliseconds);
}
catch(InterruptedException e)
{
//handles exception
}
Thread.sleep()会暂停你的程序一段时间。 建议您捕获异常并正确处理它,因为它可能会为您的程序带来更多问题......
关于中断异常的信息在这个重复的问题中:
When does Java's Thread.sleep throw InterruptedException?
另一个解决方案,如果Thread.sleep()是一个问题..
int delay = 1000; //milliseconds
ActionListener taskPerformer = new ActionListener() {
int x = 0;
public void actionPerformed(ActionEvent evt) {
if(x == 5)
{
//change color of button...
}
x++;
}
};
new Timer(delay, taskPerformer).start();
您可以在程序中实施Swing Timer。您将创建一个Timer对象,每1000毫秒触发一次操作。在计时器中有一个变量,每秒递增一次(基本上每次触发动作)并在该变量等于5时执行某些操作。您也可以将Timer设置为5000毫秒而不是1000作为参数... 经过一段时间后,点是做某事。
答案 1 :(得分:0)
你在主线程中完成所有工作,所以你不能只使用Thread.sleep(),因为app会挂起。尝试使用Handler.postDelayed()代替主线程或新线程,然后做所有的东西 - 改变颜色或其他东西。另一个(更复杂,更强大的)解决方案 - 使用rx库(Timer)