[英]i have to block status bar and home navigation bar. i used below code to block it
private void hideSystemUI() {
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE;
decorView.setSystemUiVisibility(uiOptions);
}
並且:
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
super.onWindowFocusChanged(hasFocus);
View decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener(
newView.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int i) {
if (i == View.VISIBLE){
hideSystemUI();
}
else {
hideSystemUI();
}
}
});
還用onForm()和onResume()(包括decorView.setOnSystemUiVisibilityChangeListener())編寫了hidesystemUI()代碼。 所以我必須阻止它。 一旦在頂部滑動,它就會來回移動(像眨眼一樣)。 但是我必須阻止它。 一旦我們在頂部滑動,它就不會出現。 幫助我。
如果您不希望它閃爍,則可能會延遲隱藏。 例如,您可以通過Handler.postDelayed()
將其延遲2秒。
private void hideSystemUI() {
final int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
getWindow().getDecorView().setSystemUiVisibility(uiOptions);
}
}, 2000); //2 seconds delay
}
如果您總是在主線程上調用此函數,則只需調用new Handler()
即可在主線程上返回一個Handler。 否則,您將需要調用new Handler(Looper.getMainLooper())
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.