2014-10-07 84 views
0

我在我的應用中實現了YouTube風格狀態欄行爲。 狀態欄通常隱藏,當用戶按下一個按鈕,狀態欄出現,然後2秒後消失:確定通知面板是否可見

public void displayStatusBarTimed(){ 

    // Show status bar 
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 

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

      getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     } 
    }, 2000); 

} 

我的問題,出現在當該通知面板處於展開狀態(下拉麪板從狀態欄開始),它在2秒鐘後與狀態欄一起被清除。 我該如何預防? 我做了一些測試,發現面板可見時不會調用onPause。 我還沒有找到一種方法來檢查面板是否可見。 我想在面板關閉後啓動2秒定時器... 任何幫助,非常感謝!

回答

0

正如samples for immersive mode所示,您應該重寫onWindowFocusChanged(boolean hasFocus)

private final Handler mDecorHandler = new Handler(); 

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    if (!hasFocus) { 
     // Remove any pending messages/runnables 
     mDecorHandler.removeCallbacksAndMessages(null); 
    } else { 
     mDecorHandler.post(...) 
    } 
}