学习笔记(4)之ARouter的简单使用

ARouter用于组件和模块之间通信,集成步骤如下

①在build.gradle中做如下配置:

defaultConfig {
    javaCompileOptions {
        annotationProcessorOptions {
            arguments = [AROUTER_MODULE_NAME: project.getName()]
        }
    }
compile 'com.alibaba:arouter-api:1.4.1'
annotationProcessor 'com.alibaba:arouter-compiler:1.2.2'

②在Application类中初始化:

ARouter.init(CustomApplication.this);

③在目标页面的类名上添加注解:

@Route(path = "/app/TestActivity") //path路径至少是两级的

④在发起跳转的页面发起路由跳转:

ARouter.getInstance().build("/app/TestActivity").navigation();

简单的无参页面跳转就实现了.

⑤发起有参跳转:

在目标页面:

@Autowired(name = "name")
String name;
@Autowired(name = "age")
int age;

在跳转页面:

ARouter.getInstance()
        .build(Constant.ACTIVITY_URL_TEST)
        .withString("name" , "Alex")
        .withInt("age" , 18)
        .navigation();

在onCreate中做ARouter注入:

ARouter.getInstance().inject(this);

如果只是做无参页面跳转的话,不需要注入也可以完成,但是如果要传参的话,就必须做ARouter注入了.

目标页面不需要赋值,ARouter会直接完成赋值操作,只要直接调用就可以了.

如果跳转页面的key和目标页面的变量名如果相同注解的参数可以省略,如果不同,不能省略.

如果需要传类的话,需要先把对象序列化

⑥添加跳转动画

在旧版本添加转场动画:

ARouter.getInstance()
        .build(Constant.ACTIVITY_URL_TEST)
        .withTransition(R.anim.push_in_right , R.anim.push_out_left)
        .navigation();

在新版本添加转场动画:

if (Build.VERSION.SDK_INT >= 16) {
    ActivityOptionsCompat compat = ActivityOptionsCompat.
            makeScaleUpAnimation(v, v.getWidth() / 2, v.getHeight() / 2, 0, 0);

    ARouter.getInstance()
            .build(Constant.ACTIVITY_URL_TEST)
            .withOptionsCompat(compat)
            .navigation();
}

新版本转场动画在API<16时不支持,因为新版本的转场动画内部封装了共享元素,不支持低版本API

⑦回调onActivityResult:

ARouter.getInstance()

       .build(Constant.ACTIVITY_URL_TEST)

      .navigation(MainActivity.this , requestCode);

调用navigation的重载方法就可以了,其他的和正常跳转的实现是一样的.

补充:

①混淆配置

-keep public class com.alibaba.android.arouter.routes.**{*;}
-keep public class com.alibaba.android.arouter.facade.**{*;}
-keep class * implements com.alibaba.android.arouter.facade.template.ISyringe{*;}

 ②为了更好的管理path路径,建议把所以的path路径常量集中放在一个常量类里

public interface Constant {
    String ACTIVITY_URL_TEST = "/app/TestActivity";
    String ACTIVITY_URL_MAIN = "/app/MainActivity";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值