Fiori裏花瓣的動畫效果實現原理

Fiori裏的busy dialog有兩種表現形式,一種是下圖裏的花朵形狀,由5個不斷旋轉的花瓣組成。另外一種是下圖的3/4個圓環不斷旋轉的效果。html

關於前者的效果,能夠看我製做的這個視頻。這個視頻是手動將下圖setTimeout的300毫秒延時改爲30秒以後的效果,意思是30秒以後這個花瓣效果才消失。shell

1. 根據調試器裏調用棧的觀察,每當url發生變化時,會觸發sap.ui.controller.doHashChange,該方法則會調用openLoadingScreen.這個方法裏會建立BusyDialog的實例並調用open方法。Busy Dialog的實現位置: /sap/bc/ui5_ui5/ui2/ushell/resources/sap/m/BusyDialog.js動畫

2. 動畫效果的渲染實現位置: /sap/bc/ui5_ui5/ui2/ushell/resources/sap/ui/core/Popup.js.ui

第52行的renderFioriFlower方法:url

從97行的循環能看出在循環體內建立了5個div element,實際上就是UI Fiori動畫效果裏的5個花瓣。調試

3.Fiori動畫效果顯示以後,何時消失?視頻

使用setTimeout將LoadingDialog的關閉動做加入到執行隊列裏。若是300毫秒以後(第188行的參數)執行隊列裏沒有其餘待執行的事件,則關閉該Dialog。htm

要獲取更多Jerry的原創技術文章,請關注公衆號"汪子熙"或者掃描下面二維碼:隊列

相關文章
相關標籤/搜索