1
 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();
            }
        }
    });

在 onCreate() 和 onResume() 中也编写了 hidesystemUI() 代码,包括使用 decorView.setOnSystemUiVisibilityChangeListener()。所以我必须阻止它。一旦我在顶部滑动,它就会来来去去(就像眨眼一样)。但我必须阻止它。一旦我们在顶部滑动,它就不应该出现。帮我解决这个问题。

4

1 回答 1

0

如果您不想让它闪烁,您可能会延迟隐藏。例如,您可以延迟 2 秒Handler.postDelayed()

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()).

于 2017-12-19T08:01:05.823 回答