延迟的Handler方法后状态栏不会消失

时间:2019-06-12 13:54:55

标签: android handler fullscreen statusbar

我正在制作视频播放器应用程序。当用户打开VideoPlayer活动时:我想在200毫秒后隐藏状态栏。我正在使用Handler。也可以触摸表面视图以隐藏/显示状态栏。

  

问题:第一次打开活动时,状态栏在200毫秒后消失,但是当用户与曲面视图交互以显示/隐藏状态栏时,然后在用户显示状态栏后它不会再次隐藏。

VideoPlayer.class

public class VideoPlayer extends AppCompatActivity implements SurfaceHolder.Callback{

  private SurfaceView surfaceView;
  private SurfaceHolder surfaceHolder;
  private boolean ISFULLSCREEN;

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
surfaceView =findViewById(R.id.surface);
surfaceHolder=surfaceView.getHolder();
        surfaceHolder.addCallback(VideoPlayer.this);


surfaceView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(ISFULLSCREEN) // if fullscreen true
                {
                    exitFullScreen();
                    goFullScreen();
                }
                else
                {
                    goFullScreen();
                }
            }
        });

}

     private void goFullScreen() //Hides statusbar and navigation bar after 200ms
    {
        Handler handler=new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                ISFULLSCREEN=true;
                View decorView = getWindow().getDecorView();
           // Hide the status bar.
                int uiOptions = 
     View.SYSTEM_UI_FLAG_FULLSCREEN|View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
                decorView.setSystemUiVisibility(uiOptions);
            }
        }, 200);


    }
    private void exitFullScreen() // shows statusbar
    {
        ISFULLSCREEN=false;
        View decorView = getWindow().getDecorView();
        // Show Status Bar.
        int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
        decorView.setSystemUiVisibility(uiOptions);
    }

}

任何帮助将不胜感激

0 个答案:

没有答案