我想知道某个设备是否有hdpi
屏幕,ldpi
,mdpi
,large-hdpi
等,但我不是在考虑编程这样做,我想根据设备的规格来解决这个问题。
例如,我想查看gsmarena
设备的规格,并确定该特定设备加载哪些资源。
可以这样做吗?或者......对于所有可能的设备,网络上的某个地方是否有这样的事情列表?
答案 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,那么您可以通过了解屏幕的对角线尺寸(以英寸为单位)和分辨率(以像素为单位(宽度和高度))来计算。这可以分两步完成:
使用毕达哥拉斯定理以像素计算对角线分辨率:
计算PPI:
,其中
是对角线分辨率,以像素为单位
是以像素为单位的宽度分辨率
是以像素为单位的高度分辨率
是以英寸为单位的对角线尺寸(这是显示为显示尺寸的数字)。