作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想在 Android Honeycomb 上获得真实的屏幕分辨率。
这是我的代码
Display display = getWindowManager().getDefaultDisplay();
int w = display.getWidth();
int h = display.getHeight();
我的设备是 Asus Transformer TF101,尺寸为 1280x800。
但上面的代码使 w = 1280 和 h = 752(我想要的是 800 而不是 752)。
我知道 h < 800 因为状态栏减去了它。
有什么办法可以得到屏幕的实际高度?
非常感谢!
最佳答案
从 Andorid 3.2 开始,系统状态栏的高度不包含在 DisplayMetrics 的高度中,您必须使用未记录的 API(Display.getRawWidth() 和 Display.getRawHeight())来获取物理屏幕宽度或高度。
下面是一个例子,向您展示如何获取物理屏幕宽度或高度。
Method mGetRawW = Display.class.getMethod("getRawWidth");
Method mGetRawH = Display.class.getMethod("getRawHeight");
int nW = (Integer)mGetRawW.invoke(dp);
int nH = (Integer)mGetRawH.invoke(dp);
更新:对于 API 13-16,您必须使用上面的代码来获取实际的宽度/高度。对于 API 17+,您现在可以使用新的公共(public) API Display.getRealSize()。
关于android - 如何在 Android Honeycomb 中获取屏幕分辨率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7213771/
我是一名优秀的程序员,十分优秀!