我想检查这个通过互联网获取不同的图像。怎么做?如何检查Android设备是HDPI屏幕还是MDPI屏幕?
回答
density = getResources().getDisplayMetrics().density;
// return 0.75 if it's LDPI
// return 1.0 if it's MDPI
// return 1.5 if it's HDPI
// return 2.0 if it's XHDPI
// return 3.0 if it's XXHDPI
// return 4.0 if it's XXXHDPI
您可以查看屏幕密度:
switch (getResources().getDisplayMetrics().densityDpi) {
case DisplayMetrics.DENSITY_LOW:
// ...
break;
case DisplayMetrics.DENSITY_MEDIUM:
// ...
break;
case DisplayMetrics.DENSITY_HIGH:
// ...
break;
case DisplayMetrics.DENSITY_XHIGH:
// ...
break;
}
编辑注意,由于Android的发展,其他值应包括在switch
案件。在编辑时,这包括DisplayMetrics.DENSITY_TV
和DisplayMetrics.DENSITY_XXHIGH
。有关最新信息,请咨询the docs;我不打算保持这个答案。
在某些设备上(我的是Galaxy Tab3),密度和密度Dpi都会返回奇怪的值,如1.33(密度),213(密度Dpi)。所以我的解决办法是增加这些标志:
<项目类型= "布尔" 名= " is_mdpi " > [BOOL] < /件>
<项目 类型= "布尔" 名= " is_hdpi " > [bool] </item >
< item type = " bool " 名称= " is_xhdpi " > [BOOL] < /项目>
<项 类型= "布尔" 名称= " is_xxhdpi " > [BOOL] < /项目>
至4 values.xml文件,将它们放在相应的res/values- [xxx] /文件夹下。
213dpi是一个众所周知的密度,“tvdpi”:http://developer.android.com/guide/practices/screens_support.html#qualifiers – 2014-02-04 19:37:49
从上面的答案,我将它们结合在一起,创造了以下功能:
public static String getDeviceDensity(Context context){
String deviceDensity = "";
switch (context.getResources().getDisplayMetrics().densityDpi) {
case DisplayMetrics.DENSITY_LOW:
deviceDensity = 0.75 + " ldpi";
break;
case DisplayMetrics.DENSITY_MEDIUM:
deviceDensity = 1.0 + " mdpi";
break;
case DisplayMetrics.DENSITY_HIGH:
deviceDensity = 1.5 + " hdpi";
break;
case DisplayMetrics.DENSITY_XHIGH:
deviceDensity = 2.0 + " xhdpi";
break;
case DisplayMetrics.DENSITY_XXHIGH:
deviceDensity = 3.0 + " xxhdpi";
break;
case DisplayMetrics.DENSITY_XXXHIGH:
deviceDensity = 4.0 + " xxxhdpi";
break;
default:
deviceDensity = "Not found";
}
return deviceDensity;
}
现在,该设备要获得密度信息和文件夹将使用它,只需添加上述方法该活动,并添加以下行的onCreate在描述
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Log.d("Screen Density: ", Helper.getDeviceDensity(this));
}
- 1. 如何检查Android设备是HDPI还是MDPI,但不在类中扩展Activity?
- 2. 是从这个设备的屏幕属于ldpi(或mdpi或hdpi)的密度?
- 3. 如何知道屏幕在Android中使用320-hdpi或320-mdpi
- 4. 如何检测屏幕在Android设备中是电容还是电阻?
- 5. Android Eclipse模拟器问题:运行WVGA(hdpi)作为mdpi屏幕
- 6. Android:在大型mdpi/hdpi屏幕上支持绘制景观?
- 7. Android设备/屏幕支持
- 8. Android设备屏幕截图
- 9. 屏幕:如何打开备用屏幕?
- 10. 我可以检测显示器是宽屏幕还是广场屏幕?
- 11. GridView适合MDPI屏幕但不适合HDPI和XHDPI
- 12. 字体大小超过HDPI/MDPI分辨率的小屏幕
- 13. 检查屏幕被设置
- 14. 检测是否在Android设备屏幕上停止了触摸
- 15. Spash屏幕拉伸不是很好,在不同的Android屏幕设备
- 16. Android,mdpi密度但不同屏幕
- 17. 检查当前屏幕在iOS中是打开还是关闭
- 18. android设备屏幕尺寸支持大屏幕
- 19. 如何根据设备/屏幕分辨率调整屏幕?
- 20. 检查屏幕窄
- 21. android服务检测到主屏幕是
- 22. 大屏幕或hdpi的主屏幕小部件大小?
- 23. 如何检测屏幕是否连接?
- 24. OSX:检查屏幕是否锁定
- 25. 咖啡 - 检查屏幕是否可见
- 26. 检查控制是否在屏幕上
- 27. 检查屏幕是否已解锁
- 28. 检查屏幕上是否显示Vector3
- 29. Android - 如何检查屏幕是否被触摸?
- 30. 如何检查Android中的屏幕是否真的可见?
密度值:http://developer.android.com/guide/practices/screens_support.html – esilver 2014-01-21 21:52:39
@SteD是否有可能告诉设备是什么将?例如考虑在铲斗范围中间DPI为140的情况?它是向下还是向下? – wal 2016-06-29 06:12:40
tvdpi约为1.3 – 2016-10-05 21:40:26