最新教程下載:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429php
本章節爲你們講解GUIX Studio設計窗口切換。框架
14.1初學者重要提示ide
14.2 GUIX Studio建立三個窗口函數
14.3 窗口的Screen Flow界面介紹學習
14.4 窗口的Screen Flow界面設置測試
14.5 移植程序到硬件平臺注意事項動畫
14.6 實驗例程設計框架spa
14.7 實驗例程設計
14.8 總結3d
GUIX Studio的設置方法與第11章同樣,咱們這裏僅把控件的位置和大小作了調整。
建立的窗口1,添加Text Button控件和Prompt控件,而後選中建立的窗口1,再重點看下面截圖中標記的三個地方:
設置完了窗口部分,再看按鈕控件的配置,鼠標左擊選中按鈕,重點看Properties View:
設置按鈕ID爲GUIX_ID_TextButton0,設置Screen Flow時要使用。而prompt控件設置顯示內容爲:The First Window便可,方便切換不一樣窗口時區分。
按照以下方法建立窗口2:
建立後,添加Text Button控件和Prompt控件,而後選中建立的窗口2,一樣重點看下面截圖中標記的兩個地方:
設置完了窗口部分,再看按鈕控件的配置,鼠標左擊選中按鈕,重點看Properties View:
設置按鈕ID爲GUIX_ID_TextButton1,設置Screen Flow時要使用。而prompt控件設置顯示內容爲:The Second Window便可,方便切換不一樣窗口時區分。
按照以下方法建立窗口3:
建立後,添加Text Button控件和Prompt控件,而後選中建立的窗口3,一樣重點看下面截圖中標記的兩個地方:
設置完了窗口部分,再看按鈕控件的配置,鼠標左擊選中按鈕,重點看Properties View:
設置按鈕ID爲GUIX_ID_TextButton2,設置Screen Flow時要使用。而prompt控件設置顯示內容爲:The Third Window便可,方便切換不一樣窗口時區分。
建立完畢三個窗口後,開始本章節最重要的Screen Flow設置,窗口的切換主要是經過Screen Flow來配置的:
按照上圖方式打開Screen Flow:
能夠看到前面建立的窗口window,window_1和window_2都以矩形框的形式呈現,這三個方框能夠隨意調節位置,隨意放縮大小。
這裏鼠標左擊選中窗口window,而後鼠標右擊,彈出以下對話框:
再點擊Add New Trigger按鈕,彈出以下對話框:
一、System Event
系統事件,支持的系統事件以下:
二、Child Signal
子控件支持的事件以下:
這裏的子控件就是前面建立窗口1時添加的Text Button子控件和Prompt子控件。默認都是支持三個事件,CLICKED點擊事件,FOCUS_GAINED獲取聚焦事件,FOCUS_LOST失去聚焦事件。
三、User Event
用戶自定義事件。
這裏以建立的第1個窗口的Child Signal事件中Text Button點擊事件爲例進行說明:
保存後,就能夠編輯此按鈕按下事件的處理方式:
點擊Edit Action(s)按鈕,彈出以下對話框:
繼續點擊Add New Action按鈕,彈出的對話框以下:
Animation:窗口切換的動畫效果。
Attach:將目標窗口附件到它的父窗口上,若是未指定父窗口,則目標窗口將附加到根窗口。
Detach:將目標窗口與其父窗口分離。
Hide:隱藏目標窗口。
Screen Stack Pop:從內部窗口堆棧彈出一個窗口指針。
Screen Stack Push:將窗口指針推到內部窗口堆棧。
Screen Stack Reset:從內部窗口堆棧中刪除全部窗口指針。
Show:顯示目標窗口。
Toggle:將目標窗口附加到當前窗口的父窗口,而後將當前窗口與其父窗口分離。
Window Execute:以模態方式執行目標窗口。
Window Execute Stop:退出當前窗口的模態執行。
這裏咱們以Animation動畫切換效果爲例進行說明,選擇Animation,點擊保存:
保存後彈出以下對話框:
一、這裏能夠添加多個動做方式進來,當前咱們這裏僅添加了Animation一種方式。
二、設置動做名字,隨意設置,咱們這裏使用默認。
三、設置Animation動做方式應用到的目標窗口或控件。
四、設置目標窗口切換後附加到那個窗口下(即便用那個窗口做爲父窗口),或者設置爲None的話,會被附加到root根窗口下。
五、設置目標窗口的動做前的起始位置,結束位置等:
起始座標位置。
結束座標位置。
從起始位置到結束位置須要的步數。
滴答頻率(注,未摸清準確做用,待後續繼續測試)
動做前的延遲,延遲單位由GX_SYSTEM_TIMER_TICKS定義。
啓動前的Alpha值和啓動後的Alpha值,0表示徹底透明,255表示徹底不透明。
六、用於設置窗口切換時,動態切換效果
當前支持的動畫效果以下:
點擊這個小按鈕能夠查看動畫效果:
七、動畫完成後的處理
表示將目標窗口與其父窗口分離。
將目標窗口指針壓如到窗口堆棧中。
瞭解了Screen Flow的基礎配置後,將三個窗口都作配置。
右擊選擇窗口window:
彈出窗口選擇Child Signal中的按鈕按下事件:
保存後選擇Edit Action(s):
點擊Edit Action(s)後,彈出以下對話框,並選擇Add New Action按鈕,再選擇Animation並保存。
最終配置以下:
咱們這裏僅修改了Target目標窗口,其它地方的設置所有默認不動。這裏選擇window_1表示操做前面建立的window_1,實際運行效果是由窗口window切換到window_1。
右擊選擇窗口window_1:
彈出窗口選擇Child Signal中的按鈕按下事件:
保存後選擇Edit Action(s):
點擊Edit Action(s)後,彈出以下對話框,並選擇Add New Action按鈕,再選擇Animation並保存。
最終配置以下:
咱們這裏僅修改了Target目標窗口,其它地方的設置所有默認不動。這裏選擇window_2表示操做前面建立的window_2,實際運行效果是由窗口window_1切換到window_2。
右擊選擇窗口window_2:
彈出窗口選擇Child Signal中的按鈕按下事件:
保存後選擇Edit Action(s):
點擊Edit Action(s)後,彈出以下對話框,並選擇Add New Action按鈕,再選擇Animation並保存。
最終配置以下:
咱們這裏僅修改了Target目標窗口,其它地方的設置所有默認不動。這裏選擇window表示操做前面建立的window,實際運行效果就是由窗口window_2切換到window。
三個窗口的Screen Flow配置好以後,能夠看到以下效果:
三個窗口已經互聯到一塊兒,即咱們要實現的功能能夠實現三個窗口之間來回切換。至此就徹底了窗口切換的實現。
本教程第12章講解了移植方法,本章重點注意建立的三個窗口都要單首創建,建立代碼放在了MainTask.c文件的MainTask函數裏面:
/* ********************************************************************************************************* * 函 數 名: MainTask * 功能說明: GUI主函數 * 形 參: 無 * 返 回 值: 無 ********************************************************************************************************* */ void MainTask(void) { 其它省略未寫 /* 建立窗口 */ gx_studio_named_widget_create("window", (GX_WIDGET *)root, (GX_WIDGET **)&pScreen); gx_studio_named_widget_create("window_1", (GX_WIDGET *)root, (GX_WIDGET **)&pScreen); gx_studio_named_widget_create("window_2", (GX_WIDGET *)root, (GX_WIDGET **)&pScreen); }
特別注意,這裏window,window_1和window_2就是前面建立三個窗口時所使用的名字。
本章例程的重點是GUIX Studio窗口切換的實現:
(注,若是是電阻屏,須要作觸摸校準,校準方法看本教程附件章節A)
配套例子:
本章節配套了以下兩個例子供你們移植參考:
GUIX Studio生成的代碼在硬件平臺實際運行的工程,含有GCC,IAR,MDK AC5和AC6四個版本工程。
GUIX Studio工程模板,設計界面後,生成的文件可直接添加到MDK,IAR和GCC軟件平臺使用。
實驗目的:
實驗內容:
App Task Start任務 :啓動任務,這裏用做BSP驅動包處理。
App Task MspPro任務 :消息處理,這裏用做浮點數串口打印。
App Task UserIF任務 :按鍵消息處理。
App Task GUI任務 :GUI應用任務。
App Task STAT任務 :統計任務。
App Task IDLE任務 :空閒任務。
GUIX System Thread :GUI系統任務。
System Timer Thread任務:系統定時器任務。
實驗效果:
一共建立了三個窗口來回切換:
GUIX Studio的界面設計以下:
串口打印任務執行狀況:
IAR,MDK AC5和AC6工程能夠串口打印任務執行狀況:按開發板的按鍵K1能夠打印,波特率 115200,數據位 8,奇偶校驗位無,中止位 1:
Embedded Studio(GCC)平臺的串口打印是經過其調試組件SEGGER RTT作的串口打印,速度也很是快,打印效果以下:
展現裏面有亂碼是由於Embedded Studio不支持中文。
本章節主要爲你們講解了GUIX Studio設計窗口切換,涉及到的知識點比較多,須要你們多作測試,觀察各類效果。