【海東青電子原創(chuàng)文章峭拘,轉(zhuǎn)載請注明出處:http://www.reibang.com/p/d7a0d4b2ba63】
(實例代碼下載地址:https://github.com/haidongqing/tgfx-customscroll)
上一節(jié)完成了界面設(shè)計工作嗤练,遺留了2個問題:修改menu items的圖標(biāo)及文字仁锯、并且沿圓弧滑動。在VC中打開項目工程,需要針對用戶定制的控件 MenuElement 添加代碼實現(xiàn)修改圖標(biāo)等功能。描述MenuElement控件的是 MenuElement.hpp 和 MenuElement.cpp 這2個文件。
當(dāng)滑動ScrollWhell控件時臂拓,TouchGFX框架會在View中調(diào)用一個虛函數(shù):scrollWheelUpdateItem(),在這個函數(shù)中加入代碼設(shè)置每個menu item的圖標(biāo)等即可习寸。為了方便胶惰,在MenuElement.hpp的類中創(chuàng)建一個名為 setNumber() 的函數(shù)完成修改圖標(biāo),然后在scrollWheelUpdateItem() 中調(diào)用??setNumber() :
其中的傳入?yún)?shù) no 是menu item 的下標(biāo)編號(自動從0編號到19)融涣,通過 itoa() 轉(zhuǎn)換成字符童番、附加在每一個item的文字串之后。因為我們只準(zhǔn)備了7個圖標(biāo)威鹿,no % 7 就是輪換著用的意思了剃斧。然后,在scrollWheelUpdateItem() 中調(diào)用??setNumber() :
這里的重點是參數(shù) itemIndex 忽你,它表示當(dāng)前需要update(就是顯示在視野里的)的item的index幼东,setNumber() 根據(jù)itemIndex的值動態(tài)地更改item的圖標(biāo)和文字。VC模擬器運(yùn)行結(jié)果如下:
還剩最后一步:讓items沿著圓弧方向滑動!這就需要動態(tài)地修改item的圖標(biāo)根蟹、文字的水平位置坐標(biāo)脓杉。當(dāng)item滑動時,垂直位置會改變简逮,框架會調(diào)用一個叫做 setY() 的函數(shù)球散,在其中修改item的水平坐標(biāo):先利用勾股定理計算出水平坐標(biāo)x,再調(diào)用一個用戶函數(shù) offset(x) 來重新設(shè)置item的x坐標(biāo):
模擬器運(yùn)行結(jié)果:
最后散庶,在IAR中編譯生成目標(biāo)文件(如何正確配置IAR來下載TouchGFX目標(biāo)文件蕉堰,戳這里),下載到目標(biāo)板上運(yùn)行:
沿著圓弧方向滑動手指悲龟,想象一下在撥盤電話機(jī)上撥動的感覺吧(這有點扯了屋讶,^_^)。
《使用TouchGFX開發(fā)STM32界面應(yīng)用之入門篇》到此告一段落了须教,感謝在這些日子里大家的陪伴皿渗。下一篇,我們將進(jìn)入開發(fā)TouchGFX的正題:如何在STM32CUBEMX中創(chuàng)建TouchGFX工程轻腺。