android 실제 해상도와 비실제 해상도

1775 단어
오늘 코드를 쓸 때 이상한 문제를 발견했어요. 똑같은 공식이 나왔는데 결과가 달라요. 뒤에 보니 이 화면의 높이는 1920이 아니라 1794예요. 그래서 나온 값이 달라요.

            //1794/1080     1794/1080         =1.66111
            this.smartScreenHeight= screenSize.height/screenSize.width>=1.8f? (float) (1.6611111111111111111111111111111f * screenSize.width) :screenSize.height;
//            this.smartScreenHeight=screenSize.height;


이 코드는 문제를 해결하는 것이다. 이 문제는 넓이와 높이가 너무 길어서 단추가 너무 높고 못생긴 버그이다.그리고 여기에 실제 높이를 얻는 방법이 있어요.

    }

    /**
     *     ,              
     *
     * @return
     */
    public static int getRawScreenHeight(Context context) {
        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        Display display = wm.getDefaultDisplay();
        int width = display.getWidth();
        int height = wm.getDefaultDisplay().getHeight();
        DisplayMetrics dm = new DisplayMetrics();
        @SuppressWarnings("rawtypes")
        Class c;
        int dpi;
        try {
            c = Class.forName("android.view.Display");
            @SuppressWarnings("unchecked")
            Method method = c.getMethod("getRealMetrics", DisplayMetrics.class);
            method.invoke(display, dm);
            dpi = dm.heightPixels;
            return dpi;
        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        }
    }

비율에 따라 자기 핸드폰의 높이를 가늠해 보세요.
            this.smartScreenHeight = screenSize.width * (667f / 375f);//  1080  1920.96

            Log.w("CALC_HEIGHT",this.smartScreenHeight+"");

       =      *(667/375)
      =(  /667)*       

//          
667    
       /667 *  

좋은 웹페이지 즐겨찾기