我有这段代码:
Point point = new Point();
getWindowManager().getDefaultDisplay().getSize(point);
setScreenSize(point);
这将返回显示的总高度(以像素为单位)。 但是,这包括通知栏,在某些设备上,底栏包含特定于Android的按钮(后面,主页和另一个)。
我的问题是两个人。
如何找出通知栏的高度? 如何找到设备屏幕上是否有这些按钮,如果有,该条的高度是多少?
答案 0 :(得分:2)
你可以试试这些。我最近在我的一个项目中使用了以下代码。它有效
Display display = getWindowManager().getDefaultDisplay();
String displayName = display.getName(); // minSdkVersion=17+
Log.i(TAG, "displayName = " + displayName);
//显示大小(以像素为单位)
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Log.i(TAG, "width = " + width);
Log.i(TAG, "height = " + height);
//进入(像素或dpi)
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int heightPixels = metrics.heightPixels;
int widthPixels = metrics.widthPixels;
int densityDpi = metrics.densityDpi;
//不赞成使用
int screenHeight = display.getHeight();
int screenWidth = display.getWidth();
Log.i(TAG, "screenHeight = " + screenHeight);
Log.i(TAG, "screenWidth = " + screenWidth);
答案 1 :(得分:0)
您可以在Android Material Design Specification中找到许多默认的Android规范,例如StatusBar(Metrics& Keylines)和NavBar(Structure)......
我认为状态栏是24dp,NavBar是标准的48dp。
您可以使用以下方法获取DP中的宽度和高度:
DisplayMetrics displayMetrics = getActivity().getResources().getDisplayMetrics();
float screenWidthDP = displayMetrics.widthPixels / displayMetrics.density;
float screenHeightDP = displayMetrics.heightPixels / displayMetrics.density;
答案 2 :(得分:0)
你可以这样做:
Display mDisplay = getWindowManager().getDefaultDisplay();
Point mPoint = new Point();
mDisplay.getSize(mPoint);
int width = mPoint.x;
int height = mPoint.y;
希望这会对你有所帮助。