2012-08-29 179 views
2

是否可以計算以英寸爲單位的android屏幕對角線尺寸。計算android屏幕大小?

我在下面試過兩種方法都不適合我的情況。

方法1:

DisplayMetrics displayMetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
int absoluteHeightInPx = displayMetrics.heightPixels; 
int absoluteWidthInPx = displayMetrics.widthPixels;  
double diagonalPixels = Math.sqrt((absoluteHeightInPx * absoluteHeightInPx) + (absoluteWidthInPx * absoluteWidthInPx)); 
double diagonalInInches = diagonalPixels/displayMetrics.densityDpi; 

方法2:

float actualHeight = absoluteHeightInPx * deviceDensity; 
float actualWidth = absoluteWidthInPx * deviceDensity; 
float deviceDensity = displayMetrics.density; 
float physicalPixelPerInchX = displayMetrics.xdpi; 
float physicalPixelPerInchY = displayMetrics.ydpi; 
float heightInInches = actualHeight/physicalPixelPerInchY; 
float widhtInInches = actualWidth/physicalPixelPerInchX; 
double diagonalInInches = Math.sqrt((heightInInches * heightInInches) + (widhtInInches * widhtInInches)); 

你能改正,如果我錯了。

感謝, Easwar

+0

http://stackoverflow.com/questions/2193457/IS-有-A-方式對確定功能的Android物理屏幕,他ight-in-cm-or-inches – javanut13

+0

我已經看過鏈接了。但這不適合我。我在某些設備上進行了測試。我沒有得到完美的答案。請幫幫我。 –

+0

你使用什麼設備? – VendettaDroid

回答

0

我已經測試了兩個我在8臺Android設備的方法。第二是幾乎準確。

但對於一些設備,這是不給予適當的回答。所以我總結以下第二種方法。

7

我用下面的代碼,和它的作品在我的摩托戴伊。

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

    float height=metrics.heightPixels/metrics.xdpi; 
    float width=metrics.widthPixels/metrics.ydpi; 

    TextView tv=(TextView) findViewById(R.id.textview); 
    tv.setText("The screen size is:"+FloatMath.sqrt(height*height+width*width)); 

真正的對角線長度爲3.7" ,代碼給出了3.6979072,足夠精確。根據SDK中的描述,我覺得我的方法應該在其他設備上工作。

+0

感謝,酷的方法:D –

+0

其實你必須乘以heightPixels和widhtPixels密度的屏幕。如果密度= 1,上述推導將是正確的。我認爲您的設備的密度爲1.右? –

+0

SDK文檔說xdpi是X維中每英寸的物理像素數,而heightPixels是以像素爲單位的絕對高度,因此將其除以xdpi應得到X維中以英寸爲單位的物理長度。這就是我如何考慮你的問題。我不認爲密度在這裏。順便說一句,我的設備密度爲1.5 – Huang