XPage 一个非常方便的Android Fragment页面框架

简介: XPage 一个非常方便的Android Fragment页面框架

XPage


微信截图_20220527215957.png


一个非常方便的fragment页面框架


关于我


微信截图_20220527220042.png


特点


支持assets下“corepage.json”静态配置Fragment页面信息。


支持Application中动态配置Fragment页面信息。


支持通过注解@Page的方式动态自动配置页面信息。


支持自定义Fragment页面信息配置。


支持4种默认Fragment页面切换动画。


支持Fragment页面间参数传递。


支持Fragment页面属性保存。


支持Fragment页面的onKeyDown、onFragmentResult等生命周期


支持Fragment和Fragment页面自由跳转以及数据交互。


支持导航栏通过注解的方式自动添加及设置。


1、演示(请star支持)


20180414022339764.gif


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.3'
  annotationProcessor 'com.github.xuexiangjys.XPage:xpage-compiler:2.1.3'
  //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;
    }








相关文章
|
4月前
|
物联网 区块链 vr&ar
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
|
1月前
|
算法 JavaScript Android开发
|
1月前
|
开发框架 Dart Android开发
安卓与iOS的跨平台开发:Flutter框架深度解析
在移动应用开发的海洋中,Flutter作为一艘灵活的帆船,正引领着开发者们驶向跨平台开发的新纪元。本文将揭开Flutter神秘的面纱,从其架构到核心特性,再到实际应用案例,我们将一同探索这个由谷歌打造的开源UI工具包如何让安卓与iOS应用开发变得更加高效而统一。你将看到,借助Flutter,打造精美、高性能的应用不再是难题,而是变成了一场创造性的旅程。
|
2月前
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
139 1
|
2月前
|
缓存 前端开发 Android开发
Android实战之如何截取Activity或者Fragment的内容?
本文首发于公众号“AntDream”,介绍了如何在Android中截取Activity或Fragment的屏幕内容并保存为图片。包括截取整个Activity、特定控件或区域的方法,以及处理包含RecyclerView的复杂情况。
29 3
|
3月前
|
前端开发 Java 数据库
💡Android开发者必看!掌握这5大框架,轻松打造爆款应用不是梦!🏆
在Android开发领域,框架犹如指路明灯,助力开发者加速应用开发并提升品质。本文将介绍五大必备框架:Retrofit简化网络请求,Room优化数据库访问,MVVM架构提高代码可维护性,Dagger 2管理依赖注入,Jetpack Compose革新UI开发。掌握这些框架,助你在竞争激烈的市场中脱颖而出,打造爆款应用。
436 3
|
3月前
|
编译器 Android开发 开发者
带你了解Android Jetpack库中的依赖注入框架:Hilt
本文介绍了Hilt,这是Google为Android开发的依赖注入框架,基于Dagger构建,旨在简化依赖注入过程。Hilt通过自动化的组件和注解减少了DI的样板代码,提高了应用的可测试性和可维护性。文章详细讲解了Hilt的主要概念、基本用法及原理,帮助开发者更好地理解和应用Hilt。
97 8