我想拿到手机的屏幕尺寸,但它一直给我错误的价值观,我已经使用获取屏幕的大小不使用getMetrics
WindowManager windowmanager = (WindowManager)
getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
Display display = windowmanager.getDefaultDisplay();
DisplayMetrics displayMetrics = new DisplayMetrics();
display.getMetrics(displayMetrics);
float deviceWidth = displayMetrics.widthPixels;
float deviceHeight = displayMetrics.ydpi;
我想这太代码:
Resources resources = getResources();
Configuration config = resources.getConfiguration();
DisplayMetrics dm = resources.getDisplayMetrics();
// Note, screenHeightDp isn't reliable
// (it seems to be too small by the height of the status bar),
// but we assume screenWidthDp is reliable.
// Note also, dm.widthPixels,dm.heightPixels aren't reliably pixels
// (they get confused when in screen compatibility mode, it seems),
// but we assume their ratio is correct.
double screenWidthInPixels = (double)config.screenWidthDp *dm.density;
double screenHeightInPixels = screenWidthInPixels * dm.heightPixels /dm.widthPixels;
deviceWidth = (int)(screenWidthInPixels + .5);
deviceHeight = (int)(screenHeightInPixels + .5);
而且还认为:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Point realSize = new Point();
display.getRealSize(realSize);
deviceWidth= realSize.x;
deviceHeight = realSize.y;
}
但在我的三星S7在SDK 7.0我得到了1920×1080这是错误的,因为在S7在sdk 6.0.1我得到了2560x1440这是真正的价值。 我尝试了很多解决方案,但没有发现任何好的东西。
感谢
谢谢,没有看到,我改变了设置,并得到了正确的结果,但我仍然有一个模拟的Nexus 5更新到7.1.1的问题,我得到1794x1080而不是1920x1080,你有什么想法为什么? –
找到我的答案,问题是按钮栏不被视为屏幕的一部分。所以如果你用pysical按钮创建一个虚拟设备,你不会再有这个错误了。与使用按钮栏的真实设备相同,如华为P9。 –