Android 确定任何安卓设备';s屏幕类型

Android 确定任何安卓设备';s屏幕类型,android,Android,我想知道一台设备是否有hdpi屏幕、ldpi、mdpi、大hdpi,等等,但我不是说通过编程来实现这一点,而是想根据设备的规格来确定。 例如,我想查看设备的规格,并确定该特定设备加载了哪些资源 这能做到吗?或对于所有可能的设备,在网络上的某个地方,有这样一个列表吗?我已经为您编写了整个函数。享受!!希望能有帮助 public String getScreenDensityDPI() { DisplayMetrics metrics = new DisplayMetrics();

我想知道一台设备是否有
hdpi
屏幕、
ldpi
mdpi
大hdpi
,等等,但我不是说通过编程来实现这一点,而是想根据设备的规格来确定。 例如,我想查看设备的规格,并确定该特定设备加载了哪些资源


这能做到吗?或对于所有可能的设备,在网络上的某个地方,有这样一个列表吗?

我已经为您编写了整个函数。享受!!希望能有帮助

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;
        }
    }

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

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

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

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

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

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

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

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


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

  • 使用毕达哥拉斯定理计算对角线分辨率(以像素为单位):

  • 计算PPI:

  • 在哪里

    是以像素为单位的对角线分辨率

    是以像素为单位的宽度分辨率

    是以像素为单位的高度分辨率


    是以英寸为单位的对角线尺寸(这是作为显示器尺寸的广告数字)。

    谢谢。。。但正如我所说,我正在寻找一种非程序化的方式来完成它。不过还是要谢谢你;)太好了,正是我想要的!