5

我正在尝试获取在 4.2 上运行的 Nexus 7 的实际屏幕宽度和高度。

我正在根据设备宽度和高度进行一些运行时计算,以调整按钮和一些 UI 元素的大小,因此它在所有设备中看起来都很合适。我的代码在所有 SDK 4.1 及更低版本中运行良好,但不适用于 4.2。

我正在使用以下代码来获取宽度和高度。

代码:1

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
mWidth = displaymetrics.widthPixels;
mHeight = displaymetrics.heightPixels;

代码:2

Point size = new Point();
WindowManager w = getWindowManager();
w.getDefaultDisplay().getSize(size); 
mWidth = size.x;
mHeight = size.y;

我也尝试过未记录的方法

代码:3

Display display = getWindowManager().getDefaultDisplay();
Method mGetRawW = Display.class.getMethod("getRawWidth");
Method mGetRawH = Display.class.getMethod("getRawHeight");
mWidth = (Integer) mGetRawW.invoke(display);
mHeight = (Integer) mGetRawH.invoke(display);

但以上都不适用于在 4.2 上运行的 Nexus 7,它总是减去状态栏高度,我没有得到完整的高度。

我使用了一些方法来计算状态球棒的高度,但没有得到正确的值,

int statusBarHeight = Math.ceil(25 * context.getResources().getDisplayMetrics().density);

Rect rectgle= new Rect();
Window window= getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
int StatusBarHeight= rectgle.top;

是否有任何标准方法可以获取实际设备屏幕的高度和宽度?

4

3 回答 3

1

尝试使用 API 17 的最后更改:

http://developer.android.com/reference/android/view/Display.html#getRealSize(android.graphics.Point )

public void getRealSize (Point outSize)
在不减去任何窗口装饰或应用任何兼容性比例因子的情况下获取显示的实际尺寸。

如果这不起作用,您可以尝试:

http://developer.android.com/reference/android/view/Display.html#getRealMetrics(android.util.DisplayMetrics )

于 2012-11-19T15:04:51.707 回答
1
int height = getResources().getDisplayMetrics().heightPixels;
int width = getResources().getDisplayMetrics().widthPixels;

height 表示设备的屏幕高度(以像素为单位),width 表示设备的屏幕宽度(以像素为单位)。

于 2015-11-28T09:08:18.947 回答
0

尝试这个

int width = 0;
int height =0;

    Display display = activity.getWindowManager().getDefaultDisplay();

    if (Build.VERSION.SDK_INT >= 13) {
        Point size = new Point();
        display.getSize(size);
        width = size.x;
        height = size.y;
    } else {
        width = display.getWidth();
        height = display.getHeight();
    }
于 2015-11-28T11:55:06.040 回答