【海東青電子原創文章,轉載請注明出處:http://www.lxweimin.com/p/d7a0d4b2ba63】
(實例代碼下載地址:https://github.com/haidongqing/tgfx-customscroll)
上一節完成了界面設計工作,遺留了2個問題:修改menu items的圖標及文字、并且沿圓弧滑動。在VC中打開項目工程,需要針對用戶定制的控件 MenuElement 添加代碼實現修改圖標等功能。描述MenuElement控件的是 MenuElement.hpp 和 MenuElement.cpp 這2個文件。
當滑動ScrollWhell控件時,TouchGFX框架會在View中調用一個虛函數:scrollWheelUpdateItem(),在這個函數中加入代碼設置每個menu item的圖標等即可。為了方便,在MenuElement.hpp的類中創建一個名為 setNumber() 的函數完成修改圖標,然后在scrollWheelUpdateItem() 中調用??setNumber() :
其中的傳入參數 no 是menu item 的下標編號(自動從0編號到19),通過 itoa() 轉換成字符、附加在每一個item的文字串之后。因為我們只準備了7個圖標,no % 7 就是輪換著用的意思了。然后,在scrollWheelUpdateItem() 中調用??setNumber() :
這里的重點是參數 itemIndex ,它表示當前需要update(就是顯示在視野里的)的item的index,setNumber() 根據itemIndex的值動態地更改item的圖標和文字。VC模擬器運行結果如下:
還剩最后一步:讓items沿著圓弧方向滑動!這就需要動態地修改item的圖標、文字的水平位置坐標。當item滑動時,垂直位置會改變,框架會調用一個叫做 setY() 的函數,在其中修改item的水平坐標:先利用勾股定理計算出水平坐標x,再調用一個用戶函數 offset(x) 來重新設置item的x坐標:
模擬器運行結果:
最后,在IAR中編譯生成目標文件(如何正確配置IAR來下載TouchGFX目標文件,戳這里),下載到目標板上運行:
沿著圓弧方向滑動手指,想象一下在撥盤電話機上撥動的感覺吧(這有點扯了,^_^)。
《使用TouchGFX開發STM32界面應用之入門篇》到此告一段落了,感謝在這些日子里大家的陪伴。下一篇,我們將進入開發TouchGFX的正題:如何在STM32CUBEMX中創建TouchGFX工程。