Android:了解DPI并通过代码获取它?

Mar*_*tin 2 android dpi android-layout

任何人都可以提供帮助,我发现难以获得手机的DPI,精神上(了解它)并获得代码中的价值:-)

例如,它表明密度如下(取自android docs)

ldpi    Resources for low-density (ldpi) screens (~120dpi).
mdpi    Resources for medium-density (mdpi) screens (~160dpi). (This is the baseline density.)
hdpi    Resources for high-density (hdpi) screens (~240dpi).
xhdpi   Resources for extra high-density (xhdpi) screens (~320dpi).
Run Code Online (Sandbox Code Playgroud)

但为什么它只是~240dpi状态,即.一个值?如果不是(例如)移动(三星星系S2)是WVGA(800 x 480)(DPI),那么符号是什么意思?

举一个800 x 480(三星星系s2的dpi)的简单例子,如何将其转换为上述值之一?

我想知道是否有人可以帮助我在心理上理解这一点.

那么以后可以通过代码通过代码获得密度大小,DPI(包括x和y)吗?

我有点失落

Com*_*are 5

但为什么它只是~240dpi状态,即.一个值?

你有什么期待?

这个符号是什么意思?

正如评论者指出的那样,这意味着"近似".实际上,设备制造商将选择他们希望设备使用的密度桶,通常基于他们对真实应用程序行为的测试.通常,他们会根据实际屏幕密度选择最接近的密度桶,但这不能保证.

举一个800 x 480(三星星系s2的dpi)的简单例子,如何将其转换为上述值之一?

你没有.分辨率不是密度.我可以有800x480的显示屏,对角线尺寸为1mm,1cm,1m或1km.因此,每个都将具有不同的屏幕密度.密度以dpi =每英寸点数=每英寸像素数来测量.

那么以后可以通过代码通过代码获得密度大小,DPI(包括x和y)吗?

是的,来自一个DisplayMetrics物体.