计算Android屏幕尺寸

时间:2015-08-05 08:16:47

标签: android screen-size

我有这段代码:

    Point point = new Point();
    getWindowManager().getDefaultDisplay().getSize(point);
    setScreenSize(point);

这将返回显示的总高度(以像素为单位)。 但是,这包括通知栏,在某些设备上,底栏包含特定于Android的按钮(后面,主页和另一个)。

我的问题是两个人。

如何找出通知栏的高度? 如何找到设备屏幕上是否有这些按钮,如果有,该条的高度是多少?

3 个答案:

答案 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;

Material Design Specification

答案 2 :(得分:0)

你可以这样做:

Display mDisplay = getWindowManager().getDefaultDisplay();
Point mPoint = new Point();
mDisplay.getSize(mPoint);
int width = mPoint.x;
int height = mPoint.y;

希望这会对你有所帮助。