android json2view,GitHub - Aarthas/android_Json2view: Json2view是一个简单的库,能将JSON文件转化为Android Views 所以你可...

根据json数据创建view

简介

json2view is a simple library that can convert a compatible JSON file to an Android view

so you can load dynamically the view in your Android app without the need to update the APK.

根据https://github.com/Avocarrot/json2view 自己手动修改成自己所需要的数据结构

使用场景

1. 使用json创建本地视图,json文件放置在assets,可以使用子文件夹,分门别类管理。

2. 根据服务器返回的json view数据动态创建视图,若需要界面的更改,一定程度上更改服务器代码即可更改界面。

3. 搭建静态服务器,请求json文件渲染本地视图,可以达到更改json,一秒钟更新界面,达到敏捷开发的目的。

4. 搭配使用热更新框架,如andfix,json2view来改变视图,andfix更改逻辑,可以动态改变整个activity的大多数需求。

5. 后期若加上flexboxlayout的布局,Android和ios 各有一个flexboxlayout的布局库,ios再实现一套json2view的引擎, 可以达到写一次json文件,就可以产生ios和Android两个原生界面,且布局相差不大,减少开发工作量。

优缺点

优点:

1. 搭建静态服务器,请求json文件渲染本地视图,可以达到更改json,一秒钟更新界面,达到敏捷开发的目的。

2. json数据若服务器返回,则可以动态改变视图界面。

缺点:

1. 不能更改逻辑,只有视图功能。

2. json文件没有提示功能。

3. 暂不支持list。

4. 目前支持的功能比较简单,用作简单的展示界面或简单逻辑的界面,不能应用于逻辑复杂的界面。

使用

1.创建json文件

{

"head": {

"process": "AndroidLayout"

},

"template": {

"view": "verticalLayout",

"width": "match",

"height": "match",

"background": "#f6f6f6",

"child": [

{

"view": "TextView",

"text": "页面的简单使用",

"width": "120dp",

"height": "30dp",

"textColor": "#444444",

"padding": "16dp",

"textSize": "16"

}

]

}

}

2.把json bean 转为View

XView xview = gson.fromJson(jsonString, XView.class);

View contentView = XViewMain.startProcess(context, xview );

setContentView(contentView);

组件

View 组件

属性

Type

说明

可选值

id

int

id >=1

tag

String

padding

String

默认单位dp,10dp,10px

background

String

网络图片

onClick

String

方法名

visibility

String

gone visible invisible

ViewGroup 属性

属性

Type

说明

可选值

padding

String

默认单位dp , 10dp,10px

TextView 属性

属性

Type

说明

可选值

text

String

textColor

String

#123443

textSize

String

默认单位sp

maxLine

int

hint

String

hintColor

String

lineSpace

String

android:lineSpacingExtra="4dp"

gravity

String

大小写不敏感

CENTER_VERTICAL等

ImageView 属性

属性

Type

说明

可选值

src

String

网络图片

scaleType

String

默认FIT_XY

MATRIX,FIT_XY,FIT_START,FIT_CENTER等

FrameLayout

属性

Type

说明

可选值

gravity

String

大小写不敏感

CENTER_VERTICAL等

LinearLayout 分为 VerticalLayout ,HorizonLayout

属性

Type

说明

可选值

gravity

String

大小写不敏感

CENTER_VERTICAL等

weight

int

RelativeLayout

属性

Type

说明

可选值

layout_alignParentLeft

bool

layout_alignParentTop

bool

layout_alignParentRight

bool

layout_alignParentBottom

bool

layout_centerInParent

bool

layout_centerHorizontal

bool

layout_centerVertical

bool

below

String

toLeftOf

String

toRightOf

String

above

String

alignLeft

String

alignRight

String

alignTop

String

alignBottom

String

alignBaseline

String

ScrollView

属性

Type

说明

可选值

无属性

int

默认scrollbar=none

扩展字段

属性

Type

说明

可选值

name

String

组件的名字,把RelativeLayout的相关越约束用name代替id

child

数组

子控件列表

data

数组

组件的数据

gravity 取值TOP,BOTTOM,LEFT,RIGHT,CENTER_VERTICAL,FILL_VERTICAL,CENTER_HORIZONTAL,FILL_HORIZONTAL,CENTER

性能与测试

运用比较稳定,运用反射的地方不多,性能的影响微乎其微。

后续

1. 实现flexboxlayout

2. 与热更新同时使用

example 例子

{

"view": "scrollView",

"width": "match",

"height": "match",

"background": "#f6f6f6",

"child": [

{

"view": "RelativeLayout",

"width": "match",

"height": "wrap",

"background": "#ffffff",

"property": {

},

"child": [

{

"id": 1001,

"view": "TextView",

"width": "wrap",

"text": "bb",

"textColor": "#333333",

"height": "wrap",

"margin": "20",

"click": "myClick",

"background": "#cccccc",

"padding": "20"

},

{

"id": 1002,

"view": "TextView",

"width": "100",

"text": "cc",

"textColor": "#666666",

"height": "wrap",

"click": "myClick2",

"background": "#eeeeee",

"layout_alignParentRight":true

},

{

"id": 1003,

"view": "TextView",

"width": "wrap",

"text": "below",

"textColor": "#666666",

"height": "wrap",

"background": "#aaaaaa",

"layout_below": 1002,

"layout_alignLeft": 1002

}

]

},

{

"view": "View",

"width": "match",

"unit": "px",

"height": "1",

"background": "#e1e1e1"

},

{

"view": "horizonLayout",

"width": "match",

"height": "wrap",

"child": [

]

},

{

"view": "TextView",

"width": "wrap",

"text": "asdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasda",

"textColor": "#333333",

"height": "wrap",

"margin": "20",

"background": "#cccccc",

"padding": "20"

}

]

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值