發(fā)布時間:2024-01-04 15:03:05 瀏覽量:244次
一、源起
??作者是名超大齡程序員,曾涉及了包括Web端、桌面端、移動端等各類前端技術,深受這些前端技術的苦,主要但不限于:
1. 每種技術編寫代碼的語言及技術完全不同,同樣呈現形式的組件各端無法通用;
2. 大部分前端開發(fā)語言跟后端開發(fā)語言不同,不能共用一些數據結構;
??前端UI的本質是在顯示器上呈現由像素點組成的畫面,并且響應外部輸入事件作出相應的重繪。由于作者對Skia2D繪圖引擎比較熟悉,又恰好可以借鑒一下Flutter引擎的跨端實現,所以作者動起了重新造一個跨端UI的念頭。 阿基米德說過:“給我一個支點,我可以撬動地球”,那作者要說:"給我一塊畫布,我可以造一個全新的跨端UI"。
二、畫布及畫筆:
??有了畫布才能繪制用戶界面,目前畫布的來源主要是兩類:
1. Web端參考Flutter的實現,利用編譯為WebAssembly的CanvasKit提供;
2. 桌面端及移動端參考Xamarin的實現,利用原生操作系統(tǒng)的視窗結合Skia的SkCanvas提供;
??每個窗體的畫布分為兩層,一層繪制Widget,另一層用于彈出層的繪制及一些組件裝飾器的繪制。繪制引擎暫統(tǒng)一由Skia來處理,將來可能會考慮抽象繪制引擎。
三、組件樹、布局及樣式
??Flutter有三棵樹,作者嫌啰嗦所以只有一棵WidgetTree,好處是實現簡單且方便維持組件實例的狀態(tài)。每個界面都由組件樹結構組成。有些組件為布局類的(eg: Column、Stack等),具備單或多子組件;有些組件為葉子節(jié)點(eg: Text、PieChart等),通過設置相應的屬性后直接繪制至畫布。
四、組件狀態(tài)
??實現組件時如果需要外部狀態(tài)驅動,可以定義狀態(tài)變量并綁定至組件的相關屬性,這樣當狀態(tài)值發(fā)生變更時,綁定的組件根據狀態(tài)影響進行重新布局或僅重新繪制。
public class DemoCounter : View
{
private readonly State<int> _counter = 0; //定義狀態(tài)
public DemoCounter()
{
Child = new Column
{
Children = new Widget[]
{
new Text(_counter.AsStateOfString()/*綁定至組件*/),
new Button("+") { OnTap = e => _counter.Value+=1/*改變狀態(tài)值*/ }
}
};
}
}
五、組件動畫
??動畫實現基本照搬Flutter的實現方式,由AnimationController在指定時間段內驅動各Animation的動畫值變化,從而連續(xù)改變組件的狀態(tài)值。
public class DemoAnimation : View
{
private readonly AnimationController _controller;
private readonly Animation<Offset> _offsetAnimation;
public DemoAnimation()
{
_controller = new AnimationController(1000/*動畫時長*/);
_offsetAnimation = new OffsetTween(new Offset(-1, 0), new Offset(1, 0))
.Animate(_controller); //位移變換并綁定至動畫控制器
Child = new Column
{
Children = new Widget[]
{
new Button("播放動畫") { OnTap = e => _controller.Forward() },
new SlideTransition(_offsetAnimation)
{
Child = new Text("動畫")
}
}
};
}
}
六、后續(xù)
??力量有限,在此拋磚引玉希望更多感興趣的伙伴加入完善,也希望成為跟華為ArkUI類似的國產UI,對了暫時就叫PixUI吧。
熱門資訊
1. iPhone6的UI設計尺寸規(guī)范,原來如此重要!
想要了解iPhone6界面設計的尺寸規(guī)范嗎?這里為您詳細介紹iPhone6的UI設計尺寸規(guī)范,包括界面尺寸、圖標尺寸、可點擊高度規(guī)范、搜索欄高度規(guī)范以及界面元素之間的距離規(guī)范。
2. 12個絕佳的UI設計網站,助力你的創(chuàng)作之旅!
將為大家介紹12個絕佳的UI設計網站,這些網站不僅可以為你提供靈感,還可以幫助你學習新的技巧,助力你的創(chuàng)意之旅!dribbbleDribbble 是一個面向設計師的...
3. 移動端UI設計中常見的5種APP界面類型,你get到了嗎?
通過介紹移動端UI設計中的閃屏頁、引導頁、浮層引導頁、空白頁和首頁等5種APP界面類型,幫助大家更好地了解UI設計的基本知識
怎樣可以提升你的UI設計能力!第一個:站酷站酷想必是設計師都知道的一個網站,里面不止有UI設計的資源,還有其他設計的,不如:平面設計、網頁設計、字體...
在移動端設計中,列表頁和表單頁是不可或缺的部分。一個好的列表頁和表單頁設計能夠讓用戶輕松地獲取信息并產生點擊欲望,從而提高點擊率。本文將為你...
對于想要提高自己的設計能力和創(chuàng)造力的小白和UI設計師來說,這本書是一個很好的選擇。4.《設計的覺醒》(IKKO TANAKA)推薦理由: 這本書是日本現代平面...
探索零基礎UI設計培訓的時長與薪資前景。了解數字藝術教育領域的專業(yè)課程,以及培訓后的職業(yè)發(fā)展機會。
8. 物聯網APP UI設計:創(chuàng)造智能硬件領域的沉浸式體驗
ui設計應該讓用戶一目了然,能夠快速找到所需的信息和功能。在設計過程中,應盡量使用簡潔的圖標、文字和色彩,避免過多的視覺干擾。符合用戶習慣:ui設...
想了解武漢UI設計培訓班的費用是多少嗎?不知道學UI設計要花多少錢?不妨看看這篇文章,了解UI設計培訓班的學費價格以及學習內容。
10. 設計中的色彩心理學:淺析中西方色彩的歷史演變與設計應用
摘要:本文探討了色彩的歷史演變和設計應用。通過對色彩在早期文明社會中的實用運用、不同文化背景下色彩觀念的差異、色彩在設計中的重要性以及新興技...
同學您好!