登录页客制化
1.0 需求分析
1.1 介绍
当前登录页的客制化需求还是比较多的,当前想将登录功能进行改造,让其适合大部分客制化需求。
- 自定义:对外提供登录管理接口,让客户自己定义登录页,然后调用凌云提供的登录方法进行登录。
- 构造布局:对外提供修改布局的方法,让客户根据提供的构造布局类,进行布局界面。
- 替换布局:对外提供当前布局的
xml
文件,让用户自己修改元素位置。 - 多套布局:提供多套登录布局,打包的时候动态替换。
1.2 优劣对比
1.2.1 自定义
对外提供:账号密码登录、验证码登录、第三方登录方法。
优势:用户可以随意修改,只需要在登录时调用对用登录方法就行了。
劣势:需要用户自己开发登录页,操作相对复杂。
1.2.2 构造布局
对外提供:修改布局的构造类,提供如应用图标、标题、登录按钮、第三方按钮的位置、大小、颜色等变量。
优势:用户可以在打开登录页的时候,对登录页进行动态编辑,安卓和
ios
可以提供相同的修改方式。劣势:界面比较死板,改动不可能太大。
1.2.3 替换布局
对外提供:提供当前登录页的
xml
布局,让用户可以随意修改布局。
优势:相比较来说更加方便,可以随意修改布局中元素的位置和样式。
劣势:需要有一定的开发布局经验,客制化开发难度相对其它几个会大一些。
1.2.4 多套布局
对外提供:提供多套登录页面的布局,如:企业云工作台、园圈、凌云、政务。
优势:客制化难度最低,开发人员只需要填写使用哪个界面即可,无需二次开发。
劣势:界面比较死板,只能使用凌云提供的登录页,无法满足所有需求。
1.3 推荐方案
使用构造布局进行改造
使用方式:
- 登录接口还是要暴露出去,满足部分已经存在登录界面的需求;
- 使用构造模式,对布局、文字样式等进行一系列的封装;
- 在资源文件中定义修改登录页的
json
资源文件; - 在启动页对
json
文件进行解析,然后设置到登录页的构造器中,对登录页进行动态调整。
优点:可以直接在资源文件中对登录有进行统一的调整,后面可以在资源管理工具中进行维护。
需求实现
1.0 简介
样式关系图
2.0 ViewStyle
属性 | 类型 | 参数 | 描述 |
---|---|---|---|
background |
String |
默认空 | 背景颜色 |
round |
String |
默认空 | 圆角 |
margin |
String |
默认空 | 外边距 |
padding |
String |
默认空 | 内边距 |
center |
String |
默认空,0:居中;1:横向居中;2:垂直居中 | 居中类型 |
height |
String |
默认空 | 高度 |
width |
String |
默认空 | 宽度 |
isShow |
String |
0:显示;1:隐藏;2:占位隐藏 | 是否显示 |
event |
EventStyle |
默认空 | 点击事件 |
3.0 EventStyle
属性 | 类型 | 参数 | 描述 |
---|---|---|---|
itemCode |
String |
默认空 | 点击类型 |
url |
String |
默认空 | H5 地址 |
appId |
String |
默认空 | 小程序ID |
//itemCode
const val sms = 101 //短信登录
const val pwd = 102 //密码登录
const val alipay = 103 //支付宝登录
const val wechat = 104 //微信登录
const val agreement = 105 //授权信息
const val text = 106 //测试地址设置
4.0 ImageStyle
属性 | 类型 | 参数 | 描述 |
---|---|---|---|
icon |
String |
默认空 | 默认图标 |
selectIcon |
String |
默认空 | 选中图标 |
isSelected |
boolean |
false |
是否选中 |
scale |
String |
默认:0;0:拉伸撑满;非零:切图居中撑满 | 图片显示样式 |
5.0 ButtonStyle
属性 | 类型 | 参数 | 描述 |
---|---|---|---|
textStyle |
TextStyle |
默认空 | 按钮字体样式 |
selectBackground |
String |
默认空 | 按钮选中背景 |
6.0 TextStyle
属性 | 类型 | 参数 | 描述 |
---|---|---|---|
text |
String |
默认空 | 文本 |
color |
String |
默认空 | 字体颜色 |
selectColor |
String |
默认空 | 选中字体颜色 |
size |
String |
默认空 | 字体大小 |
body |
String |
1:加粗;非1不加粗 | 是否加粗 |
rows |
String |
默认显示一行 | 文本行数 |
lineSpacing |
String |
默认标准间隔 | 字体行距 |
deleteLine |
String |
1:显示删除线;非1不显示 | 删除线 |
文档更新时间: 2022-02-08 18:00 作者:陈冕