1. 程式人生 > >Android O Settings原始碼流程分析(介面渲染篇)

Android O Settings原始碼流程分析(介面渲染篇)

Android O Settings 

Settings 渲染fragment(選單之間的跳轉)

在Activity中填充fragment的方法主要為SettingActivity中的SwitchToFragment()

給mFragmentClass賦值為AndroidManifest.xml中的<meta-data>標籤中key為 META_DATA_KEY_FRAGMENT_CLASS的的值

getMetaData() 方法

程式碼如下:

這個函式的主要作用就是從Activity標籤中獲取meta-data標籤中key為com.android.settings.FRAGMENT_CLASS的值,並將其賦值給mFragmentClass

這個私有變數。

構建一個intent併為其增加一個特殊的鍵值對

key:settings:show_fragment(EXTRA_SHOW_FRAGMENT),

value:mfragmentClass指定的類名

所以要先執行getMetaData,是因為mFragmentClass賦值是在getMeatData中進行的。

判斷佈局

判斷當前類是否為Settings.class或者是其他子選單,即進入方式為點選launcher上的圖示進入的主設定介面

接下來看launchSettingFragment()方法:

initialArguments通過賦值儲存了meta-data中指定的value值。

在 SwicthToFragment實現渲染

載入DashboardSummary(Fragment)顯示一級選單頁面;

其他的則載入子選單頁面;

switchToFragment()方法:

先判斷fragment是否合法,然後將方法中傳入的Fragment進行例項化,通過replace(fragment)進行渲染。

通過上面的分析,我們應該瞭解的事情是,AndroidManifest中每個Activity其meta-data中的資料都是很有用的,特別是com.android.settings.FRAGMENT_CLASS對應的鍵值對,指定了其所在Activity的真正佈局實現。其實,也是完成了從其他包的Activity向Settings中fragment的跳轉實現。