https://www.bilibili.com/vide...android
AndroidJetpack組件。Google官方對它的描述:git
今天,咱們宣佈推出Navigation組件,
做爲構建您的應用內界面的框架,重點是讓單 Activity 應用成爲首選架構
。利用Navigation組件對 Fragment 的原生支持,您能夠得到架構組件的全部好處(例如生命週期和 ViewModel),同時讓此組件爲您處理 FragmentTransaction 的複雜性。此外,Navigation組件還可讓您聲明咱們爲您處理的轉場。它能夠自動構建正確的「向上」和「返回」行爲,包含對深層連接的完整支持,並提供了幫助程序,用於將導航關聯到合適的 UI 小部件,例如抽屜式導航欄和底部導航。
一個很是方便的fragment頁面框架,X-Library系列重要組件。設計的初衷是但願能作一個通用的Activity做爲殼,Fragment做爲頁面填充展現,而且可以實現自由的切換和數據交互, 點擊瞭解XPage更多內容.github
對比特性 | Navigation | XPage |
---|---|---|
註冊方式 | XML註冊 | json或者@Page註冊 |
參數傳遞 | 動態/靜態都支持 | 動態/靜態都支持 |
頁面切換動畫 | 動態支持 | 動態/靜態都支持 |
容器佔位數 | 支持多個佔位 | 僅支持一個佔位 |
便捷性 | 每次都須要編寫navigation導航 | 無需重複性代碼,一個@Page註解搞定 |
功能性 | 強大,支持多種使用方式 | 強大,提供多種經常使用組件和API |
拓展性 | 優秀,方便拓展 | 由於追求便捷性,所以犧牲了部分拓展性 |
目標 | 去除Activity | 去除Activity |
生態 | AndroidJetpack全家桶,Google官方出品 | 生態相對薄弱,可是也有X-Library系列支持 |
經過上面表格的對比能夠看出,這兩個框架各有特點。json
如下我僅從集成和頁面跳轉兩個方面進行簡單的使用比較,更多使用內容能夠參閱本項目源碼。項目地址: https://github.com/xuexiangjys/Navigation_XPage
因爲是Google出品,全部很是方便,只須要你建立項目(New Project)的時候,選擇"Basic Activity"的選項,工程會自動幫你增長Navigation的依賴。以下圖:微信
若是你不想建立新的項目,也很簡單,只須要在項目中增長以下依賴:架構
dependencies { ... implementation 'androidx.navigation:navigation-fragment:2.3.0' implementation 'androidx.navigation:navigation-ui:2.3.0' }
XPage的集成相對比較麻煩,不過相對也提供了一個模版工程,直接集成了XPage,拿到手就能夠用了。app
若是你想集成到本身的項目中,能夠參考XPage集成指南。框架
頁面跳轉的話,XPage就相對簡單多了。
1.在res/navigation/中建立navigation導航圖。ide
2.在Activity的佈局中增長Fragment佔位容器。下面是使用NavHostFragment
進行佔位。佈局
<fragment android:id="@+id/nav_host_fragment" android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="0dp" android:layout_height="0dp" app:defaultNavHost="true" app:navGraph="@navigation/nav_graph" />
3.使用NavController
進行頁面導航。
NavHostFragment.findNavController(FirstFragment.this) .navigate(R.id.action_FirstFragment_to_SecondFragment);
1.隨便建立一個類並繼承XPageFragment
,而後在類上使用@Page進行註解
@Page public class TestFragment extends XPageFragment { ... }
2.而後在任意繼承了XPageActivity
或者XPageFragment
類中使用openPage
便可。
// 使用類名打開 openPage(TestFragment.class); // 使用頁面標識符打開 openPage("TestFragment");
更多使用內容能夠參閱本項目源碼, 項目地址: https://github.com/xuexiangjys/Navigation_XPage .
更多資訊內容,歡迎掃描關注個人我的微信公衆號!