If(语句)延迟

If(statement) delay

这是一个好奇的问题,但有没有办法延迟 if 语句中的最后一行。

例如:

if(m_Toolbar.getVisibility() == View.VISBILE) {
               ...........
    m_Toolbar.setVisibility(View.GONE);
}

你会如何延迟最后一行,如 (ie.GONE)?

您可以使用下面的 TimeUnit.SECONDS.sleep(1); 等待一秒钟。

不要使用Thread.Sleep()会冻结UI使用Handler

Handler h = new Handler();
h.postDelayed(new Runnable() {
            @Override
            public void run() {

            }
        },delayMilliseconds);

Thread.sleep会导致UI冻结,我建议用Handler代替

if(m_Toolbar.getVisibility() == View.VISBILE) {
    ...........
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            m_Toolbar.setVisibility(View.GONE);
        }
    }, 3000);//3 seconds
}

最好的是:

 if(m_Toolbar.getVisibility() == View.VISBILE) {
    ...........
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            m_Toolbar.setVisibility(View.GONE);
        }
    }, 5000);//5 seconds
}

但是如果你需要乘法动作,你可以使用这个:

      if(m_Toolbar.getVisibility() == View.VISBILE) {

                    int Delay = 5;  //set Your request delay

                    new Thread(new Runnable(){
                        public void run() {
                              // TODO Auto-generated method stub

                             do{
                                  try {

                                      runOnUiThread(new Runnable() {
                                          public void run() {

                                              Delay --;

                                              if( Delay == 0){

                                                  m_Toolbar.setVisibility(View.GONE);
                                              }else if( Delay == 1){
                                                    //another action

                                               }

                                          }
                                      });   

                                      Thread.sleep(1000);


                                  } catch (InterruptedException e) {
                                      //TODO Auto-generated catch block
                                      e.printStackTrace();
                                  } 

                              }while(Delay > 0);

                           }
                      }).start();



    }