确定通知面板是否可见

时间:2014-10-07 21:11:48

标签: android

我正在我的应用中实现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秒计时器... 非常感谢任何帮助!

1 个答案:

答案 0 :(得分: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(...)
   }
}