2015-05-21 23 views
0

我正在研究Android應用程序,並嘗試瞭解哪些DPI是我的顯示。該供應商表示是一個HDPI顯示器,但我得到了完全不同的結果。這是我的代碼:其中DPI存儲桶是我的顯示

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 

String text = "Width: " + metrics.widthPixels 
     + "\nHeight: " + metrics.heightPixels 
     + "\nDpi: " + metrics.densityDpi 
     + "\nXDPI: " + metrics.xdpi 
     + "\nYDPI: " + metrics.ydpi 
     + "\nRDpi: " + (int)(metrics.density * 160f); 

和設備打印的以下信息:

Width: 320 
Height: 320 
Dpi: 160 
XDPI: 262 
YDPI: 262 
RDPI: 160 

如此看來,廠商考慮XDPI和XDPI參數聲明,顯示器是華電國際,但在現實中這是一個MDPI。我錯了嗎?

+0

它是mdpi。你有哪個設備? – Blackbelt

+0

這不是一個商業產品,它是一個定製的Android Wear原型 – Raffaeu

回答

1

一個好方法來獲得DPI是產生每密度string.xml文件。

創建名爲values-mdpi,values-hdpi,values-xhdpi ...的文件夾,並在每個人中添加一個strings.xml,其密度值爲密度字符串(位於值中的字符串爲mdpi) -mdpi等)

然後讀取R.string.density會給你正確的密度

+0

我可以證實,使用這種方法我可以得到字符串MDPI,因此供應商使用XDPI和YDPI將顯示器作爲HDPI(260)出售,但實際上是一個MDPI – Raffaeu

0

120DPI = LDPI 160dpi = MDPI 240dpi = HDPI

所以你上MDPI

0

如上所述通過joshperry的metrics.density屬性是從參考密度浮點縮放因子(160dpi) 。現在metrics.densityDpi提供的相同的值,可以計算

int densityDpi = (int)(metrics.density * 160f); 
相關問題