1. 程式人生 > >讓一份程式同時適應手機和平板,動態載入佈局的技巧

讓一份程式同時適應手機和平板,動態載入佈局的技巧

  由於平板電腦的螢幕足夠大,我們會發現很多應該採用了雙頁模式即程式在左側面板上顯示一個包含子項的列表,右側面板顯示內容,而手機螢幕一次只能顯示一頁內容,因此兩個頁面需要分開顯示。
  為了讓碎片發揮更大的空間,我們可以考慮如何才能讓程式根據裝置的螢幕大小和解析度在執行的時候動態載入哪個佈局,那就是使用限定符
  比如:
  單頁模式:res/layout/activity_main,xml (只顯示列表頁)
  雙頁模式:res/layout-large/activity_main.xml(按比例同時顯示列表頁和內容頁即包含兩個碎片)
  其中large就是一個限定符,那些螢幕被認為是large的裝置就會自動載入layout-large資料夾下的佈局,而小螢幕的裝置則會載入layout資料夾下的佈局。

  • 根據螢幕大小,有以下限定符:
    small:給小螢幕裝置提供資源
    normal:給中等螢幕裝置提供資源
    large:給大螢幕裝置提供資源
    xlarge:給超大螢幕裝置提供資源
  • 根據螢幕解析度,有以下限定符:
    ldpi:給低解析度裝置提供資源(120dpi以下)
    mdpi:給中等解析度裝置提供資源(120dpi~160dpi)
    hdpi:給高解析度裝置提供資源(160dpi~240dpi)
    xhdpi:給超高解析度裝置提供資源(240dpi~320dpi)
    xxhdpi:給超超高解析度裝置提供資源(320dpi~480dpi)
  • 根據螢幕方向,有以下限定符:
    land:給橫屏裝置提供資源
    port:給豎屏裝置提供資源

      新問題
      上面的示例中large限定符到底多大,為了更加靈活地為不同的裝置載入佈局,這時可以使用更加具體的最小寬度(smallest-width)限定符。
      最小寬度限定符允許我們對螢幕的寬度指定一個最小值(單位:dp),然後以這個最小值為臨界點,螢幕寬度大於這個值的裝置載入一個佈局,螢幕寬度小於這個值的裝置載入另一個佈局。
      舉例:res/layout-sw500dp/activity_main.xml
      說明:當程式執行在螢幕寬度大於500dp的裝置上時,會載入layout-sw500dp/activity_main.xml佈局,當程式執行在螢幕寬度小於500dp的裝置上時,會載入預設的layout/activity_main.xml佈局。