2015-04-27 93 views
3

我編碼我申請了兩個特殊的設備微分Android設備[8英寸對10英寸的平板電腦]

Dell Venue 8 8inch

Samsung Galaxy Note 10.1 10inch

在我的代碼,我想爲每一個不同的編寫代碼這些設備對於小模塊,但我不能夠在兩個

區分我用

double density = getResources().getDisplayMetrics().density; 

但它返回兩個 1.3312500715255737

使用 getDisplayMetrics()

我試圖讓該決議

相同,但它返回相同的兩個

1280×720

所以我用什麼來區分我的代碼中的這兩個設備?

回答

3

您可以使用DisplayMetrics獲取有關您的應用程序在其上運行的屏幕的大量信息。

首先,我們創建一個DisplayMetrics規格對象:

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
int height = displaymetrics.heightPixels; 
int wwidth = displaymetrics.widthPixels; 

這將返回的寬度的絕對值和以像素爲單位的高度,所以1280×720爲銀河SIII,銀河的Nexus等

這通常不會對我們有幫助,因爲當我們在Android設備上工作時,我們通常更喜歡使用密度獨立像素,傾角。

float scaleFactor = displaymetrics .density; 

從這個結果,我們可以計算出一定高度或寬度的密度獨立像素的數量。

float widthDp = widthPixels/scaleFactor 
float heightDp = heightPixels/scaleFactor 

使用上述信息,我們知道,如果該裝置的最小寬度是小於600dp更大,該裝置是一個7" 片劑,如果它比720dp更大,該裝置是一個10" 片劑。

我們可以使用Math類的min函數計算出最小寬度,傳遞heightDp和widthDp以返回最小寬度。

float smallestWidth = Math.min(widthDp, heightDp); 

if (smallestWidth > 720) { 
    //Device is a 10" tablet 
} 
else if (smallestWidth > 600) { 
    //Device is a 7" tablet 
} 

然而,這並不總是給你一個確切的匹配,特別是可能被歪曲的密度,華電國際,當它不晦澀片工作時,或可能僅是800×480像素,但仍然在7英寸屏幕上

除了這些方法,如果您需要知道以英寸爲單位的設備的確切尺寸,您也可以使用度量方法瞭解每個設備的像素數量屏幕的英寸。

float widthDpi = displaymetrics .xdpi; 
float heightDpi = displaymetrics .ydpi; 

您可以使用有關每英寸設備中有多少像素以及總共有多少像素來計算設備的英寸數的知識。

float widthInches = widthPixels/widthDpi; 
float heightInches = heightPixels/heightDpi; 

這將以英寸返回設備的高度和寬度。這又不一定有助於確定它是什麼類型的設備,因爲設備的廣告尺寸是對角線,我們只有高度和寬度。

但是,我們也知道,給定三角形的高度和寬度,我們可以使用畢達哥拉斯定理來計算斜邊的長度(在這種情況下,屏幕對角線的大小)。

//a² + b² = c² 

//The size of the diagonal in inches is equal to the square root of the height in inches squared plus the width in inches squared. 
double diagonalInches = Math.sqrt(
    (widthInches * widthInches) 
    + (heightInches * heightInches)); 

從這一點,我們可以計算出該設備是平板電腦或不:

if (diagonalInches >= 10) { 
    //Device is a 10" tablet 
} 
else if (diagonalInches >= 7) { 
    //Device is a 7" tablet 
} 
+1

三江源,你在這裏寫了一個很好的答案描述,是非常有幫助! – ViVekH

+1

樂於幫助。享受編碼 –

相關問題