1

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;
    }

    }
    }

我用吐司和所有的东西。还有系统时钟。但这些东西对我不起作用。在将图像按钮的颜色更改为红色之前,我需要休息 5 秒。我是编程新手。所以用简单的语言解释。提前致谢.....

4

2 回答 2

1

解决方案:

try
{
  Thread.sleep(//milliseconds);
}
catch(InterruptedException e)
{
  //handles exception
}

Thread.sleep() 会暂停你的程序一段时间。建议您捕获异常并正确处理它,因为它会给您的程序带来更多问题...

有关中断异常的信息在此重复问题中:

Java的Thread.sleep什么时候抛出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 作为参数...重点是,经过一定的时间/做某事。

于 2016-06-23T18:25:49.747 回答
0

您在主线程中完成所有工作,因此您不能只使用 Thread.sleep(),因为应用程序会挂起。尝试在主线程或新线程上使用 Handler.postDelayed () ,然后做所有的事情 - 改变颜色或其他东西。另一个(更复杂更强大的)解决方案 - 使用 rx 库(定时器)

于 2016-06-23T18:30:36.383 回答