Android DisplayMetrics returns incorrect screen size in pixels on ICS

前端 未结 6 1080
花落未央
花落未央 2020-11-27 03:24

I\'ve tried this....

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int fullscreenheight = metric         


        
6条回答
  •  执念已碎
    2020-11-27 03:58

    public static Point getRealSize(Display display) {
            Point outPoint = new Point();
            Method mGetRawH;
            try {
                mGetRawH = Display.class.getMethod("getRawHeight");
                Method mGetRawW = Display.class.getMethod("getRawWidth");
                outPoint.x = (Integer) mGetRawW.invoke(display);
                outPoint.y = (Integer) mGetRawH.invoke(display);
                return outPoint;
            } catch (Throwable e) {
                return null;
            }
        }
    
        public static Point getSize(Display display) {
            if (Build.VERSION.SDK_INT >= 17) {
                Point outPoint = new Point();
                DisplayMetrics metrics = new DisplayMetrics();
                display.getRealMetrics(metrics);
                outPoint.x = metrics.widthPixels;
                outPoint.y = metrics.heightPixels;
                return outPoint;
            }
            if (Build.VERSION.SDK_INT >= 14) {
                Point outPoint = getRealSize(display);
                if (outPoint != null)
                    return outPoint;
            }
            Point outPoint = new Point();
            if (Build.VERSION.SDK_INT >= 13) {
                display.getSize(outPoint);
            } else {
                outPoint.x = display.getWidth();
                outPoint.y = display.getHeight();
            }
            return outPoint;
        }
    

提交回复
热议问题