美文网首页Android UI
Aroute之基础使用

Aroute之基础使用

作者: Method | 来源:发表于2021-07-01 23:27 被阅读0次

    是什么

    简单的说就是替代startActivity(),可以在项目组件化中实现不同module的界面通讯。

    应用场景

    • 从外部URL映射到内部页面,以及参数传递与解析
    • 跨模块页面跳转,模块间解耦
    • 拦截跳转过程,处理登陆、埋点等逻辑
    • 跨模块API调用,通过控制反转来做组件解耦

    基本配置

    添加依赖

    apply plugin: 'kotlin-kapt'
    //每个使用到路由的组件必须加
    kapt {
        arguments {
            arg("AROUTER_MODULE_NAME", project.getName())
        }
    }
    
    dependencies {
        compile 'com.alibaba:arouter-api:x.x.x'
        //每个使用到路由的组件必须加
        kapt 'com.alibaba:arouter-compiler:x.x.x'
        ...
    }
    

    初始化

    if (isDebug()) {           // 这两行必须写在init之前,否则这些配置在init过程中将无效
        ARouter.openLog();     // 打印日志
        ARouter.openDebug();   // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
    }
    ARouter.init(mApplication); // 尽可能早,推荐在Application中初始化
    

    关闭路由

    ARouter.getInstance().destroy();
    

    基础功能

    应用内跳转

    //跳转
    ARouter.getInstance().build(RoutePath.Main.PAGE_SECOND_ACTIVITY).navigation()
    //配置路由
    @Route(path = RoutePath.Main.PAGE_SECOND_ACTIVITY)
    class SecondActivity:BaseActivity<AcySecondBinding>() {}
    

    携带参数跳转

    序列化推荐

    ARouter.getInstance().build(RoutePath.Main.PAGE_SECOND_ACTIVITY)
                    .withString(ArouteKey.MAIN.KEY_STRING,"hello aroute")
                    .withParcelable(ArouteKey.MAIN.KEY_PARCELABLE,User("张三"))
                    .navigation()
    
    val stringExtra = intent.getStringExtra(ArouteKey.MAIN.KEY_STRING)
    val user = intent.getParcelableExtra<User>(ArouteKey.MAIN.KEY_PARCELABLE)
    

    startActivityForResult

    ARouter.getInstance()
                .build(RoutePath.Main.PAGE_SECOND_ACTIVITY)
                .navigation(this,1000)
    
    val intent = Intent().apply {
                 putExtra(ArouteKey.MAIN.KEY_STRING,"Second Back")
             }
    setResult(1001,intent)
    

    获取Fragment实例

    val fragment = ARouter.getInstance()
    .build(RoutePath.ModuleA.PAGE_MODULEA_BLANKFRAGMENT)
    .navigation() as Fragment
    
    @Route(path = RoutePath.ModuleA.PAGE_MODULEA_BLANKFRAGMENT)
    class BlankFragment:Fragment() {}
    

    配置转场动画

    if (Build.VERSION.SDK_INT >= 16) {
         ActivityOptionsCompat compat = ActivityOptionsCompat.
                 makeScaleUpAnimation(v, v.getWidth() / 2, v.getHeight() / 2, 0, 0);
    
         ARouter.getInstance()
                 .build("/test/activity2")
                 .withOptionsCompat(compat)
                 .navigation();
     } else {
         Toast.makeText(this, "API < 16,不支持新版本动画", Toast.LENGTH_SHORT).show();
     }
    

    相关文章

      网友评论

        本文标题:Aroute之基础使用

        本文链接:https://www.haomeiwen.com/subject/dmnsultx.html