VirtualView接入及开发环境搭建

VirtualView接入

sdk接入

  1. 引入aar依赖
compile ('com.alibaba.android:virtualview:1.0.5@aar') {
    transitive = true
}
  1. 在application中初始化,提供全局VafContext及ViewManager
//构建VafContext对象
VafContext vafContext = new VafContext(mContext.getApplicationContext());
//初始化ViewManager
ViewManager viewManager = vafContext.getViewManager();
viewManager.init(mContext.getApplicationContext());
  1. 自定义图片组件并注册,官方demo有picasso的例子。这里以Fresco为例,其他自定义组件也类似,参考自定义基础组件

    这里1014是自定义组件的id,每个组件对应一个id,可覆盖自带组件的id实现自定义基础组件。建议从 1001开始,前 1000 保留给系统使用。

sViewManager.getViewFactory().registerBuilder(1014,new FrescoImage.Builder())
  1. 注册事件,可注册点击、曝光、长按、触摸事件
    事件说明
//点击事件
sVafContext.getEventManager().register(EventManager.TYPE_Click, new ClickProcessorImpl());
//曝光事件
sVafContext.getEventManager().register(EventManager.TYPE_Exposure, new ExposureProcessorImpl());
  1. 加载动态布局二进制文件
//方式1,.out文件路径加载
viewManager.loadBinFileSync(file_path);
//方式2,二进制数组
viewManager.loadBufferSync(byte[])
  1. 页面中设置容器,绑定数据、渲染
//根据xml文件名获取VirtualView,在编译xml时配置的名称
View container = vafContext.getContainerService().getContainer(name, true);
//数据绑定,绑定对应布局的json数据
IContainer iContainer = (IContainer)container;
iContainer.getVirtualView().setVData(data);

xml开发工具

需要工具

编译工具

下载virtualview_tools,通过VirtualView-tools编译XML模板,输出.out文件及文件MD5

  1. 配置组件ID及属性type:compiler-tools/config/config.properties
\\配置viewId,例如自定义FrescoImage的id设为1014,这里id需要与virtualview初始化时FrescoImage注册的id一致,这样才能根据xml中组件id映射到native组件。
VIEW_ID_FrescoImage=1014
\\配置属性类型
layoutMarginTop=Number
  1. 配置需要编译xml文件列表:compiler-tools/config/templatelist.properties
/**
 * xmlFileName需要编译的xml文件名
 * outFileName编译输出文件名,outFileName会编译进二进制文件中,客户端通过outFileName生成对应VirtualView
 * Version xml模板的版本号
 */
xmlFileName=outFileName,Version
  1. 编写xml模板放在compiler-tools/TemplateWorkSpace/template目录
  2. 执行sh buildTemplate.sh脚本编译xml模板,输出.out文件,输出目录:compiler-tools/TemplateWorkSpace/build
out目录:xml模板编译成的.out文件
java目录:xml模板编译成的二进制数组类
sign目录:.out文件的MD5码,供客户端校验用
txt目录:XML 模板编译成二进制数据之后的十六进制字符串形式

界面实时预览工具

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章