2011-01-31 36 views
1

我正在支持我的Android應用中的多種屏幕尺寸,我需要知道設備的物理屏幕尺寸。在索尼愛立信X10上計算物理屏幕尺寸? (它出現1.5倍太大)

在索尼愛立信X10上,我正在查詢物理屏幕分辨率和密度,並試圖計算屏幕尺寸(分辨率/密度=尺寸),但結果約爲實際尺寸的1.5倍!

下面的代碼:

DisplayMetrics metrics = c.getResources().getDisplayMetrics(); 
    mPhysicalScreenWidth = metrics.widthPixels/metrics.xdpi; 
    mPhysicalScreenHeight = metrics.heightPixels/metrics.ydpi; 
    Log.d(TAG, "DisplayMetrics: widthPixels=" + metrics.widthPixels + " xdpi=" + metrics.xdpi + 
      " heightPixels=" + metrics.heightPixels + " ydpi=" + metrics.ydpi); 
    Log.d(TAG, "Physical screen width=" + mPhysicalScreenWidth + "\", height=" + mPhysicalScreenHeight + "\""); 

日誌中的輸出:

DisplayMetrics: widthPixels=480 xdpi=160.41878 heightPixels=854 ydpi=159.49677 
Physical screen width=2.9921684", height=5.3543406" 

該實際尺寸僅是2" (寬)×3.5" (高)!?

我做錯了什麼?

我正在使用Android 1.6 SDK,並且已將清單中的所有< supports-screens>屬性設置爲true。

+0

這款手機在屏幕的實際dpi是240不知道爲什麼它雖然被返回160。 – 2011-01-31 20:38:10

回答

2

我能想到的唯一解釋是設備的dpi值不正確(聽起來像是給我的虛假廣告編輯:虛假廣告,使它們看起來更糟糕?)。該屏幕的尺寸爲4.0英寸,分辨率爲160 dpi。您擁有的像素值是正確的,這意味着您擁有的英寸尺寸已正確計算。我在網上找到的所有數據(wikipedia,gsmarena)都是這樣說的。

但屏幕尺寸實際上是整個4.0英寸...

的sqrt(5.35^2 + 3.0^2)=跨越6.14英寸,這樣比實際大。

這聽起來像dpi值必須是不正確的。他們實際上應該稍大一些。插入幾個值後,實際的dpi必須在240左右。我不確定爲什麼這些值在任何地方都會被錯誤地列出來......

編輯:在研究了這個之後,xperia x10據報道x和y的dpi都是245。

1

我知道這是一個老問題,但錯誤仍然存​​在。當使用上顯示指標,您需要大一些的索尼設備做到以下幾點:

metrics.setToDefaults();