当 Activity 以全屏模式运行时,状态栏的出现与隐藏

1.要activity的

setContentView(R.layout.video_main);

2.之前加上

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);


3.再用

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);//显示状态栏
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);//隐藏状态栏


但是,我发现用上面那(2的)两句话,把我videoview中用的mediacoontroller的进度条给屏蔽了

所以,可以把那两句话改用

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);

我用的是viewpager,中间页里放了videoview,所以会发现,videoview上显示正常了,但是左右两页显示不正常了

可以加上

    //显示状态栏,Activity不全屏显示(恢复到有状态的正常情况)  

   

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);


所以可以在监听滑到第几页

@Override
public void onPageSelected(int arg0) {
    if (arg0 == 0) {
      getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
      getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
   }else if (arg0 == 2){
      getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
      getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
   }else{
       getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
      
      new Handler().postDelayed(new Runnable() {
           @Override
           public void run() {
           getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
           }
         },1000);
       }  
   }

补充:透明任务栏

在View中添加定义了两个Flag。
     // 完全透明任务栏
     public static final int SYSTEM_UI_FLAG_TRANSPARENT_STATUS_BAR = 
0x00000010;
     //半透明任务栏
     public static final int SYSTEM_UI_FLAG_TRANSLUCENT_STATUS_BAR = 
0x00000020;

有些应用需要设置的时候,在需要的UI界面设置:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_TRANSPARENT_STATUS_BAR);
应用退出无需做任何处理,系统会恢复默认。

你可能感兴趣的:(当 Activity 以全屏模式运行时,状态栏的出现与隐藏)