ARouter简单使用
Posted 若兰明月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARouter简单使用相关的知识,希望对你有一定的参考价值。
一、使用方法
1.1 导包
导包现在分java和kotlin, java的导包方法如下,在根moduel的build.gradle添加如下内容:
android
defaultConfig
...
javaCompileOptions
annotationProcessorOptions
arguments = [ moduleName : project.getName() ]
dependencies
// 替换成最新版本, 需要注意的是api,最新版本看文章开头
// 要与compiler匹配使用,均使用最新版可以保证兼容
compile 'com.alibaba:arouter-api:x.x.x'
annotationProcessor 'com.alibaba:arouter-compiler:x.x.x'
...
如果java使用的是apt,导入方法则是如下:
apply plugin: 'com.neenbedankt.android-apt'
buildscript
repositories
jcenter()
dependencies
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
//
apt
arguments
moduleName project.getName();
dependencies
//这里填写最新的版本看文章开始
compile 'com.alibaba:arouter-api:x.x.x'
apt 'com.alibaba:arouter-compiler:x.x.x'
...
kotlin的导包方法如下,在根moduel的build.gradle添加如下内容:
apply plugin: 'kotlin-kapt'
kapt
arguments
arg("moduleName", project.getName())
dependencies
//这里填写最新的版本,看文章开始
compile 'com.alibaba:arouter-api:x.x.x'
kapt 'com.alibaba:arouter-compiler:x.x.x'
...
说明:如果是组件化开发的话,比如有usercenter、messagecenter、maincenter,那么这几个module的build.gradle都需要apt这个导入
二、初始化
1、Applicaption中
//判断当只有当前app处于debug的时候才去打印日志
if (AppUtils.idDebug(this))
//ARouter初始化
ARouter.openLog() // 打印日志
ARouter.openDebug()
ARouter.init(this)
2、Activity中
override fun onCreate(savedInstanceState: Bundle?)
super.onCreate(savedInstanceState)
//ARouter注册 当然了这个也可以直接在Applicaption的onCreate()中直接初始化
ARouter.getInstance().inject(this)
三、简单使用
自定义一个跳转的URL地址类(kotlin)
object RouterPath
//用户模块
class UserCenter
companion object
const val PATH_LOGIN = "/userCenter/login"
//消息模块
class MessageCenter
companion object
const val PATH_MESSAGE_PUSH = "/messageCenter/push"
class MainCenter
companion object
const val MAIN_PATH = "/mainCenter/main"
在需要跳转的activity上注解如下(以LoginActivity为例)
@Route(path = RouterPath.UserCenter.PATH_LOGIN)
class LoginActivity:BaseActivity()
跳转只需要以下方式
ARouter.getInstance().build(RouterPath.UserCenter.PATH_LOGIN).navigation()
关于更详细的介绍可以去官网查看文档
四、遇到的问题
问题描述
我使用的是组件化开发,当使用ARouter进行跳转的时候(登录到主界面)会有一个当前App的桌面图标的一个动画,也就是这个issue
解决方法就是如下代码
ARouter.getInstance()
.build(RouterPath.MainCenter.MAIN_PATH)
//在这里添加这个动画 是为了当引入ARouter的时候进行activity跳转的时候会有一个默认的带有
//app图片的动画 下面的动画自己制定 或者给一个空的
.withTransition(R.anim.login_activity_in, R.anim.login_activity_out)
//这个navigation里面传入当前的**activity上下文**,要不然不起作用
.navigation(this)
空的anim动画文件如下
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="0"
/>
</set>
以上是关于ARouter简单使用的主要内容,如果未能解决你的问题,请参考以下文章