很多人都知道使用WindowManager.getDefaultDisplay.getDisplayMetrics(DisplayMetrics met)方法来获取屏幕宽度,但是这样其实是不一定准确的,因为有时候,会有小窗口(Virtual Display的存在)。
这样的话,我们就需要找出所有Display中尺寸最大的,把它当做设备的真实尺寸(可能会有比真实尺寸更大的Display,没具体确认过,这种情况本方法就不适用了)
代码如下:
private static Point getPhysicalScreenSize(Context context){ Point p = new Point(); DisplayManager dm = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE); Display[] displays = dm.getDisplays(); int maxWidth = -1, maxHeight = -1; DisplayMetrics met = new DisplayMetrics(); for(Display d : displays){ d.getMetrics(met); maxWidth = met.widthPixels > maxWidth ? met.widthPixels : maxWidth; maxHeight = met.heightPixels > maxHeight ? met.heightPixels : maxHeight; } p.x = maxWidth; p.y = maxHeight; return p; }
时间: 2024-10-27 05:46:47