2017-10-14 67 views
-3

我有相對佈局作爲我的父佈局。我在其中添加了線性佈局(垂直),以便在有人獲勝時顯示一個框。我想延遲框(線性佈局)的可見性幾秒鐘。誰能告訴我,我怎麼可能做到這一點? 此處的TextView位於線性佈局內。如何在單擊按鈕後延遲線性佈局可見性?這是我的代碼:

if(gameState[winningPosition[0]] == 0) 
       { 

        winner = "Jesse Pinkman"; 

       } 

       TextView winnerMessage = (TextView) findViewById(R.id.winnerMessage); 

       winnerMessage.setText(winner + " has won!"); 

       LinearLayout layout = (LinearLayout) findViewById(R.id.playAgainLayout); 


       layout.setVisibility(View.VISIBLE); 

      } 

回答

0

試試這個。

int DELAY_TIME = 1000; 
new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     // doing something here 
     layout.setVisibility(View.VISIBLE); 
    } 
},DELAY_TIME); 
0

可以代替使用此代碼的layout.setVisibility(View.VISIBLE);

final Handler handler = new Handler(); 
      handler.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        layout.setVisibility(View.VISIBLE); 
       } 
      }, 3000); 

3000這裏是用毫秒3秒。您可以根據需要更改它。

+0

它的工作就像一個魅力!你能告訴我這是如何工作的嗎?處理程序做什麼? – Aakash

+0

Handler基本上將消息或可運行的消息添加到隊列中,並且只在我們提供的時間延遲完成後纔將其恢復執行。它調度消息或可運行消息隊列準備就緒或執行延遲或絕對時間。它有許多方法,如postDelayed(),post(),postAtTime()等。 –

0

你應該使用Handler

一個處理程序允許您發送和處理消息並Runnable對象與線程的MessageQueue關聯。每個Handler實例都與單個線程和該線程的消息隊列相關聯。當您創建一個新的處理程序時,它將綁定到正在創建它的線程的線程/消息隊列 - 此後,它將消息和可運行消息傳遞到該消息隊列,並在消息出來時執行它們隊列。

示例代碼

new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     // perform your action here 
     layout.setVisibility(View.VISIBLE); 
    } 
},1000);// delay times milliseconds