确定任何Android设备的屏幕类型

时间:2015-06-28 08:43:15

标签: android

我想知道某个设备是否有hdpi屏幕,ldpimdpilarge-hdpi等,但我不是在考虑编程这样做,我想根据设备的规格来解决这个问题。 例如,我想查看gsmarena设备的规格,并确定该特定设备加载哪些资源。

可以这样做吗?或者......对于所有可能的设备,网络上的某个地方是否有这样的事情列表?

2 个答案:

答案 0 :(得分:1)

我为你写了全部功能。请享用!!希望它有所帮助。

public String getScreenDensityDPI() {

    DisplayMetrics metrics = new DisplayMetrics();
    WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();
    display.getRealMetrics(metrics);

        switch (metrics.densityDpi) {
        case DisplayMetrics.DENSITY_LOW:
            return "ldpi";

        case DisplayMetrics.DENSITY_MEDIUM:
            return "mdpi";

        case DisplayMetrics.DENSITY_TV:
            return "tvdpi";

        case DisplayMetrics.DENSITY_HIGH:
            return "hdpi";

        case DisplayMetrics.DENSITY_XHIGH:
            return "xhdpi";

        case DisplayMetrics.DENSITY_XXHIGH:
            return "xxhdpi";

        case DisplayMetrics.DENSITY_XXXHIGH:
            return "xxxhdpi";

        default:
            return "" + mDisplayMetrics.densityDpi;
        }
    }

答案 1 :(得分:1)

您可以查看设备的PPI并确定其类别。

LDPI :低密度,每英寸约120个点

MDPI :中等密度,每英寸约120-160个点

TVDPI :中等密度,每英寸约160-213点

HDPI :高密度,每英寸约213-240点

XHDPI :eXtra高密度,每英寸约240-320点

XXHDPI :eXtra eXtra高密度,每英寸约320-480点[15]

XXXHDPI :超高密度,每英寸约480-640点[16]

如果网站没有提供显示器的PPI,那么您可以通过了解屏幕的对角线尺寸(以英寸为单位)和分辨率(以像素为单位(宽度和高度))来计算。这可以分两步完成:

  1. 使用毕达哥拉斯定理以像素计算对角线分辨率:

    enter image description here

  2. 计算PPI:

    enter image description here

  3. ,其中

    enter image description here是对角线分辨率,以像素为单位

    enter image description here是以像素为单位的宽度分辨率

    enter image description here是以像素为单位的高度分辨率

    enter image description here是以英寸为单位的对角线尺寸(这是显示为显示尺寸的数字)。