Pru*_*hvi 1 android show-hide android-statusbar
我一直在使用这些标志SYSTEM_UI_FLAG_FULLSCREEN并SYSTEM_UI_FLAG_HIDE_NAVIGATION隐藏和显示状态栏和导航栏。他们工作正常。我在活动开始时将它们隐藏起来,我想在触摸事件中再次显示它们。Android会在第一次触摸事件时自动显示它们(此第一次触摸事件不会传递给我的应用程序)。我想sendMessageDelayed()在一段时间后用来隐藏两个栏。我如何使用此首次触摸事件?
我通过使用得到了View.OnSystemUiVisibilityChangeListener。我只Handler.sendMessageDelayed在状态和导航栏都可见的情况下使用了if条件。为了清楚起见,请参见以下实现。
来源:响应UI可见性更改
View decorView = getActivity().getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {@Override
public void onSystemUiVisibilityChange(int visibility) {
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
// TODO: The system bars are visible. Make any desired
Message msg = mHandler.obtainMessage(HIDE_STATUSBAR); //Implement your hide functionality accordingly
mHandler.sendMessageDelayed(msg, 3000);
} else {
// TODO: The system bars are NOT visible. Make any desired
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
这种方法的缺点是您的应用无法使用首次触摸事件。我认为在这种情况下,您必须使用其他方法,例如WindowManager.LayoutParams或沉浸式全屏模式。
| 归档时间: |
|
| 查看次数: |
4583 次 |
| 最近记录: |