最近在开发项目时需要用到动态布局,在这里把动态布局实现方式给大家做一下分享,可能有些同学会问什么是动态布局?动态布局比较适合用到应用的首页,可以灵活的展示各种海报,具体来说就是海报的大小,每页的布局都是随意修改的,具体实现方法:
1. 服务端做好对应的布局映射后,把页面的信息通过Json形式存储到db
2. 客户端需要展示时,去服务端请求布局信息,从缓存中拿到对应的Json数据
3. 拿到数据后客户端使用addView方法,根据参数不断的添加每个view,其实只是逻辑稍微复杂些,实现起来并没什么大难度,生成view后再为每个view绑定点击事件就好了,下面分享一下后台的Json数据给大家参考
{
//theme_attribute主键
"theme_id" : 25,
//全局画布宽
"global_width" : 10000,
//全局画布宽
"global_height" : 1080,
画布Y坐标
"coordinate_y" : 0,
//画布X坐标
"coordinate_x" : 0,
//全局默认圆角,如果ta-广告位有圆角值,则使用广告位的圆角
"global_fillet_degree" : 10,
//布局方向 0:横向 1:竖向 默认 0
"layout_direction" : 0,
"menu_style" : {
//theme_menu_sytle主键
"menu_id" : 14,
//菜单X坐标 单位:像素
"menu_coordinate_x" : 100,
//菜单Y坐标 单位:像素
"menu_coordinate_y" : 140,
//菜单间距 单位:像素
"menu_gap" : 100,
//菜单方向 0:横向 1:竖向 默认 0
"menu_direction" : 0,
//菜单字体大小
"foot_size" : 14
},
//tab页布局和数据
"tabs" : [{
//theme_menu_dimension_business主键
"beanid" : 61,
//theme_tab_layout主键
"tab_layout_id" : 20,
//菜单图标
"menu_icon" : "/img/icon.png",
//菜单权重
"menu_item_weight" : 100,
//是否锁定首页 0:锁定 1:不锁定 默认 1
"is_locked_homepage" : 0,
//菜单栏目名称 如:首页、推荐、视频、应用
"menu_item_name" : "游戏天地",
//tab布局背景图
"tab_background" : "/img/background.jpg",
"advers" : [{
//theme_tab_adver_layout主键
"adver_layout_id" : 164,
//广告位X坐标 单位:像素
"coordinate_x" : 60,
//广告位Y坐标 单位:像素
"coordinate_y" : 260,
//广告位宽
"adver_width" : 340,
//广告位高
"adver_height" : 340,
//广告位圆角,单位:度数 默认为 0
"adver_fillet_degree" : 10,
//该广告位上发布的内容
"content" : [{
//theme_adver_content主键
"adver_content_id" : 1,
//一级标题
"first_title" : "一级标题",
//二级标题
"second_title" : "",
//标题对齐格式 0:左、1:中、2:右 默认 0
"align" : 0,
//海报图层一(底图)
"poster_bottom" : "/img/poster/bottmo.jpg",
//海报图层二
"poster_middle" : "/img/poster/middle.jpg",
//海报图层三
"poster_top" : "/img/poster/top.jpg",
//海报图层一(底图)MD5
"poster_bottom_md5" : "/img/poster/bottmo/71f262d796bed1ab30e8a2d5a8ddee6f",
//海报图层二MD5
"poster_middle_md5" : "/img/poster/middle/40eb6928d5b995a12c7e5b59bb335071",
//海报图层三MD5
"poster_top_md5" : "/img/poster/top/ b28354b543375bfa94dabaeda722927f",
//是否有焦点效果 0:有焦点 1:无焦点 默认 0
"is_focucs" : 1,
//是否显示标题 0:显示 1:不显示 默认 0
"is_show_title" : 0,
//打开内容类型 00:apk拉起 10:URL 20:纯图片 30:应用库中的应用(各业务自己实现 应用类型做了扩展 如31:表示电视商城应用 32:手机商城应用 33:易学应用 3x:其他40:易学业务 (41:课程(分类跳转)、42:剧集、43:专题、44:套餐包、45:书籍))
"open_content_type" : 41,
//打开内容 默认为空串
"open_content" :"见后面说明",
//状态 0:停用 1:启用 默认 1
"state" : 1
//选中放大比例 0.01 两位小数表示百分比
"enlarge_scale" : 0.02
}
]
}, {
"adver_layout_id" : 165,
"coordinate_x" : 60,
"coordinate_y" : 620,
"adver_width" : 340,
"adver_height" : 340,
"adver_fillet_degree" : 10,
"content" : [{
"adver_content_id" : 1,
"first_title" : "一级标题",
"second_title" : "",
"align" : 1,
"poster_bottom" : "/img/poster/bottmo.jpg",
"poster_middle" : "/img/poster/middle.jpg",
"poster_top" : "/img/poster/top.jpg",
"poster_bottom_md5" : "/img/poster/bottmo/71f262d796bed1ab30e8a2d5a8ddee6f",
"poster_middle_md5" : "/img/poster/middle/40eb6928d5b995a12c7e5b59bb335071",
"poster_top_md5" : "/img/poster/top/ b28354b543375bfa94dabaeda722927f",
"is_focucs" : 1,
"is_show_title" : 1,
"open_content_type" : 42,
"open_content" :"见后面说明",
"state" : 1
"enlarge_scale" : 0.02
}
]
}, {
"adver_layout_id" : 166,
"coordinate_x" : 420,
"coordinate_y" : 260,
"adver_width" : 700,
"adver_height" : 340,
"adver_fillet_degree" : 10,
"content" : [{
"adver_content_id" : 1,
"first_title" : "一级标题",
"second_title" : "",
"align" : 1,
"poster_bottom" : "/img/poster/bottmo.jpg",
"poster_middle" : "/img/poster/middle.jpg",
"poster_top" : "/img/poster/top.jpg",
"poster_bottom_md5" : "/img/poster/bottmo/71f262d796bed1ab30e8a2d5a8ddee6f",
"poster_middle_md5" : "/img/poster/middle/40eb6928d5b995a12c7e5b59bb335071",
"poster_top_md5" : "/img/poster/top/ b28354b543375bfa94dabaeda722927f",
"is_focucs" : 1,
"is_show_title" : 1,
"open_content_type" : 43,
"open_content" :"见后面说明",
"state" : 1
"enlarge_scale" : 0.02
}
]
}, {
"adver_layout_id" : 167,
"coordinate_x" : 420,
"coordinate_y" : 620,
"adver_width" : 340,
"adver_height" : 340,
"adver_fillet_degree" : 10,
"content" : [{
"adver_content_id" : 1,
"first_title" : "一级标题",
"second_title" : "",
"align" : 1,
"poster_bottom" : "/img/poster/bottmo.jpg",
"poster_middle" : "/img/poster/middle.jpg",
"poster_top" : "/img/poster/top.jpg",
"poster_bottom_md5" : "/img/poster/bottmo/71f262d796bed1ab30e8a2d5a8ddee6f",
"poster_middle_md5" : "/img/poster/middle/40eb6928d5b995a12c7e5b59bb335071",
"poster_top_md5" : "/img/poster/top/ b28354b543375bfa94dabaeda722927f",
"is_focucs" : 1,
"is_show_title" : 1,
"open_content_type" : 44,
"open_content" :"见后面说明",
"state" : 1
"enlarge_scale" : 0.02
}
]
}, {
"adver_layout_id" : 168,
"coordinate_x" : 780,
"coordinate_y" : 620,
"adver_width" : 340,
"adver_height" : 340,
"adver_fillet_degree" : 10,
"content" : [{
"adver_content_id" : 1,
"first_title" : "一级标题",
"second_title" : "",
"align" : 1,
"poster_bottom" : "/img/poster/bottmo.jpg",
"poster_middle" : "/img/poster/middle.jpg",
"poster_top" : "/img/poster/top.jpg",
"poster_bottom_md5" : "/img/poster/bottmo/71f262d796bed1ab30e8a2d5a8ddee6f",
"poster_middle_md5" : "/img/poster/middle/40eb6928d5b995a12c7e5b59bb335071",
"poster_top_md5" : "/img/poster/top/ b28354b543375bfa94dabaeda722927f",
"is_focucs" : 1,
"is_show_title" : 1,
"open_content_type" : 45,
"open_content" :"见后面说明",
"state" : 1
"enlarge_scale" : 0.02
}
]
}, {
"adver_layout_id" : 169,
"coordinate_x" : 1140,
"coordinate_y" : 260,
"adver_width" : 340,
"adver_height" : 340,
"adver_fillet_degree" : 10,
"content" : [{
"adver_content_id" : 1,
"first_title" : "一级标题",
"second_title" : "",
"align" : 1,
"poster_bottom" : "/img/poster/bottmo.jpg",
"poster_middle" : "/img/poster/middle.jpg",
"poster_top" : "/img/poster/top.jpg",
"poster_bottom_md5" : "/img/poster/bottmo/71f262d796bed1ab30e8a2d5a8ddee6f",
"poster_middle_md5" : "/img/poster/middle/40eb6928d5b995a12c7e5b59bb335071",
"poster_top_md5" : "/img/poster/top/ b28354b543375bfa94dabaeda722927f",
"is_focucs" : 1,
"is_show_title" : 1,
"open_content_type" : 43,
"open_content" :"见后面说明",
"state" : 1
"enlarge_scale" : 0.02
}
]
}, {
"adver_layout_id" : 170,
"coordinate_x" : 1500,
"coordinate_y" : 260,
"adver_width" : 340,
"adver_height" : 340,
"adver_fillet_degree" : 10,
"content" : [{
"adver_content_id" : 1,
"first_title" : "一级标题",
"second_title" : "",
"align" : 1,
"poster_bottom" : "/img/poster/bottmo.jpg",
"poster_middle" : "/img/poster/middle.jpg",
"poster_top" : "/img/poster/top.jpg",
"poster_bottom_md5" : "/img/poster/bottmo/71f262d796bed1ab30e8a2d5a8ddee6f",
"poster_middle_md5" : "/img/poster/middle/40eb6928d5b995a12c7e5b59bb335071",
"poster_top_md5" : "/img/poster/top/ b28354b543375bfa94dabaeda722927f",
"is_focucs" : 1,
"is_show_title" : 1,
"open_content_type" : 41,
"open_content" :"见后面说明",
"state" : 1
"enlarge_scale" : 0.02
}
]
}, {
"adver_layout_id" : 171,
"coordinate_x" : 1140,
"coordinate_y" : 620,
"adver_width" : 700,
"adver_height" : 340,
"adver_fillet_degree" : 10,
"content" : [{
"adver_content_id" : 1,
"first_title" : "一级标题",
"second_title" : "",
"align" : 1,
"poster_bottom" : "/img/poster/bottmo.jpg",
"poster_middle" : "/img/poster/middle.jpg",
"poster_top" : "/img/poster/top.jpg",
"poster_bottom_md5" : "/img/poster/bottmo/71f262d796bed1ab30e8a2d5a8ddee6f",
"poster_middle_md5" : "/img/poster/middle/40eb6928d5b995a12c7e5b59bb335071",
"poster_top_md5" : "/img/poster/top/ b28354b543375bfa94dabaeda722927f",
"is_focucs" : 1,
"is_show_title" : 1,
"open_content_type" : 41,
"open_content" :"见后面说明",
"state" : 1
"enlarge_scale" : 0.02
}
]
}, {
"adver_layout_id" : 172,
"coordinate_x" : 1860,
"coordinate_y" : 260,
"adver_width" : 340,
"adver_height" : 700,
"adver_fillet_degree" : 10,
"content" : [{
"adver_content_id" : 1,
"first_title" : "一级标题",
"second_title" : "",
"align" : 1,
"poster_bottom" : "/img/poster/bottmo.jpg",
"poster_middle" : "/img/poster/middle.jpg",
"poster_top" : "/img/poster/top.jpg",
"poster_bottom_md5" : "/img/poster/bottmo/71f262d796bed1ab30e8a2d5a8ddee6f",
"poster_middle_md5" : "/img/poster/middle/40eb6928d5b995a12c7e5b59bb335071",
"poster_top_md5" : "/img/poster/top/ b28354b543375bfa94dabaeda722927f",
"is_focucs" : 1,
"is_show_title" : 1,
"open_content_type" : 41,
"open_content" :"见后面说明",
"state" : 1
"enlarge_scale" : 0.02
}
]
}, {
"adver_layout_id" : 173,
"coordinate_x" : 2220,
"coordinate_y" : 260,
"adver_width" : 340,
"adver_height" : 340,
"adver_fillet_degree" : 10,
"content" : [{
"adver_content_id" : 1,
"first_title" : "一级标题",
"second_title" : "",
"align" : 1,
"poster_bottom" : "/img/poster/bottmo.jpg",
"poster_middle" : "/img/poster/middle.jpg",
"poster_top" : "/img/poster/top.jpg",
"poster_bottom_md5" : "/img/poster/bottmo/71f262d796bed1ab30e8a2d5a8ddee6f",
"poster_middle_md5" : "/img/poster/middle/40eb6928d5b995a12c7e5b59bb335071",
"poster_top_md5" : "/img/poster/top/ b28354b543375bfa94dabaeda722927f",
"is_focucs" : 1,
"is_show_title" : 1,
"open_content_type" : 41,
"open_content" :"见后面说明",
"state" : 1
"enlarge_scale" : 0.02
}
]
}, {
"adver_layout_id" : 174,
"coordinate_x" : 2220,
"coordinate_y" : 620,
"adver_width" : 340,
"adver_height" : 340,
"adver_fillet_degree" : 10,
"content" : [{
"adver_content_id" : 1,
"first_title" : "一级标题",
"second_title" : "",
"align" : 1,
"poster_bottom" : "/img/poster/bottmo.jpg",
"poster_middle" : "/img/poster/middle.jpg",
"poster_top" : "/img/poster/top.jpg",
"poster_bottom_md5" : "/img/poster/bottmo/71f262d796bed1ab30e8a2d5a8ddee6f",
"poster_middle_md5" : "/img/poster/middle/40eb6928d5b995a12c7e5b59bb335071",
"poster_top_md5" : "/img/poster/top/ b28354b543375bfa94dabaeda722927f",
"is_focucs" : 1,
"is_show_title" : 1,
"open_content_type" : 41,
"open_content" :"见后面说明",
"state" : 1
"enlarge_scale" : 0.02
}
]
}
]
}
]
}