汽車導航做爲ToB業務,須要知足不一樣汽車廠商在功能和風格上體現各自特點的需求。針對這種狀況,傳統的UI開發方式,基本上是一對一的特別定製。可是這種方式動輒就要500~600人日的工做量投入,成爲業務發展的重要瓶頸。所以,可以對導航UI進行快速定製開發,成爲汽車導航業務UI開發的必解課題。算法
高德地圖技術團隊但願打造一套快速精準的UI解決方案,經過自動化的方式生產UI代碼,解放研發生產力的同時知足客戶需求。canvas
爲了不重複造輪子,咱們調研了行業上現有的UI自動化生成方案。主要分爲兩種:性能優化
Sketch插件方案:網絡
該方案是基於Sketch開發插件,利用SketchAPI讀取出圖層信息轉換DSL,主要表明做有imgcook、Dapollo等。svg
優點:從SketchAPI能夠讀取到很是詳細的信息,足以生成高質量的界面代碼。工具
劣勢:要求效果圖必須使用Sketch製做,而且對效果圖會有必定的製圖要求。佈局
圖片轉代碼方案:性能
該方案是經過經訓練的深度神經網絡,從截圖或手稿直接生成UI代碼,主要表明做有pix2code、Sketch2Code等。優化
優點:簡單粗暴,經過截圖或手繪就能夠生成界面資源代碼。動畫
劣勢:圖層細節丟失,識別準確率欠佳、自適應很差。
調研總結:
基於以上調研結果,咱們決定基於Sketch插件方案,自研適合高德汽車業務需求的UI自動化方案。
結合Sketch插件方案的工做流以及高德內部的人員體制,咱們將UI自動化解決方案在高德內部的使用過程拆分紅4大環節,以下圖所示:
製做環節
對生成環節須要的信息進行輸入(好比佈局、控件、動畫等)。
生成環節
提供資源的生成能力:
驗證環節
提供多設備、多分辨率的還原度精準驗證能力:
應用環節
客戶端工程資源管理能力:
一、控件體系
Sketch的圖層只有text、shape兩種類型,分別能夠對應上Android的TextView和ImageView,可是隻有這兩種控件沒法知足業務需求。參考Android控件體系中基礎控件+自定義控件的方式,咱們對這兩種類型圖層進行組合+繼承,獲得兩種新的控件類型。
基礎控件:Android原生控件集合,如TextView、EditText、ProgressBar等,能知足界面搭建的基本需求。
擴展控件: Android自定義控件,又分爲如下兩類:
業務控件:用於解決Sketch靜態設計沒法知足的部分,如須要canvas paint的控件。設計師只需畫出靜態部分,讓開發人員自由發揮,能知足界面設計上動態元素、複雜元素的需求;同時也能造成控件庫積累。
主題控件:大多數狀況做爲底色色塊,實現App換膚的能力,支持在DHMI主題平臺上作主題樣式編輯。控件之間也支持互相組合,如多個主題控件和基礎控件能夠組合成一個新的業務控件。
經過基礎控件和擴展控件的搭配使用,在實際生產中證明,這套控件體系能夠無限擴展,作到全覆蓋,知足任意界面的搭建需求。
示例
基礎控件:
業務控件:
二、佈局體系
佈局的選擇
佈局採用的是約束佈局ConstraintLayout。
優點:
佈局識別算法
佈局識別算法是在設計稿上基於位置關係推算佈局約束關係的一種算法。
佈局識別的難點:
三、主題定製
因爲車載導航面向的對象是車廠客戶,不一樣的客戶對於應用的UI或者主題是有不一樣需求的,也就是說針對不一樣客戶,不一樣渠道的版本,須要有不一樣的應用主題。隨着項目的增多,若是沒有一個靈活,易管理,低成本的主題定製方案,那麼這將是一個噩夢的開始。
傳統的實現方案
DHMI主題定製方案
具體實現以下
能力建設完成後,設計師和開發人員效率都獲得極大提高。對於設計師,總體成本下降50%以上,有助於設計規範更好的落地,省去標註和切圖環節,精準的還原度驗收,快速的主題定製。對於開發人員,UI開發成本下降80%以上,不用再操心如何開發UI,只需關注資源如何對接,完善的資源管理工具鏈,低成本的版本迭代,主題定製0成本。
本文做者:高德技術小哥
本文爲阿里雲內容,未經容許不得轉載。