0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

動(dòng)態(tài)模板-流程設(shè)計(jì)

汽車電子技術(shù) ? 來(lái)源:程序猿搬磚 ? 作者:壞人 ? 2023-03-03 10:05 ? 次閱讀

動(dòng)態(tài)綁定XML的邏輯已經(jīng)完成了,接下來(lái)就是拆分整合各模塊,實(shí)現(xiàn)渲染流程的每一個(gè)環(huán)節(jié)。

具體的渲染邏輯如下:

圖片

「由于antlr編譯支持庫(kù)很大,所以這里設(shè)計(jì)了一個(gè)中間語(yǔ)言IR,以減小在Native上的引擎大小。」

原始測(cè)試XML如下:

<View flexDirection="row" width="300" height="auto"
    maxHeight="1000"
    left="20"
    top="50"
    justify="spaceAround"
    alignItems="stretch"
    paddingTop="10"
    paddingBottom="20"
    paddingLeft="15"
    paddingRight="15"
    backgroundColor="#FFCDB2">
    <View flex="2" height="auto" justify="center" alignItems="center" backgroundColor="#B5838D">
        <View width="{{ 50 / 2 + 10 }}"
            height="{{ 59 + 2.5 *2 -3 }}"
            backgroundColor="#6D6875"
            borderColor="#e63946"
            borderWidth="2"
            shadowColor="#d00000"
            shadowRadius="15"
            shadowOpacity="0.5"
            >class="hljs-name"View>
    class="hljs-name"View>
    <View flex="2" height="200" backgroundColor="#90B36D" justify="start" alignItems="center">
        <Label text="for測(cè)試: {{item[name]}} - {{ item[age] }}" fontSize="20" color="#ffd23f" for="{{ for item in items }}">class="hljs-name"Label>
        <Label text="測(cè)試標(biāo)題2測(cè)試標(biāo)題2測(cè)試標(biāo)題2"
            fontSize="20"
            color="#ef233c"
            marginTop="10"
            lineNumber="3"
            backgroundColor="#00ff00">class="hljs-name"Label>
    class="hljs-name"View>
class="hljs-name"View>

通過模板編輯器(目前只實(shí)現(xiàn)了功能,沒有實(shí)際意義上的編輯器工具)將表達(dá)式部分編譯成IR,代碼如下:

<View flexDirection="row" width="300" height="auto" maxHeight="1000" left="20" top="50" justify="spaceAround" alignItems="stretch" paddingTop="10" paddingBottom="20" paddingLeft="15" paddingRight="15" backgroundColor="#FFCDB2">
    <View flex="1" height="auto" justify="center" alignItems="center" backgroundColor="#B5838D">
        <View width="{{W3siTGVmdCI6IHsiTGVmdCI6IHsiU3ViVHlwZSI6ICJJbnQiLCAiVHlwZSI6ICJQcmltYXJ5IiwgIlZhbHVlIjogIjUwIn0sICJPUCI6ICIvIiwgIlJpZ2h0IjogeyJTdWJUeXBlIjogIkludCIsICJUeXBlIjogIlByaW1hcnkiLCAiVmFsdWUiOiAiMiJ9LCAiVHlwZSI6ICJCaW5hcnkifSwgIk9QIjogIisiLCAiUmlnaHQiOiB7IlN1YlR5cGUiOiAiSW50IiwgIlR5cGUiOiAiUHJpbWFyeSIsICJWYWx1ZSI6ICIxMCJ9LCAiVHlwZSI6ICJCaW5hcnkifV0=}}" height="{{W3siTGVmdCI6IHsiTGVmdCI6IHsiU3ViVHlwZSI6ICJJbnQiLCAiVHlwZSI6ICJQcmltYXJ5IiwgIlZhbHVlIjogIjU5In0sICJPUCI6ICIrIiwgIlJpZ2h0IjogeyJMZWZ0IjogeyJTdWJUeXBlIjogIkRvdWJsZSIsICJUeXBlIjogIlByaW1hcnkiLCAiVmFsdWUiOiAiMi41In0sICJPUCI6ICIqIiwgIlJpZ2h0IjogeyJTdWJUeXBlIjogIkludCIsICJUeXBlIjogIlByaW1hcnkiLCAiVmFsdWUiOiAiMiJ9LCAiVHlwZSI6ICJCaW5hcnkifSwgIlR5cGUiOiAiQmluYXJ5In0sICJPUCI6ICItIiwgIlJpZ2h0IjogeyJTdWJUeXBlIjogIkludCIsICJUeXBlIjogIlByaW1hcnkiLCAiVmFsdWUiOiAiMyJ9LCAiVHlwZSI6ICJCaW5hcnkifV0=}}" backgroundColor="#6D6875" borderColor="#e63946" borderWidth="2" shadowColor="#d00000" shadowRadius="15" shadowOpacity="0.5"/>
    class="hljs-name"View>
    <View flex="2" height="200" backgroundColor="#90B36D" justify="start" alignItems="center">
        <Label text="for測(cè)試: {{W3siS2V5IjogIm5hbWUiLCAiTm9kZSI6IHsiU3ViVHlwZSI6ICJJRCIsICJUeXBlIjogIlByaW1hcnkiLCAiVmFsdWUiOiAiaXRlbSJ9LCAiVHlwZSI6ICJFdmFsIn1d}} - {{W3siS2V5IjogImFnZSIsICJOb2RlIjogeyJTdWJUeXBlIjogIklEIiwgIlR5cGUiOiAiUHJpbWFyeSIsICJWYWx1ZSI6ICJpdGVtIn0sICJUeXBlIjogIkV2YWwifV0=}}" fontSize="20" color="#ffd23f" for="{{eyJBcnJheU5hbWUiOiAiaXRlbXMiLCAiSXRlbUtleSI6ICJpdGVtIiwgIlR5cGUiOiAiRm9yIn0=}}"/>
        <Label text="測(cè)試標(biāo)題2測(cè)試標(biāo)題2測(cè)試標(biāo)題2" fontSize="20" color="#ef233c" marginTop="10" lineNumber="3" backgroundColor="#00ff00"/>
    class="hljs-name"View>
class="hljs-name"View>

生成如上代碼,就可以交給引擎去渲染了,下面是項(xiàng)目整體的架構(gòu)設(shè)計(jì):

圖片

目前Demo(iOS端)部分的調(diào)研效果已經(jīng)有了,帖一下上面IR XML渲染效果,如下:

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • XML
    XML
    +關(guān)注

    關(guān)注

    0

    文章

    186

    瀏覽量

    32993
  • 動(dòng)態(tài)
    +關(guān)注

    關(guān)注

    0

    文章

    70

    瀏覽量

    20588
  • 渲染
    +關(guān)注

    關(guān)注

    0

    文章

    68

    瀏覽量

    10873
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    什么是模板匹配?模板匹配的原理講解 圖像處理與模板匹配算法

    一:什么是模板匹配? 在OpenCV教程中這樣解釋模板匹配: 模板匹配是一項(xiàng)在一幅圖像中尋找與另一幅模板圖像最匹配(相似)部分的技術(shù). 這里說的模板
    的頭像 發(fā)表于 05-05 09:25 ?3.4w次閱讀
    什么是<b class='flag-5'>模板</b>匹配?<b class='flag-5'>模板</b>匹配的原理講解 圖像處理與<b class='flag-5'>模板</b>匹配算法

    基于指紋模板的考勤系統(tǒng)設(shè)計(jì)

    上傳完畢所有考勤記錄;如果保存錯(cuò)誤,轉(zhuǎn)到(1)重新執(zhí)行。(4),(5),(6)步中重新執(zhí)行(1)最多三次,三次以上就認(rèn)為上傳考勤記錄失敗?! D3 上傳考勤記錄流程圖  3.3 上傳指紋模板  為了備份員工
    發(fā)表于 11-13 16:14

    模塊化編程&工程模板設(shè)計(jì)

    ???九層妖塔?起于壘土【藍(lán)橋杯】—{模板Template}—{Part1:模塊化編程&工程模板}一、流程圖二、基礎(chǔ)知識(shí)1、編譯預(yù)處理2、變量的定義和說明3、`extern`三、操作流程
    發(fā)表于 11-30 07:18

    ppt課件模板下載

    Zzone 精美PPT模板,一共有六十套,非常的經(jīng)典。還有動(dòng)態(tài)的哦。
    發(fā)表于 12-03 19:02 ?0次下載
    ppt課件<b class='flag-5'>模板</b>下載

    動(dòng)態(tài)ppt課件模板

    動(dòng)態(tài)的ppt課件模板,帶動(dòng)畫的細(xì)紋設(shè)計(jì)課件模版, 動(dòng)態(tài)魔方課件模版
    發(fā)表于 12-03 19:10 ?0次下載
    <b class='flag-5'>動(dòng)態(tài)</b>ppt課件<b class='flag-5'>模板</b>

    基于模板匹配的圖像跟蹤技術(shù)

    為了解決傳統(tǒng)模板匹配方法跟蹤圖像時(shí)遇到的問題,提出了在跟蹤過程中采用變模板匹配的方法。該方法較好地解決了傳統(tǒng)方法的局限性,通過實(shí)驗(yàn)比較了使用模板匹配和變模板
    發(fā)表于 12-20 17:01 ?0次下載

    PROTEL圖紙模板怎么設(shè)計(jì)問題

    PROTEL圖紙模板怎么設(shè)計(jì)問題 protel提供的模板在實(shí)際使用中很不符合實(shí)際情況.許多人的圖紙標(biāo)題欄亂七八糟.可以在protel種設(shè)計(jì)一個(gè)圖紙模板.以后進(jìn)行設(shè)置
    發(fā)表于 12-25 14:27 ?3353次閱讀

    arl模板基本編寫方法

    arl模板基本編寫方法 arl模板的基本編寫方法其實(shí)arl模板很容易寫,只要明白d表的內(nèi)容就可以,也可以照350自帶的arl修改,復(fù)制粘貼很快就可以搞定.主要
    發(fā)表于 04-29 08:56 ?1105次閱讀

    LuminaryEvalBoard仿真工程模板

    LuminaryEvalBoard仿真工程模板
    發(fā)表于 05-20 16:08 ?14次下載

    單片機(jī)C語(yǔ)言編程模板(基礎(chǔ)模板)資料分享

    單片機(jī)C語(yǔ)言編程模板(基礎(chǔ)模板)資料分享
    發(fā)表于 04-13 09:56 ?38次下載

    SMT加工模板印刷的基本操作流程

    SMT加工模板印刷作為最基本的SMT貼片加工廠焊膏印刷方式,盡管現(xiàn)代印刷設(shè)備有多種,但其印刷基本過程一樣。下面要求來(lái)了解一下它的基本操作流程。
    的頭像 發(fā)表于 01-10 11:36 ?5905次閱讀

    項(xiàng)目流程圖怎么畫?項(xiàng)目流程圖經(jīng)典免 費(fèi)模板分享

    Linux系統(tǒng)平臺(tái))且具有億圖在線版支持在瀏覽器網(wǎng)頁(yè)直接使用,多平臺(tái)支持使用滿足用戶不同的使用需求。軟件內(nèi)置260多種繪圖類型,3000+模板素材,豐富多樣的繪制素材幫助辦公人士快速繪制:項(xiàng)目流程圖、思維導(dǎo)
    的頭像 發(fā)表于 07-28 11:58 ?3183次閱讀

    動(dòng)態(tài)模板語(yǔ)義分析-動(dòng)態(tài)綁定XML

    DynamicDSL將遵循以下的交互展示邏輯: 描述文件(XML,Widget) --->(綁定數(shù)據(jù))--->渲染模板--->渲染--->事件驅(qū)動(dòng)--->數(shù)據(jù)改變 這樣循環(huán)下來(lái)的,最終我們看到的就是App上的界面與交互效果了。
    的頭像 發(fā)表于 03-03 10:06 ?554次閱讀
    <b class='flag-5'>動(dòng)態(tài)</b><b class='flag-5'>模板</b>語(yǔ)義分析-<b class='flag-5'>動(dòng)態(tài)</b>綁定XML

    隔離設(shè)計(jì)流程+動(dòng)態(tài)函數(shù)交換示例

    電子發(fā)燒友網(wǎng)站提供《隔離設(shè)計(jì)流程+動(dòng)態(tài)函數(shù)交換示例.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 09:31 ?0次下載
    隔離設(shè)計(jì)<b class='flag-5'>流程</b>+<b class='flag-5'>動(dòng)態(tài)</b>函數(shù)交換示例

    如何通過模板模式重構(gòu)代碼

    法的某些特定步驟。 說人話:父類模板方法定義不變的流程,子類重寫流程中的方法。 2、模板模式定義 ①、AbstractClass 抽象
    的頭像 發(fā)表于 10-08 16:15 ?362次閱讀
    如何通過<b class='flag-5'>模板</b>模式重構(gòu)代碼