【注:這是《TouchGFX入門篇(三)-- 多屏呈現(xiàn)與MVP框架》文章的第二部分吠谢,第一部分請看這里】
在上一講中我們已經(jīng)創(chuàng)建了第一個Screen合是、并運行了模擬器來驗證時間參數(shù)能正確配置火窒,下面開始創(chuàng)建第二個Screen:
這個Screen上有3個控件(英文的叫法:Widget):屏幕中央是數(shù)字顯示的時間甚垦,圍繞時間是一個大小不斷變化的圓唤斓妗(通過動畫來實現(xiàn)長短變化)释液,右上角是一個圖形按鈕----按下后可以調(diào)出時間配置窗口:
為了添加一個新的Screen,在1 處點擊 + 號敦腔,系統(tǒng)自動在 2 處產(chǎn)生一個Screen均澳,默認名稱為Screen2(實際項目時應由用戶更改為有意義的名稱),然后設置Screen的背景,在 3 處 添加一個Button找前、并配置按鈕的 Released Image 等屬性(略)糟袁,在 4 處添加一個 Text Area,并按上圖右側(cè)所示配置各個屬性躺盛,字體選40px项戴,并且其中的 WILDCARD1 和 WILDCARD2 都需要配置(二者配置相同)。最后添加一個圓弧圖形(Circle控件):
最后要做的是槽惫,添加有關按鈕的消息響應函數(shù)周叮,使得可以在2個Screen之間來回切換。
先配置Screen1中 Clock 按鈕的動作響應屬性:
然后是Screen2中 設置 按鈕的屬性:
界面設計工作告一段落界斜,CTRL+S 保存項目文件仿耽,點擊右下角的 Browse Code ,進入VS編程環(huán)境各薇,編譯项贺、運行,彈出模擬器運行窗口:
鼠標點擊 Clock 按鈕峭判,應該能切換到第二個屏幕:
再點擊右上角的 設置 按鈕开缎,應該能切換回第一個屏幕。而且林螃,應該能看到一個“場景切換特效”:首頁屏幕是從底部鉆出來的奕删!有點兒酷吧,哈哈疗认!這是圖五右側(cè)下方 Slide完残、South 兩個參數(shù)起到的轉(zhuǎn)場特效,TouchGFX的功能挺牛的吧横漏。
因為還沒有完善代碼坏怪,在首頁屏幕上點擊各個按鈕時,小時绊茧、分鐘數(shù)值顯示可能是亂的,先不要管他打掘,重要的是2個屏幕能正確切換华畏,就達到了第一步的目的。
下面開始代碼的添加過程:MVP框架模式的實現(xiàn)尊蚁,以及如何在2個Screen之間正確傳遞變量的值亡笑。我用一句話來概括這個高大上的MVP術語:所有數(shù)據(jù)僅能保存在稱為 Model 的類對象(簡單說就是一種文件)中,Presenter是視圖(View)與Model之間的紐帶横朋,View只能通過Presenter來讀取數(shù)據(jù)仑乌。下面用代碼編程的實現(xiàn)來具體說明MVP。找到Model.hpp文件,添加2個私有成員變量 hour 和 minute晰甚,以及訪問(即:讀和寫)這些變量的操作函數(shù)聲明:
加入對hour和minute變量的初始化:
前面曾講過衙传,View不能直接讀寫Model中的數(shù)據(jù),必須得通過Presenter來操作厕九,所以先要在Presenter中實現(xiàn)對數(shù)據(jù)的讀寫:
而在Screen2中也需要用同樣方式訪問Model中數(shù)據(jù)蓖捶,所以在?Screen2Presenter.hpp 中也需要添加跟上面同樣的代碼:
最后要做的,是在Screen1和Screen2中讀取hour扁远、minute的初始值俊鱼,以及更新、保存這些變量畅买。對于Screen1并闲,需要在Screen1View.cpp中獲取存儲在Model中的hour、minute的初始數(shù)值谷羞,在Screen1View.hpp中添加小時帝火、分鐘增減按鈕的響應函數(shù)(將hour、minute保存到Model中):
同樣地洒宝,在Screen2中也需要做類似代碼處理购公,并且先要添加屬于Screen2的變量hour、minute:
在VC中雁歌,編譯宏浩、運行,在Screen1中調(diào)整小時靠瞎、分鐘的數(shù)值比庄,保存。然后乏盐,切換到Screen2佳窑,應該能正確顯示調(diào)整之后的小時、分鐘:
至此父能,我們完成了2個Screen之間的切換神凑,以及如何在Screen之間傳遞數(shù)據(jù)。只是何吝,這個界面真是太low了 ---- 時間沒有走起來溉委,還有,那個半圓弧顯得怪怪的爱榕。---- 這正是下一節(jié)要做的工作:讓時鐘跑起來瓣喊、讓表盤(就是這個丑丑的圓弧^_^)動起來!請見下節(jié)?黔酥。