5


我的应用程序需要精确的显示屏英寸。我目前的解决方案是:

double inch;
double x = Math.pow(widthPix/dm.xdpi,2);
double y = Math.pow(heigthPix/dm.ydpi,2);
double screenInches = Math.sqrt(x+y);

inch = screenInches;

inch = inch * 10;
inch = Math.round(inch);
inch = inch / 10;

有没有更好的方法来获得显示英寸?当前在我的 4 英寸测试设备上显示为 5.9,这是错误的...

4

2 回答 2

8

以下给了我一个非常接近规格的结果:

    DisplayMetrics dm = getResources().getDisplayMetrics();

    double density = dm.density * 160;
    double x = Math.pow(dm.widthPixels / density, 2);
    double y = Math.pow(dm.heightPixels / density, 2);
    double screenInches = Math.sqrt(x + y);
    log.info("inches: {}", screenInches);

输出:inches: 4.589389937671455
规格:三星 Galaxy Nexus(720 x 1280 像素,~320 dpi,4.65 英寸)

请注意,这dm.heightPixels(或dm.widthPixels取决于您的方向)不一定提供准确的信息,因为软键(在 Galaxy Nexus 中使用)不会添加到高度(或宽度)。

于 2013-10-18T09:27:44.467 回答
6

试试这个.. 这会给你显示的确切尺寸..

static String getDisplaySize(Activity activity) {
    double x = 0, y = 0;
    int mWidthPixels, mHeightPixels;
    try {
        WindowManager windowManager = activity.getWindowManager();
        Display display = windowManager.getDefaultDisplay();
        DisplayMetrics displayMetrics = new DisplayMetrics();
        display.getMetrics(displayMetrics);
        Point realSize = new Point();
        Display.class.getMethod("getRealSize", Point.class).invoke(display, realSize);
        mWidthPixels = realSize.x;
        mHeightPixels = realSize.y;
        DisplayMetrics dm = new DisplayMetrics();
        activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
        x = Math.pow(mWidthPixels / dm.xdpi, 2);
        y = Math.pow(mHeightPixels / dm.ydpi, 2);

    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return String.format(Locale.US, "%.2f", Math.sqrt(x + y));
}
于 2018-08-06T10:23:23.527 回答