Android全屏显示
一、获取状态栏和导航条的高度:
1. 获取状态栏的高度:
public int getStatusBarHeight ( ) {
Resources resources = mActivity. getResources ( ) ;
int resourceId = resources. getIdentifier ( "status_bar_height" , "dimen" , "android" ) ;
int height = resources. getDimensionPixelSize ( resourceId) ;
Log. v ( "status bar>>>" , "height:" + height) ;
return height;
}
2. 获取导航条的高度:
public int getNavigationBarHeight ( ) {
Resources resources = mActivity. getResources ( ) ;
int resourceId= resources. getIdentifier ( "navigation_bar_height" , "dimen" , "android" ) ;
int height = resources. getDimensionPixelSize ( resourceId) ;
Log. v ( "navigation bar>>>" , "height:" + height) ;
return height;
}
二、全屏
方法一: 直接隐藏:
Window window = getWindow ( ) ;
window. setFlags ( WindowManager. LayoutParams. FLAG_FULLSCREEN, WindowManager. LayoutParams. FLAG_FULLSCREEN) ;
方法二、通过DecorView类:
一、DecorView类(通过getWindow().getDecorView()获取)提供了setSystemUiVisibility(int i) 方法来动态隐藏和显示状态栏;
1. setSystemUiVisibility(int i)里面的参数详情:
View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏, View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。 View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。 View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。
三、沉浸式状态栏
4.4以上的沉浸式:
getWindow ( ) . setFlags ( WindowManager. LayoutParams. FLAG_TRANSLUCENT_STATUS, WindowManager. LayoutParams. FLAG_TRANSLUCENT_STATUS) ;
5.0以上的沉浸式:
private void immersionMode ( ) {
Window window = getWindow ( ) ;
if ( window != null) {
View decorView = window. getDecorView ( ) ;
int option = 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
| View. SYSTEM_UI_FLAG_FULLSCREEN
| View. SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView. setSystemUiVisibility ( option) ;
decorView. setOnSystemUiVisibilityChangeListener ( new View. OnSystemUiVisibilityChangeListener ( ) {
@Override
public void onSystemUiVisibilityChange ( int visibility) {
Log. d ( TAG, "onSystemUiVisibilityChange: " + visibility) ;
}
} ) ;
}
}