我试图在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;
是否有任何标准方法可以获得实际的设备屏幕高度和宽度?
答案 0 :(得分:1)
尝试使用API 17的最后更改:
http://developer.android.com/reference/android/view/Display.html#getRealSize(android.graphics.Point)
public void getRealSize(Point outSize)
获取显示的实际大小,而不减去任何窗口装饰或应用任何窗口装饰 兼容性比例因子。
如果这不起作用,您可以尝试:
答案 1 :(得分:0)
int height = getResources().getDisplayMetrics().heightPixels;
int width = getResources().getDisplayMetrics().widthPixels;
height表示设备的屏幕高度,以像素为单位 width表示设备的屏幕宽度(以像素为单位)。
答案 2 :(得分: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();
}