Android App 隐藏标题栏+状态栏+导航栏+获取状态栏的三种方法

1. 隐藏当前Activity标题栏

 

 

    在当前Activity中调用:this.requestWindowFeature(Window.FEATURE_NO_TITLE);

 

 

2. 隐藏当前Activity状态栏(Status Bar)

2.1 Android 4.0 and Lower

 

[java] view plain copy  

  1. public class MainActivity extends Activity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         // If the Android version is lower than Jellybean, use this call to hide  
  7.         // the status bar.  
  8.         if (Build.VERSION.SDK_INT < 16) {  
  9.             getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
  10.                     WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  11.         }  
  12.         setContentView(R.layout.activity_main);  
  13.     }  
  14.     ...  
  15. }  

 

 

 

2.2 Android 4.1 and Higher

 

 

[java] view plain copy  

  1. View decorView = getWindow().getDecorView();  
  2. // Hide the status bar.  
  3. int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;  
  4. decorView.setSystemUiVisibility(uiOptions);  
  5. // Remember that you should never show the action bar if the  
  6. // status bar is hidden, so hide that too if necessary.  
  7. ActionBar actionBar = getActionBar();  
  8. actionBar.hide();  

 

3. 隐藏当前Activity界面的导航栏(NavigationBar)

    在Android4.0及以后版本中,可通过以下方法隐藏NavigationBar

 

[java] view plain copy  

  1. View decorView = getWindow().getDecorView();  
  2. // Hide both the navigation bar and the status bar.  
  3. // SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as  
  4. // a general rule, you should design your app to hide the status bar whenever you  
  5. // hide the navigation bar.  
  6. int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION  
  7.               | View.SYSTEM_UI_FLAG_FULLSCREEN;  
  8. decorView.setSystemUiVisibility(uiOptions);  

 

 

 

 

 

4. 隐藏所有Activity界面的标题栏

 

 

 修改AndroidManifest.xml 
 在application 标签中添加a
    android:theme="@android:style/Theme.NoTitleBar"

 

 

5. 隐藏所有Activity界面的TitleBar 和StatusBar 

 

  修改AndroidManifest.xml 
  在application 标签中添加 

 

  Android:theme="@android:style/Theme.NoTitleBar.Fullscreen"、、

获取状态栏的三种方法

 

通过反射获取

public int getStatusBarHeight(){
    if(statusBarHeight==0){
        Class c;
        try
        {
            c = Class.forName("com.android.internal.R$dimen");
            Object o = c.newInstance();
            Field field = c.getField("status_bar_height");
            int x = (Integer) field.get(o);
            statusBarHeight = getResources().getDimensionPixelSize(x);
        }catch(Exception e)
        {
            e.printStackTrace();
        }
    }
    return statusBarHeight;
}

 

根据资源ID获取

public int getStatusBarHeight1(){
    if(statusBarHeight==0){
        int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
        if(resourceId>0){
            statusBarHeight = getResources().getDimensionPixelSize(resourceId);
        }
    }
    return statusBarHeight;
}

 

通过当前窗口对象获取,貌似有局限性

public int getStatusBarHeight2(){
    if(statusBarHeight==0){
        Rect rect = new Rect();
        Window window = getWindow();
        window.getDecorView().getWindowVisibleDisplayFrame(rect);
        statusBarHeight = rect.top;
    }
    return statusBarHeight;
}

 

 

 

 

你可能感兴趣的:(#,android功能实现,隐藏状态栏)