如何识别具有华硕HD等高清屏幕的设备?
我做了一些研究,找到了一些我试图计算的参数。
其中第一个信息来自GSM竞技场(大小和ppi),以及通过getDisplay()从设备收集的DisplayMetrics。getDisplayMetrics();
Asus HD - 1920 x 1200 pixels, 10.1 inches (~224 ppi pixel density) - DisplayMetrics{density=1.5, width=1920, height=1128, scaledDensity=1.5, xdpi=159.89508, ydpi=159.58115}
GTab - 800 x 1280 pixels, 10.1 inches (~149 ppi pixel density) - DisplayMetrics{density=1.0, width=800, height=1280, scaledDensity=1.0, xdpi=160.15764, ydpi=160.0}
Xoom - 800 x 1280 pixels, 10.1 inches (~149 ppi pixel density) - DisplayMetrics{density=1.0, width=1280, height=752, scaledDensity=1.15, xdpi=149.82489, ydpi=149.41176}
Xoom 2 ME - 800 x 1280 pixels, 8.2 inches (~184 ppi pixel density) - DisplayMetrics{density=1.0, width=1280, height=752, scaledDensity=1.0, xdpi=149.82489, ydpi=149.41176}
nexus 7 - 800 x 1280 pixels, 7.0 inches (~216 ppi pixel density)
nexus 7 2 - 1200 x 1920 pixels, 7.0 inches (~323 ppi pixel density)
Gnote II - 720 x 1280 pixels, 5.5 inches (~267 ppi pixel density)
Gnote - 800 x 1280 pixels, 5.3 inches (~285 ppi pixel density)
Gtab 7.7 - 800 x 1280 pixels, 7.7 inches (~196 ppi pixel density)
Gtab 7 - 600 x 1024 pixels, 7.0 inches (~170 ppi pixel density)
我坚持使用密度作为参数来识别它,但大多数设备返回1.0(至少华硕HD返回1.5),但我不确定我是否可以依赖这些值。
还有什么更好的方法可以确定吗?
不管关于"什么是HD"的争论如何。如果你想要一些基于Denity的东西;使用资源限定符:
在文件中:
/values-xxxhdpi/hd.xml
/values-xxhdpi/hd.xml
/values-xhdpi/hd.xml
hd.xml:
<resources>
<bool name="isWhatIClassifyAsHD">true</bool>
</resources>
(设置以下内容是可选的,因为它们无论如何都是false)。
/values/hd.xml
/values-mdpi/hd.xml
/values-hdpi/hd.xml
hd.xml:
<resources>
<bool name="isWhatIClassifyAsHD">false</bool>
</resources>
然后在您的活动中:
boolean isHD = getResources().getBoolean(R.bool.isWhatIClassifyAsHD);