我正在我的应用中实现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 :(得分: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(...)
}
}