窗口尺寸,屏幕尺寸,导航栏高度,状态栏高度

获取屏幕尺寸:

            public void onClick(View v) {
                Rect r = new Rect();
               //不包括导航栏和状态栏。是相对于屏幕坐标系,注意要在窗口布局后获取
                getWindow().getDecorView().getWindowVisibleDisplayFrame(r);
                Log.e(MainActivity.class.getSimpleName(), r.toString());
                DisplayMetrics dm = new DisplayMetrics();
               //不包括导航栏但包括状态栏
                getWindowManager().getDefaultDisplay().getMetrics(dm);
                Log.e(MainActivity.class.getSimpleName(), dm.toString());
               //包括导航栏和状态栏
                getWindowManager().getDefaultDisplay().getRealMetrics(dm);
                Log.e(MainActivity.class.getSimpleName(), dm.toString());
            }

获取导航栏高度:

getResources().getDimensionPixelSize(getResources().getIdentifier(“navigation_bar_height”, “dimen”, “android”));

获取状态栏高度:

getResources().getDimensionPixelSize(getResources().getIdentifier(“status_bar_height”, “dimen”, “android”));

显示/隐藏状态栏:

1、在AndroidManifest.xml文件中修改theme为android:theme=”@android:style/Theme.NoTitleBar.Fullscreen”

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


调用setSystemUiVisibility方法,该方法传入的参数可以为:

View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态的正常情况)。
View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。
View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。
View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。
 

猜你喜欢

转载自blog.csdn.net/b1480521874/article/details/88321641