在我们的应用程序中,我们需要在启动时确定屏幕宽度。我们尝试使用几种不同的方法来获得此宽度(请参见下面的列表),但三星设备,尤其是他们的 Galaxy 设备,有时会为我们提供不正确的值。
我们有一台分辨率为 1440 x 2560 像素的 Galaxy s6。大多数情况下,设备会报告宽度为 1440,但偶尔会给我们提供 1080 的宽度。
我们尝试通过以下方式获取宽度:
1)
getResources().getDisplayMetrics().widthPixels;
2)
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
3)
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getRealSize(size);
但在所有情况下,我们都会看到返回的宽度不正确。当我们的应用程序首次启动时,我们可靠地看到不正确的值。任何帮助将不胜感激。
最佳答案
你试过吗?
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int screenWidth = metrics.widthPixels;
更新
关于android - 三星设备间歇性地报告不正确的屏幕宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40181246/