VirtualView接入及開發(fā)環(huán)境搭建

[TOC]

VirtualView接入

sdk接入

  1. 引入aar依賴
compile ('com.alibaba.android:virtualview:1.0.5@aar') {
    transitive = true
}
  1. 在application中初始化,提供全局VafContext及ViewManager
//構(gòu)建VafContext對象
VafContext vafContext = new VafContext(mContext.getApplicationContext());
//初始化ViewManager
ViewManager viewManager = vafContext.getViewManager();
viewManager.init(mContext.getApplicationContext());
  1. 自定義圖片組件并注冊,官方demo有picasso的例子。這里以Fresco為例,其他自定義組件也類似,參考自定義基礎(chǔ)組件

    這里1014是自定義組件的id,每個組件對應(yīng)一個id,可覆蓋自帶組件的id實現(xiàn)自定義基礎(chǔ)組件。建議從 1001開始,前 1000 保留給系統(tǒng)使用。

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. 加載動態(tài)布局二進制文件
//方式1,.out文件路徑加載
viewManager.loadBinFileSync(file_path);
//方式2,二進制數(shù)組
viewManager.loadBufferSync(byte[])
  1. 頁面中設(shè)置容器,綁定數(shù)據(jù)、渲染
//根據(jù)xml文件名獲取VirtualView,在編譯xml時配置的名稱
View container = vafContext.getContainerService().getContainer(name, true);
//數(shù)據(jù)綁定,綁定對應(yīng)布局的json數(shù)據(jù)
IContainer iContainer = (IContainer)container;
iContainer.getVirtualView().setVData(data);

xml開發(fā)工具

需要工具

編譯工具

下載virtualview_tools,通過VirtualView-tools編譯XML模板,輸出.out文件及文件MD5

  1. 配置組件ID及屬性type:compiler-tools/config/config.properties
\\配置viewId,例如自定義FrescoImage的id設(shè)為1014,這里id需要與virtualview初始化時FrescoImage注冊的id一致,這樣才能根據(jù)xml中組件id映射到native組件。
VIEW_ID_FrescoImage=1014
\\配置屬性類型
layoutMarginTop=Number
  1. 配置需要編譯xml文件列表:compiler-tools/config/templatelist.properties
/**
 * xmlFileName需要編譯的xml文件名
 * outFileName編譯輸出文件名,outFileName會編譯進二進制文件中,客戶端通過outFileName生成對應(yīng)VirtualView
 * Version xml模板的版本號
 */
xmlFileName=outFileName,Version
  1. 編寫xml模板放在compiler-tools/TemplateWorkSpace/template目錄
  2. 執(zhí)行sh buildTemplate.sh腳本編譯xml模板,輸出.out文件,輸出目錄:compiler-tools/TemplateWorkSpace/build
out目錄:xml模板編譯成的.out文件
java目錄:xml模板編譯成的二進制數(shù)組類
sign目錄:.out文件的MD5碼,供客戶端校驗用
txt目錄:XML 模板編譯成二進制數(shù)據(jù)之后的十六進制字符串形式

界面實時預(yù)覽工具

  • 需要環(huán)境:

    • java- 編譯xml
    • python- 搭建本地WebServer,提供模板.out及數(shù)據(jù)json給客戶端
    • brew- 安裝fswatch、qrencode。安裝方法1-官網(wǎng)、安裝方法2-國內(nèi)鏡像
    • fswatch- 監(jiān)聽xml模板文件變化
    • qrencode- 生成文件本地服務(wù)地址二維碼
  • 原理:


    實時預(yù)覽原理

    通過fswatch監(jiān)聽xml文件變化,將xml編譯成.out文件與模板數(shù)據(jù)json封裝成一個data.json文件發(fā)布到LocalServer,客戶端獲取后解析.out文件完成數(shù)據(jù)綁定和渲染,從而實現(xiàn)實時預(yù)覽。

  • 使用:

    1、開啟localServer服務(wù),切到 /compiler-tools/realtime-preview 目錄執(zhí)行 run.sh啟動服務(wù)

    2、修改Playground的LocalServer地址
    https://github.com/alibaba/Virtualview-Android/blob/master/app/src/main/java/com/tmall/wireless/virtualviewdemo/preview/util/HttpUtil.java#L16,改為localServer地址,

    3、打開demo的<模板實時預(yù)覽>,點擊對應(yīng)模板預(yù)覽


    預(yù)覽效果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 3,214評論 0 3
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,422評論 4 61
  • 手握相機在街頭行走,與不帶相機漫步街頭會明顯不同。只要拿著相機,潛意識中就會搜尋拍攝的目標。如果事先沒有計劃拍攝的...
    俗然閱讀 2,117評論 4 10
  • 03、04隊周末約隊比賽!本來是普通的比賽,恰好世界杯四強即將全部產(chǎn)生,于是組成四個隊進行世界杯模擬賽!法國V比利...
    穆里尼奧宋閱讀 311評論 0 0
  • 無意中望著窗外,才發(fā)現(xiàn)藍天總是在游蕩這不一樣的云彩,天空還是那片天空,云朵卻總在變幻,也許一批批過客就宛如我們生活...
    矛曉盾閱讀 217評論 0 10

友情鏈接更多精彩內(nèi)容