沉浸式和状态栏的隐藏

来源:互联网 发布:手机淘宝内部优惠券 编辑:程序博客网 时间:2024/05/16 08:10


 

沉浸式

原创 2017年10月18日 16:08:32

首先手机从上往下分为:状态栏、ActionBar、导航栏。

首先隐藏ActionBar是最简单的,我们就先实现它吧:

在想要隐藏的Activity里加上下面两行代码就可以隐藏标题了

[html] view plain copy
  1. ActionBar actiongetSupportActionBar();  
  2. action.hide(); 
例如:public class ShowActivity extends AppCompatActivity implements Iview{     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_show);        //隐藏标题        ActionBar actionBar = getSupportActionBar();        actionBar.hide();            }}


接下来就隐藏状态栏:
[html] view plain copy
  1. View decorView=getWindow().getDecorView();  
  2. int option=View.SYSTEM_UI_FLAG_FULLSCREEN;  
  3. decorView.setSystemUiVisibility(option);  

有些朋友不隐藏状态栏,而是要使状态栏透明,首先需要注意的是只有5.0及以上系统才支持,因此这里需要先进行if判断:
[html] view plain copy
  1. if (Build.VERSION.SDK_INT>=21) {  
  2.             View decorView=getWindow().getDecorView();  
  3.             int option=View.SYSTEM_UI_FLAG_FULLSCREEN  
  4.                     | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;  
  5.             decorView.setSystemUiVisibility(option);  
  6.             getWindow().setStatusBarColor(Color.TRANSPARENT);//变成透明色  
  7.         }  

接下来我们就隐藏导航栏:
[html] view plain copy
  1. View decorView=getWindow().getDecorView();  
  2.             int option=View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;  
  3.             decorView.setSystemUiVisibility(option);  

透明导航栏:
[html] view plain copy
  1. if (Build.VERSION.SDK_INT>=21) {  
  2.             View decorView=getWindow().getDecorView();  
  3.             int option=View.SYSTEM_UI_FLAG_LAYOUT_STABLE  
  4.                     | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;  
  5.             decorView.setSystemUiVisibility(option);  
  6.             getWindow().setNavigationBarColor(Color.TRANSPARENT);  
  7.         }  

当你完全想实现沉浸式模式时,也就是全部隐藏,那么只需要重写Activity的onWindowFocusChanged()方法:
[html] view plain copy
  1. @Override  
  2.     public void onWindowFocusChanged(boolean hasFocus) {  
  3.         super.onWindowFocusChanged(hasFocus);  
  4.         if (hasFocus&&Build.VERSION.SDK_INT>=19){  
  5.             View decorView=getWindow().getDecorView();  
  6.             int option=View.SYSTEM_UI_FLAG_LAYOUT_STABLE  
  7.                     | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  
  8.                     |View.SYSTEM_UI_FLAG_HIDE_NAVIGATION  
  9.                     |View.SYSTEM_UI_FLAG_FULLSCREEN  
  10.                     |View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY  
  11.                     | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;  
  12.             decorView.setSystemUiVisibility(option);  
  13.         }  
  14.     }  

最后可以设置横屏模式:
[html] view plain copy
  1. <activity android:name=".MainActivity"  
  2.     只需要加这一行代码就可以  
  3.      android:screenOrientation="landscape"  
  4.       >  
  5.     <intent-filter>  
  6.          <action android:name="android.intent.action.MAIN" />  
  7.   
  8.          <category android:name="android.intent.category.LAUNCHER" />  
  9.      </intent-filter>  
  10. </activity> 

原创粉丝点击