2013-05-13 65 views
1

我有兩個佈局文件夾:佈局sw800dp和佈局sw600dp所以我的應用程序使用佈局sw600dp兩個設備,三星Galaxy Tab 7的Nexus 7,它使Nexus 7的字體和樣式更大!我如何區分這兩個設備的佈局? 由於提前Differerentiate佈局具有相同的DPI兩個設備

+1

使水庫2個文件夾/ layout.nexus 7佈局large- tvdpi,三星10.1 layout-xlarge-mdpi。 – Hemant 2013-05-13 05:14:51

+0

@Hemant:我會嘗試你的評論。 tx – 2013-05-13 05:28:21

回答

0

解決:我已經做了兩個佈局文件夾佈局tvdpi爲Nexus 7和佈局MDPI爲三星Galaxy Tab 7

1

可以從下面的代碼

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
float widthInInches = metrics.widthPixels/metrics.xdpi; 
float heightInInches = metrics.heightPixels/metrics.ydpi; 
double sizeInInches = Math.sqrt(Math.pow(widthInInches, 2) 
      + Math.pow(heightInInches, 2)); 

這裏sizeInInches檢查10和7英寸表屏幕尺寸爲您提供的表的適當英寸採取在緩衝液爲0.5英寸,並給根據條件它如下所示。

boolean is7inchTablet = sizeInInches >= 6.5 && sizeInInches <= 7.5; 

只要你需要檢查它,只需檢查如下。

if(is7inchTablet){ 
    // do whatever for the 7-inch tablet 
}else{ 
    // do whatever for the 10-inch tablet 
} 
+0

+1謝謝你的快速回答。我知道​​我可以像你提到的那樣獲得設備的英寸數,但是爲這樣一個完整的應用程序的每個佈局創造條件需要很長的時間!你有更快的方法來解決這個問題嗎? – 2013-05-13 05:18:58

+0

只需要在一個基本活動或任何Util類中編寫此代碼並傳遞上下文。爲什麼你正在考慮在每個班級編寫這些代碼?我只在一個Util類中使用過,並檢查條件。讓我編輯一下.... – 2013-05-13 05:21:24

+0

如果我明白你的想法,每當我設置佈局時,我應該檢查此標誌?所以我應該檢查這個爲我的應用程序中的每個片段和類? – 2013-05-13 05:27:27

相關問題