XPage的使用示范例子


代碼地址如下:
http://www.demodashi.com/demo/12975.html

XPage

[![api][apisvg]][api]

一個非常方便的fragment頁面框架

特點

  • 支持assets下“corepage.json”靜態配置Fragment頁面信息。
  • 支持Application中動態配置Fragment頁面信息。
  • 支持通過注解@Page的方式動態自動配置頁面信息。
  • 支持自定義Fragment頁面信息配置。
  • 支持4種默認Fragment頁面切換動畫。
  • 支持Fragment頁面間參數傳遞。
  • 支持Fragment頁面屬性保存。
  • 支持Fragment頁面的onKeyDown、onFragmentResult等生命周期
  • 支持Fragment和Fragment頁面自由跳轉以及數據交互。
  • 支持導航欄通過注解的方式自動添加及設置。

1、演示

2、如何使用

目前支持主流開發工具AndroidStudio的使用,直接配置build.gradle,增加依賴即可.

2.1、Android Studio導入方法,添加Gradle依賴

1.先在項目根目錄的 build.gradle 的 repositories 添加:

allprojects {
     repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

2.然后在dependencies添加:

dependencies {
  ...
  //XPage
  implementation 'com.github.xuexiangjys.XPage:xpage-lib:2.1.4'
  annotationProcessor 'com.github.xuexiangjys.XPage:xpage-compiler:2.1.4'
  //butterknife的sdk
  implementation 'com.jakewharton:butterknife:8.4.0'
  annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
  //leak
  debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
  releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
  testImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'

}

3.進行moduleName注冊

defaultConfig {
    ...

    javaCompileOptions {
        annotationProcessorOptions {
            arguments = [ moduleName : project.getName() ]
        }
    }
}

2.2、頁面注冊

2.2.1、assets中注冊

在assets文件夾中新建“corepage.json“,然后進行如下配置:

[
  {
    "name": "測試頁面1",
    "classPath": "com.xuexiang.xpagedemo.fragment.TestFragment1",
    "params": ""
  },
  {
    "name": "測試頁面2",
    "classPath": "com.xuexiang.xpagedemo.fragment.TestFragment2",
    "params": {
      "key1":"這是參數1的值",
      "key2":"這是參數2的值"
    }
  },
]

2.2.2、Application中注冊

1.手動動態進行頁面注冊

PageConfig.getInstance().setPageConfiguration(new PageConfiguration() {
    @Override
    public List<PageInfo> registerPages(Context context) {
        List<PageInfo> pageInfos = new ArrayList<>();
        addPageInfoAndSubPages(pageInfos, MainFragment.class);
        pageInfos.add(PageConfig.getPageInfo(DateReceiveFragment.class));
        return pageInfos;
    }
}).debug("PageLog").init(this);

2.自動進行頁面注冊

使用apt自動生成的頁面注冊配置類 "moduleName"+PageConfig 的getPages()進行注冊。

PageConfig.getInstance().setPageConfiguration(new PageConfiguration() {
    @Override
    public List<PageInfo> registerPages(Context context) {
        return AppPageConfig.getInstance().getPages();
    }
}).debug("PageLog").init(this);

2.3、頁面跳轉

2.3.1、攜帶數據

    Bundle params = new Bundle();
    switch(position) {
        case 0:
            params.putBoolean(DateReceiveFragment.KEY_IS_NEED_BACK, false);
            int id = (int) (Math.random() * 100);
            params.putString(DateReceiveFragment.KEY_EVENT_NAME, "事件" + id);
            params.putString(DateReceiveFragment.KEY_EVENT_DATA, "事件" + id + "攜帶的數據");
            openPage(DateReceiveFragment.class, params);
            break;
        case 1:
            params.putBoolean(DateReceiveFragment.KEY_IS_NEED_BACK, true);
            openPageForResult(DateReceiveFragment.class, params, 100);
            break;
        default:
            break;
    }

2.3.2、頁面切換動畫

    switch(position) {
        case 0:
            openPage(TestFragment.PAGE_NAME, null, CoreAnim.none);//沒有動畫
            break;
        case 1:
            openPage(TestFragment.PAGE_NAME, null, CoreAnim.present);//由下到上動畫
            break;
        case 2:
            openPage(TestFragment.PAGE_NAME, null, CoreAnim.slide);//從左到右動畫
            break;
        case 3:
            openPage(TestFragment.PAGE_NAME, null, CoreAnim.fade);//漸變
            break;
        case 4:
            openPage(TestFragment.PAGE_NAME, null, CoreAnim.zoom);//放大
            break;
        default:
            break;
    }

3 項目文件截圖

特別感謝

https://github.com/lizhangqu/CorePage/

聯系方式

XPage的使用示范例子

代碼地址如下:
http://www.demodashi.com/demo/12975.html

注:本文著作權歸作者,由demo大師代發,拒絕轉載,轉載需要作者授權


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM