2011-12-27 68 views
5

製作適用於Android 3.x的應用程序時,基本上可以檢查設備是否處於橫向模式以查看它是否可以並排放置多個片段。但這只是因爲你基本上保證了該設備是平板電腦。Android確定是否應使用多片段佈局

隨着兼容性庫和Android 4.0的推出,我無法想象我會認爲是一種'好'的方法來確定我是否可以擺脫並排片段或應該恢復到標準片段每'屏幕'。

在NewsReader示例應用程序中,Google爲每個常見分辨率都有一個特殊的值文件,每個分辨率都有一個布爾值,表示分辨率是否應該支持2片段佈局,但我認爲這種方式構思不佳。我能想到的唯一方法是檢查屏幕的大小(猜測它是平板電腦還是至少足夠大以至於不會破壞佈局),然後檢查方向。

因此,如果任何人有一個想法如何輕鬆和有效地檢查這一點,請讓我知道!

回答

6

實際上,你可以通過看屏幕尺寸類型(小,中,大等)以下:

getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK 

這會返回您可以檢查對任何下面的一個int:

Configuration.SCREENLAYOUT_SIZE_SMALL 
Configuration.SCREENLAYOUT_SIZE_NORMAL 
Configuration.SCREENLAYOUT_SIZE_LARGE 
Configuration.SCREENLAYOUT_SIZE_UNDEFINED 

然後你可以檢查方向,使用

getResources().getConfiguration().orientation 

將匹配任何的以下可能性

Configuration.ORIENTATION_PORTRAIT 
Configuration.ORIENTATION_LANDSCAPE 
Configuration.ORIENTATION_SQUARE 
Configuration.ORIENTATION_UNDEFINED 

有了這個,你基本上可以通過空間允許根據屏幕大小和方向將您的片段模擬多個視圖。

+0

甜蜜!這比我計劃做得更好......我覺得我應該記得這些類型的領域存在:) – 2012-01-02 07:43:54

+0

哈哈,我知道它是怎麼回事。 此外,忘記提及那些僅僅是我所針對的8個,SCREENLAYOUT_SIZE_XLARGE在9中添加,因此您可以對定位進行詳細說明。 – 2012-01-02 09:58:32

3

我創建了2個佈局,其中一個具有一個容器(ViewGroup)作爲片段,第二個佈局並排放置2個容器。我使用Android的資源文件夾結構來指定我想要多片段(2容器)佈局的場景。然後在代碼中,檢查是否存在第二個容器以確定您是否是多面板的。

isMultipanel = false; 
ViewGroup container2 = findViewById(R.id.container_2); 
if (container2 != null) { 
    isMultipanel = true; 
} 

儘量不要將它想象成平板電腦或手機,而要足夠寬或足夠寬以容納2個面板。

如果我想要在正常大小的設備(< = 5「)和大(5」 - 7「)的多面板上,只有當它們處於橫向時,但總是在xlarge(> 7」)上時,我會把多面板佈局文件:

  • 佈局,土地
  • 佈局大土地
  • 佈局XLARGE

然後,你不必做大小檢查代碼由於Android已經在爲您處理這個問題。

+0

我確實看到了這個選項,但我沒有按照正常的方式來做這件事(好或壞)。我從一個空白的線性佈局開始,並根據需要添加儘可能多的片段(最多兩個)。而且由於會有幾層我希望能夠通過的選項,所以當你在一個片段上按下選項(在多片段視圖的右側)時,左邊的片段就會落下(在背堆棧上),右邊的片段向左滑動,新的片段被添加到右邊。這很重要,因爲我無法從頭開始加載碎片。雖然也許我可以給父母一個身份證... – 2011-12-29 20:42:02