Android O Settings原始碼流程分析(靜態介面篇)
Android O Settings
Settings(該程式碼是基於專案的,與原始碼略有出入)
路徑: packages/apps/Settings
主介面和子介面
從清單檔案AndroidManifest.xml中入手:
setting的主介面的Activity為 Settings
Settings.java類看,除了大量靜態類繼承SettingsActivity,就沒什麼東西了。
setting的子介面Activity為 SubSettings
SubSttings java 裡有重寫了兩個方法 向上導航和判斷是否有效fragment,還有一個靜態內部類繼承本身。
Settings與SubSttings 都是空Activity(不繼承7大生命週期)
Settings與SubSttings 都繼承於SettingsActivity
SettingsActivity繼承自SettingsDrawerActivity,而SettingsDrawerActivity是在SettingLib中定義,SettingsDrawerActivity名稱是沿用N版本的名字,但是側滑欄功能在O版本上已經移除了。
主要分析的是SettingsActivity的onCreate()方法;
佈局載入:
主介面的layout為 :settings_main_dashboard.xml:
主介面佈局中包含兩個FrameLayout,一個是頂部搜尋欄,還有下面的主要內容(顯示一級選單)
參考7.0版本主介面佈局:
子介面的layout為 :settings_main_perfs.xml:
子介面由一個LinearLayout和一個RelativeLayout組成。RelativeLayout預設是隱藏的。
介面如下:
Settings介面:
主介面使用DashboardSummary(Fragment)進行填充
子介面則使用各自的Fragment,並設定各自的主題。