本節教程將繼續帶領大家完善教學demo 將要學習的demo效果圖如下所示 1. 如何導入完整項目 本節示例demo請參考下載地址,可以導入到設計器中學習。 2. 完善主框架在上一節教程搭建主框架中大家已經學會瞭如何主框架,本節教程使用上一節未完成的demo。 我們分析一下demo機構,通過點擊Bot
本節教程將繼續帶領大家完善教學demo
- 導入項目
- 完善主框架
- 完成viewShower子視圖
- 打開新頁
- 啟動動畫
將要學習的demo效果圖如下所示
本節示例demo請參考下載地址,可以導入到設計器中學習。
2. 完善主框架
在上一節教程搭建主框架中大家已經學會瞭如何主框架,本節教程使用上一節未完成的demo。
我們分析一下demo機構,通過點擊Bottom Bar上的不同按鈕來切換內容,這種情況下最適合用ViewShower這個組件,ViewShower是一個包含多個子VIew的UI容器組件。我們從組件列表裡拖一個ViewShower到UI設計頁面中,並通過調整x/y/width/height為0,0,750,1109將其固定在body的位置,把組件ID改為do_ViewShower_main。
雙擊index.ui.js打開代碼編輯頁面,先通過ID實例化ViewShower組件,再給ViewShower綁定數據,在DeviceOne
的組件庫中,ViewShower、ListView等這種容器類都是採用MVVM形式來綁定數據的,使得開發人員可以將View和業務邏輯分離出來。
這裡先給ViewShower定義需要綁定的數據viewShower_data,其中id需要保持唯一,否則後id已經存在,會覆蓋之前的View;path為需要展示的子View所在的UI頁面的絕對路徑,此時path所指的三個頁面還不存在,一會來創建。定義好數據後,通過ViewShower的addViews方法將數據綁定進去,在調showView方法使其先預設顯示第一個頁面,即id為”news”的子頁面。
想要完成每點擊一個按鈕就切換顯示的子View,還需要在每個按鈕的點擊事件裡加上切換子View的方法showView,並通過show不同id的子View來切換頁面。
3. 完成viewShower子視圖
接下來我們來完成需要展示的子View視圖。
在view
目錄上點擊右鍵,選擇New
-Folder
,填寫要創建的目錄名稱為”news”,新建後再在news
目錄上點擊右鍵,選擇New
-UI File
新建名稱為main的UI界面,在創建頁面的同時IDE會同時創建一個跟main.ui關聯的代碼文件main.ui.js,雙擊打開main.ui文件,向頁面的最外層ALayout中再拖進一個ALayout組件作為viewShower子View的最外層容器,修改它的id為do_ALayout_main,調整高度為1109,因為在主頁面index.ui中viewShower的高度也為1109,如果子View的寬高超過它父容器viewShower的寬高會導致內容顯示不全的問題,
再向該頁面的do_ALayout_main中拖拽一個Label,修改Label的text為“新聞”。這樣viewShower的一個子View就完成了,其他兩個子View也是相同內容,所以只需負責該頁面即可,在news
目錄上點擊右鍵,選擇Copy
,再點擊View
目錄選擇Paste
,填寫目錄名為“find”,打開main.ui修改Label的text為“搜索”即可,同樣的再複製、粘貼一次,修改目錄名為“contact”、Label的text為“通訊錄”,這樣viewShower的三個子View就完成了。(再多複製一份,目錄名改成“feedback”,Label的text為“反饋”,為後續做準備)
4. 打開新頁
在Bottom Bar中,我們想通過點擊第四個按鈕“反饋”來另外打開一個新頁面,讓用戶填寫反饋信息。先雙擊打開feedback
目錄中的main.ui文件,在do_ALayout_main中繼續添加一個ALayout作為該頁面的top,ID改為do_ALayout_1,調整寬高分別為750/128;再向do_ALayout_1中添加一個ALayout用於點擊,ID改為do_ALayout_back,調整位置、寬高分別為x=4,y=6,width=147,height=110;再向do_ALayout_back中添加一個Label用於展示文字,ID改為do_Label_3,將Label的text改為“返回”。
打開main.ui.js,訂閱do_ALayout_back的點擊事件用於關閉該頁面。同時處理在點擊android設備的虛擬返回按鈕時也關閉該頁面。
回到index.ui.js,在do_ALayout_b3的touch事件中調用app的openPage方法,將目標地址指向剛剛調整過的/feedback/main.ui頁面,將頂部狀態欄顯示狀態改為透明(控制statusBarState參數為“transparent”)以全屏形式打開新頁,同時將打開頁面的動畫類型(animationType)改成從右往左推出(push_r2l)。
5. 啟動動畫
為了讓app有更生動的效果,我們讓demo一進入的時候有一個動畫效果作為歡迎頁面,在source://view下創建一個跟index.ui平級的start.ui頁面,在根ALayout里添加一個與根ALayout一樣大小的ImageView,將ID改為do_ImageView_content,給這個ImageView一個source顯示圖片;再添加一個Label組件,修改ID為do_Label_welcome,修改do_Label_welcome的fontColor/fontSize屬性調整顯示字體的顏色和大小,頁面就完成了。再雙擊打開start.ui.js頁面,
先實例化當前頁面的UI組件,並定義需要使用到的相關組件,在定義一個MM組件
animation用於調用UI組件的動畫,這個動畫是控制ImageView組件的,所以ID定義為img_anima,通過修改img_anima的屬性,我們可以操控這個動畫的走向,這裡想讓ImageView的動畫是縮放,所以選擇scale方法,通過給scale方法的不同參數以不同的參數值來製作這個動畫,比如delay設置成0既是讓動畫立即開始,duration設置成2000是讓整個動畫時間為2秒等等..
接下來也是同樣的方法給Label定義一個旋轉的動畫,最後通過調用所有UI組件都通用的animate方法我們將定義的這些動畫加在UI組件上併在動畫完成後打開新頁main.ui。
到此,本節教程就結束了,趕快拿起手機打開調試來查看效果吧!