# XRouter
[![](https://jitpack.io/v/xuexiangjys/XRouter.svg)](https://jitpack.io/#xuexiangjys/XRouter)
[![api](https://img.shields.io/badge/API-14+-brightgreen.svg)](https://android-arsenal.com/api?level=14)
[![I](https://img.shields.io/github/issues/xuexiangjys/XRouter.svg)](https://github.com/xuexiangjys/XRouter/issues)
[![Star](https://img.shields.io/github/stars/xuexiangjys/XRouter.svg)](https://github.com/xuexiangjys/XRouter)
一个轻量级的Android路由框架,基于ARouter上进行改良,优化Fragment的使用,可结合XPage使用。
## 关于我
| 公众号 | 掘金 | 知乎 | CSDN | 简书 | 思否 | 哔哩哔哩 | 今日头条
|---------|---------|--------- |---------|---------|---------|---------|---------|
| [我的Android开源之旅](https://t.1yb.co/Irse) | [点我](https://juejin.im/user/598feef55188257d592e56ed/posts) | [点我](https://www.zhihu.com/people/xuexiangjys/posts) | [点我](https://xuexiangjys.blog.csdn.net/) | [点我](https://www.jianshu.com/u/6bf605575337) | [点我](https://segmentfault.com/u/xuexiangjys) | [点我](https://space.bilibili.com/483850585) | [点我](https://img.rruu.net/image/5ff34ff7b02dd)
## 特征
> 由于是借鉴了ARouter,拥有ARouer所有特征,并在此基础上加入了Fragment的路由。
* 支持直接解析标准URL进行跳转,并自动注入参数到目标页面中
* 支持多模块工程使用
* 支持添加多个拦截器,自定义拦截顺序
* 支持依赖注入,可单独作为依赖注入框架使用
* 支持InstantRun
* 支持MultiDex(Google方案)
* 映射关系按组分类、多级管理,按需初始化
* 支持用户指定全局降级与局部降级策略
* 页面、拦截器、服务等组件均自动注册到框架
* 支持多种方式配置转场动画
* 支持获取Fragment
* 支持在Fragment中使用Fragment的startActivityForResult启动Activity。
* 完全支持Kotlin以及混编
* 支持第三方 App 加固(使用 xrouter-plugin 实现自动注册)
## 典型应用
* 可结合[XPage--Fragment页面框架](https://github.com/xuexiangjys/XPage),实现应用的全景路由。
* 从外部URL映射到内部页面,以及参数传递与自动解析。
* 跨模块页面跳转,模块间解耦。
* 拦截跳转过程,处理登陆、埋点等逻辑。
* 跨模块API调用,通过控制反转来做组件解耦,实现组件化。
## 1、演示(请star支持)
![][demo-gif]
### Demo下载
[![downloads][download-svg]][download-url]
![][download-img]
## 2、如何使用
目前支持主流开发工具AndroidStudio的使用,直接配置build.gradle,增加依赖即可.
### 2.1、Android Studio导入方法,添加Gradle依赖
1.先在项目根目录的 build.gradle 的 repositories 添加:
```
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
```
2.再在项目根目录的 build.gradle 的 dependencies 添加xrouter-plugin插件:
```
buildscript {
···
dependencies {
···
classpath 'com.github.xuexiangjys.XRouter:xrouter-plugin:1.1.0'
}
}
```
3.在主项目的 build.gradle 中增加依赖并引用xrouter-plugin插件
```
apply plugin: 'com.xuexiang.xrouter' //引用xrouter-plugin插件实现自动注册
dependencies {
···
implementation 'com.github.xuexiangjys.XRouter:xrouter-runtime:1.1.0'
annotationProcessor 'com.github.xuexiangjys.XRouter:xrouter-compiler:1.1.0'
}
```
4.进行moduleName注册
```
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments = [ moduleName : project.getName() ]
}
}
}
```
5.在主项目的Application中初始化XRouter
```
private void initXRouter() {
if (isDebug()) { // 这两行必须写在init之前,否则这些配置在init过程中将无效
XRouter.openLog(); // 打印日志
XRouter.openDebug(); // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
}
XRouter.init(this);
}
private boolean isDebug() {
return BuildConfig.DEBUG;
}
```
### 2.2 在Library中使用XRouter的配置
1.进行moduleName注册
```
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments = [ moduleName : project.getName() ]
}
}
}
```
2.在项目的 build.gradle 中增加XRouter依赖。
```
dependencies {
···
implementation 'com.github.xuexiangjys.XRouter:xrouter-runtime:1.1.0'
annotationProcessor 'com.github.xuexiangjys.XRouter:xrouter-compiler:1.1.0'
}
```
### 2.3 在Kotlin项目中使用XRouter的配置
1.引用kotlin-kapt插件
```
apply plugin: 'kotlin-kapt'
```
2.进行moduleName注册
```
kapt {
arguments {
arg("moduleName", project.getName())
}
}
```
3.在项目的 build.gradle 中增加XRouter依赖。
```
dependencies {
···
implementation 'com.github.xuexiangjys.XRouter:xrouter-runtime:1.1.0'
kapt 'com.github.xuexiangjys.XRouter:xrouter-compiler:1.1.0'
}
```
## 3、XRouter使用
### 3.1、路由注册
* 在支持路由的页面上添加`@Router`注解(必选)。
* 这里的路径需要注意的是`至少需要有两级`,格式:/xx/xx。
```
@Router(path = "/test/activity")
public class YourActivity extend Activity {
...
}
```
### 3.2、路由导航
1.简单的应用内跳转
```
XRouter.getInstance().build("/test/activity2").navigation();
```
2.跳转ForResult
```
XRouter.getInstance()
.build("/test/activity2")
.navigation(this, 666);
```
3.携带参数进行跳转
```
XRouter.getInstance().build("/test/activity1")
.withString("name", "老王")
.withInt("age", 18)
.withBoolean("boy", true)
.withLong("high", 180)
.withString("url", "https://a.b.c")
.withParcelable("pac", testParcelable)
.withObject("obj", testObj)
.withObject("objList", objList)
.withObject("map", map)
.navigation();
```
4.添加跳转动画
```
//旧版本跳转动画
XRouter.getInstance()
.build("/test/activity2")
.withTransition(R.anim.slide_in_bottom, R.anim.slide_out_bottom)
.navigation(getActivity());
//新版本跳转动画
ActivityOptionsCompat compat = ActivityOptionsCompat.
makeScaleUpAnimation(getListView(), getListView().getWidth() / 2, getListView().getHeight() / 2, 0, 0);
XRouter.getInstance()
.build("/test/activity2")
.withOptionsCompat(compat)
.navigation();
```
5.添加路由跳转的监听
```
// 使用两个参数的navigation方法,可以获取单次跳转的结果
XRouter.getInstance().build("/test/1").navigation(this, new NavigationCallback() {
@Override
public void onFound(Postcard postcard) {
...
}
@Override
public void onLost(Postcard postcard) {
...
}
});
```
### 3.3、通过URI跳转
1.新建一个Activity用于监听Scheme事件,之后直接把uri传递给XRouter即可
```
public class SchemeFilterActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 直接通过XRouter处理外部Uri
Uri uri = getIntent().getData();
XRouter.getInstance().build(uri).navigation(this, new NavCallback() {
@Override
public void onArrival(Postcard postcard) {
finish();
}
});
}
}
```
2.在AndroidManifest.xml中注册`intent-filter`
```
<activity android:name=".activity.SchemeFilterActivity">
<!-- Scheme -->
<intent-filter>
<data
android:host="xuexiangjys.github.io"
android:scheme="xrouter"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="andro
没有合适的资源?快使用搜索试试~ 我知道了~
一个轻量级的Android路由框架,基于ARouter上进行改良,优化Fragment的使用,可结合XPage使用。.zip
共165个文件
java:82个
xml:26个
gradle:12个
0 下载量 95 浏览量
2024-08-29
10:12:17
上传
评论
收藏 5.35MB ZIP 举报
温馨提示
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助 【资源内容】:项目具体内容可查看/点击本页面下方的*资源详情*,包含完整源码+工程文件+说明(若有)等。【若无VIP,此资源可私信获取】 【本人专注IT领域】:有任何使用问题欢迎随时与我联系,我会及时解答,第一时间为您提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【适合场景】:相关项目设计中,皆可应用在项目开发、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面中 可借鉴此优质项目实现复刻,也可基于此项目来扩展开发出更多功能 #注 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担 2. 部分字体及插图等来自网络,若是侵权请联系删除,本人不对所涉及的版权问题或内容负法律责任。收取的费用仅用于整理和收集资料耗费时间的酬劳 3. 积分资源不提供使用问题指导/解答
资源推荐
资源详情
资源评论
收起资源包目录
一个轻量级的Android路由框架,基于ARouter上进行改良,优化Fragment的使用,可结合XPage使用。.zip (165个子文件)
xrouter_demo.apk 2.07MB
gradlew.bat 2KB
xrouter.gif 3.46MB
.gitignore 241B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
versions.gradle 6KB
build.gradle 3KB
localRepositoryUpload.gradle 3KB
build.gradle 2KB
build.gradle 2KB
build.gradle 1KB
JitPackUpload.gradle 1KB
build.gradle 977B
build.gradle 776B
build.gradle 748B
build.gradle 652B
settings.gradle 132B
gradlew 5KB
RegisterCodeGenerator.groovy 6KB
RegisterTransform.groovy 5KB
ScanUtils.groovy 4KB
ScanSetting.groovy 2KB
RegisterPlugin.groovy 2KB
Logger.groovy 1KB
schame-test.html 2KB
gradle-wrapper.jar 52KB
_XRouter.java 23KB
RouterProcessor.java 23KB
Postcard.java 21KB
LogisticsCenter.java 17KB
AutoWiredProcessor.java 17KB
InterceptorProcessor.java 11KB
ClassUtils.java 11KB
InterceptorServiceImpl.java 7KB
XRLog.java 7KB
RouteInfo.java 6KB
XRouter.java 6KB
BaseFunctionFragment.java 4KB
HighGradeFragment.java 4KB
LogcatLogger.java 4KB
DefaultPoolExecutor.java 4KB
Consts.java 4KB
Test1Interceptor.java 3KB
Test1Activity.java 3KB
TextUtils.java 3KB
PackageUtils.java 3KB
NavigationTestFragment.java 3KB
TypeUtils.java 3KB
AutoWiredServiceImpl.java 3KB
BaseSettingFragment.java 2KB
DefaultThreadFactory.java 2KB
ServiceFoundFragment.java 2KB
MainFragment.java 2KB
Warehouse.java 2KB
Consts.java 2KB
RouteType.java 2KB
Test3Activity.java 2KB
MultipleModuleFragment.java 2KB
TestParcelable.java 2KB
App.java 2KB
Router.java 2KB
Logger.java 2KB
TestInterceptor90.java 2KB
MapUtils.java 2KB
BlankFragment.java 2KB
Test2Activity.java 1KB
ToastDegradeService.java 1KB
Test4Activity.java 1KB
CancelableCountDownLatch.java 1KB
NavigationCallback.java 1KB
AutoWired.java 1KB
JsonSerializationService.java 1KB
ExampleInstrumentedTest.java 1KB
SchemeFilterActivity.java 1KB
ExampleInstrumentedTest.java 1KB
Interceptor.java 1KB
SerializationService.java 1KB
HelloServiceImpl.java 1KB
TestWebview.java 1KB
NavCallback.java 1KB
UniqueKeyTreeMap.java 1KB
SingleService.java 1KB
IInterceptor.java 1KB
TypeWrapper.java 1KB
InterceptorCallback.java 1KB
PathReplaceService.java 1KB
InterceptorService.java 1KB
MainActivity.java 1KB
DegradeService.java 1KB
TestModule2Activity.java 1KB
TestNormalActivity.java 1KB
TestModuleActivity.java 1KB
ExampleUnitTest.java 1KB
ILogger.java 1024B
共 165 条
- 1
- 2
资源评论
热爱技术。
- 粉丝: 2479
- 资源: 7862
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Python和Selenium的jksb系统健康申报助手.zip
- (源码)基于HiEasyX库的学习工具系统.zip
- (源码)基于JSP+Servlet+JDBC的学生宿舍管理系统.zip
- (源码)基于Arduino和Raspberry Pi的自动化花园系统.zip
- (源码)基于JSP和Servlet的数据库管理系统.zip
- (源码)基于Python的文本相似度计算系统.zip
- (源码)基于Spring Boot和Redis的高并发秒杀系统.zip
- (源码)基于Java的Web汽车销售管理系统.zip
- (源码)基于Python的智能家居系统.zip
- (源码)基于Python和CPM模型的中文文本生成系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功