2013-03-22 58 views
1

我正在開發具有片段的典型平板電腦應用程序:左側的元素列表和右側的內容。對於智能手機版本,我只顯示一個帶有元素列表的片段,對於平板電腦,我會顯示帶有列表和內容的2個片段。爲縱向/橫向創建7英寸平板電腦的特定佈局,更改佈局

爲了處理屏幕旋轉,我正在處理我的應用程序的旋轉。當用戶旋轉屏幕和我所展示的圖像或右側一些文字,我的表現出來全屏:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    Log.i(TAG, "onConfigurationChanged"); 
    if(MainFragmentActivity.isTablet) 
    { 
     FragmentManager fm = getSupportFragmentManager(); 
     if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE && !frameTabs.isShown()) //Show again the tabs fragment 
     { 
      Utils.goNormalScreen(this); 
      frameTabs.setVisibility(View.VISIBLE); 
     } 
     else if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT && (fm.findFragmentByTag(Utils.SHOW_IMAGE_TAG) != null || fm.findFragmentByTag(Utils.SHOW_TEXT_TAG) != null 
       || fm.findFragmentByTag(Utils.SHOW_WEB_TAG) != null)) //Hide tabs fragment 
     { 
      Log.i(TAG, "Detected showing image"); 
      Utils.goFullScreen(this); 
      frameTabs.setVisibility(View.GONE); 
     } 
    } 
} 

的問題是7寸平板電腦:在縱向模式我想展示智能手機版本(帶有列表的1個片段),以及帶有2個片段的平板電腦版本。

因此,在onConfigurationChanged()我需要檢測7英寸平板電腦,並重新創建活動,以改變佈局,是不是?怎麼做?有沒有其他更好的方法來使它工作?

我應該重新創建從服務器(ListView)再次獲取所有數據的活動,還是將數據保存到包中並在旋轉時重用它會更好?

回答

3

首先,停止處理配置更改,然後將2片段佈局放置在layout-sw600dp-land中,並讓其他人保持原樣。現在,Android將決定在旋轉時自動使用該佈局。

+0

問題是,只要我知道,我真的需要處理配置更改,如果我想在用戶在顯示圖像/文本時旋轉設備時全屏顯示。有沒有其他的方法來獲得這個功能?如果我處理旋轉,那麼我必須手動更改7英寸平板電腦的佈局。 – 2013-04-03 07:53:35

+0

換句話說,我想手動處理除7英寸平板電腦以外的所有情況下的屏幕旋轉。在這種情況下,我只想顯示不同的佈局。有可能這樣做嗎? – 2013-04-04 13:43:28