调研了一下目前的路由框架,ARouter(阿里的),ActivityRouter都使用了apt技术 编译时注解,个人想法是一口吃不成胖子,先做个比较实用的。 VpRouter路由框架主要应用于组件化开发中

设计目的

解耦

跨模块跳转

方便服务器配置schema,实现动态配置跳转目标

对外部提供远程访问的功能,实现跨应用调用响应

主要功能点

支持intent,http,schema三种跳转

路由表支持xml配置,可自定义,支持多路径

有拦截器

同时支持反射和隐式意图

支持结果回调

支持参数传递

链式调用

支持url模式传参

支持配置多个webview 实现指定非默认的webview启动url

支持配置多个prefix

重要的类

VpRouter 单例模式 入口类

AbsRouter 路由抽象类 主要代码

RouterTable 路由表

IRouterInterceptor(拦截器) IRouterResultCallback(结果回调)

类图

加载路由配置文件

//导入路由表 在application的onCreate中

VpRouter.load(getApplicationContext(),"router.xml");

路由配置文件

schema-prefix>

vf://

vipjr://

vpjr://

vpjr://h5.page

vpjr://h5.page

com.vip.hybrid.h5container.H5WebViewActivity

vpjr://h5.page.pay

com.vip.vpal.paydesk.support.h5.H5ContainerActivity

vpjr://paycode.entry

com.vip.vpal.paycode.presentation.activity.PaymentEntryActivity

vpjr://guide

com.vip.vf.android.GuideActivity

schema-prefix: 前缀

default-webview: 默认webview的schema

每一个rule节点代表一组路由规则,被解析成Rule对象

使用示例

//启动url 默认的webview

VpRouter.get().context(this).jump("http://www.vip.com?web_title=唯品会");

//指定webview启动

VpRouter.get().context(this).webView("vpjr://h5.page.pay").jump("http://www.vip.com");

//最复杂的使用

VpRouter.get()

.context(this)

.setInterceptor(new IRouterInterceptor() {

@Override

public boolean cancel() {

return false;//return true 会把本次跳转拦截掉

}

@Override

public Bundle addExtras() {

return null;//返回Bundle 会添加到Intent中

}

})

.setResultCallback(new IRouterResultCallback() {

@Override

public void onSuccess() {

//跳转成功的回调

}

@Override

public void onFail(RouterError error) {

//跳转失败的回调

LogUtils.d("error:"+error);

}

})

.extra("key","value")

.extra("key2","value2")

.flags(Intent.FLAG_ACTIVITY_SINGLE_TOP)

.jump("vf://paycode.entry?title=1111");//支持url传参

//最简单的使用

VpRouter.get().context(this).jump("vpjr://guide");

VpRouter.get().context(this).jumpForResult("vpjr://guide",REQUEST_CODE);//REQUEST_CODE>0

android 登录组件开发,Android组件化开发路由的设计相关推荐

  1. android中使用tmf框架插件化开发的问题

    android中使用tmf框架插件化开发的问题 最近项目开发使用的是tmf框架,其中大多数都是通过源生和H5交互的方式来实现的,大体实现和别的三方框架是一样的,需要按照tmf的官方文档引入一些lib和 ...

  2. android 登录注册动画,Android开发(14)——动画实战:炫酷登录

    本节内容 1.第三方库实现虚化 2.添加输入框和按钮 3.按钮状态 4.键盘隐藏 5.监听焦点改变的事件 6.手臂旋转动画 7.手掌和手臂动画 Demo简介 1.做一个炫酷登录的界面. image.p ...

  3. android登录界面扁平,Android EditText实现扁平化的登录界面

    先来看看登录界面写完的效果图 2 监听editText,可以一键清空 3 checkBox的颜色统一 代码 下面,说说如何实现这个界面的,我将代码全部贴出来. xmlns:app="http ...

  4. android登录操作代码,Android Studio实现第三方QQ登录操作代码

    来看看效果图吧 实现QQ登录了, 新建一个项目工程 ,然后把我们刚才下载的SDK解压将jar文件夹中的jar包拷贝到我们的项目libs中 导入一个下面架包就可以 项目结构如下 打开我们的清单文件And ...

  5. android 登录保存密码,android 如何实现登陆界面的记住密码功能

    今天 写了一个有关登录记住密码的列子 其实这个例子的关键使用到了AutoCompleteTextView 以及sharedPreference的两个关键知识点,大家知道 AutoCompleteTex ...

  6. android登录界面居中,Android TextView前加图标垂直居中第一行(仿大众点评购买须知/提示语)...

    如上图,需求在每条提示语句前加一个小圆点,我刚看到需求就想到用 android:drawableLeft 来做,可做完发现:当TextView内容为单行的时候是没有问题的,多行的时候,添加的这个dra ...

  7. android登录界面优化,Android 对登陆页面的美化(一)

    对登陆页面的美化(一) 对EditeText的美化 非常简单的实现浮动标签EditText: Android视图使用EditText之上,并提示EditText时填充文本. 核心代码不超过50行 先上 ...

  8. android登录加密传输,android环境下两种md5加密方式(示例代码)

    在平时开发过程中,MD5加密是一个比較经常使用的算法,最常见的使用场景就是在帐号注冊时,用户输入的password经md5加密后,传输至server保存起来.尽管md5加密经经常使用.可是md5的加密 ...

  9. 从qq for android登录,QQ for Android v8.0.0 企业版系统发布下载

    4月20日消息,昨天腾讯Android手机版QQ v8.0.0正式版发布,上一个正式版v7.9.9发布于3月12日,时隔37天又迎来了更新,本次升级主要是QQ换新颜,玩转QQ新精彩:语音消息进度拖动, ...

  10. android登录程序代码,android 应用软件注册与自动登录代码

    琢磨了很久 实现系统第一次启动显示欢迎及快速注册界面,注册成功后下次运行实现自动登录. 系统启动后首先进入系统主界面,读取用户名和密码,如果为空则直接跳转到快速注册界面,否则系统正常运行. 快速注册界 ...

最新文章

  1. ubuntu 目录结构
  2. matlab错误103 577,小编为你作答win7系统安装MATLAB出现 license manager error 103错误的还原教程...
  3. ASP.NET 3.5技术专题发布
  4. 今天的编程语言是怎么来的?
  5. .NET实现之(WebBrowser数据采集—续篇)
  6. 算法(第4版)Robert Sedgewick 刷题 第一章(1)
  7. 配置节处理程序时出错,未能加载文件或程序集
  8. python datetime.datetime 当前_关于datetime:如何让python显示当前时间(东部)
  9. python linux调试_python调试
  10. (37)FPGA三种基本逻辑门(非门)
  11. Python 迭代器和 C++ 迭代器,最大的不同竟然是......
  12. round()和trunc()函数的应用
  13. SpringContext扩展BeanFactory
  14. 2021-07-13 CNN池化理解学习
  15. Android框架揭秘-JAVA服务框架
  16. python学习之——假人配对
  17. linux 临界区保护方法,操作系统-信号量临界区保护,
  18. 正确开启用户实体行为分析(UEBA)番外篇:SIEM与UEBA
  19. 2022年美赛D题思路翻译数据参考文献
  20. python3 陌生的角落(1):基础语法

热门文章

  1. 【Netty】大白话 Netty 核心组件分析
  2. String.Index
  3. fcm算法c语言实现,基于特征权重的FCM算法研究及应用
  4. mysql ceill_MYSQL常用函数
  5. python 函数调用列表_在项目列表上调用一个函数的最简洁方法 - python
  6. 杀毒时能否使用计算机,电脑杀毒以后,程序无法使用,电脑杀毒后共享不能使用-...
  7. java程序的装载与检查_浅谈Java类型装载、连接与初始化
  8. c语言 文件名变量,C语言中,如何用根据不同的变量来更改文件名?
  9. 如何在计算机配置里面设置隐藏c盘,玩转电脑组策略(指定运行程序/隐藏C盘)
  10. micropython arduino选哪个好_玩转GPIO之ESP32基于MicroPython与Arduino的计算性能测试