Google官方Fragment頁面框架Navigation和XPage開源框架的使用對比

視頻介紹

https://www.bilibili.com/vide...android

簡介

  • Navigation簡介

AndroidJetpack組件。Google官方對它的描述:git

今天,咱們宣佈推出Navigation組件, 做爲構建您的應用內界面的框架,重點是讓單 Activity 應用成爲首選架構。利用Navigation組件對 Fragment 的原生支持,您能夠得到架構組件的全部好處(例如生命週期和 ViewModel),同時讓此組件爲您處理 FragmentTransaction 的複雜性。此外,Navigation組件還可讓您聲明咱們爲您處理的轉場。它能夠自動構建正確的「向上」和「返回」行爲,包含對深層連接的完整支持,並提供了幫助程序,用於將導航關聯到合適的 UI 小部件,例如抽屜式導航欄和底部導航。
  • XPage簡介

一個很是方便的fragment頁面框架,X-Library系列重要組件。設計的初衷是但願能作一個通用的Activity做爲殼,Fragment做爲頁面填充展現,而且可以實現自由的切換和數據交互, 點擊瞭解XPage更多內容.github


特性對比

對比特性 Navigation XPage
註冊方式 XML註冊 json或者@Page註冊
參數傳遞 動態/靜態都支持 動態/靜態都支持
頁面切換動畫 動態支持 動態/靜態都支持
容器佔位數 支持多個佔位 僅支持一個佔位
便捷性 每次都須要編寫navigation導航 無需重複性代碼,一個@Page註解搞定
功能性 強大,支持多種使用方式 強大,提供多種經常使用組件和API
拓展性 優秀,方便拓展 由於追求便捷性,所以犧牲了部分拓展性
目標 去除Activity 去除Activity
生態 AndroidJetpack全家桶,Google官方出品 生態相對薄弱,可是也有X-Library系列支持

經過上面表格的對比能夠看出,這兩個框架各有特點。json

  • Navigation側重拓展性,適合中大型項目,方便項目的維護和拓展。
  • XPage側重便捷性,適合中小型項目,快速開發,尤爲適合新手、學生黨和自由開發等獨立開發者。

使用對比

如下我僅從集成和頁面跳轉兩個方面進行簡單的使用比較,更多使用內容能夠參閱本項目源碼。項目地址: https://github.com/xuexiangjys/Navigation_XPage

集成

  • Navigation

因爲是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的集成相對比較麻煩,不過相對也提供了一個模版工程,直接集成了XPage,拿到手就能夠用了。app

若是你想集成到本身的項目中,能夠參考XPage集成指南框架

頁面跳轉

頁面跳轉的話,XPage就相對簡單多了。
  • Navigation

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);
  • XPage

1.隨便建立一個類並繼承XPageFragment,而後在類上使用@Page進行註解

@Page
public class TestFragment extends XPageFragment {

...

}

2.而後在任意繼承了XPageActivity或者XPageFragment類中使用openPage便可。

// 使用類名打開
openPage(TestFragment.class);
// 使用頁面標識符打開
openPage("TestFragment");

更多使用對比

更多使用內容能夠參閱本項目源碼, 項目地址: https://github.com/xuexiangjys/Navigation_XPage .

微信公衆號

更多資訊內容,歡迎掃描關注個人我的微信公衆號!
在這裏插入圖片描述
相關文章
相關標籤/搜索