新聞中心

        EEPW首頁 > 設(shè)計(jì)應(yīng)用 > TouchGFX 處理按鈕長(zhǎng)按的一種方法

        TouchGFX 處理按鈕長(zhǎng)按的一種方法

        作者: 時(shí)間:2023-11-13 來源:ST 收藏

        1. 前言在使用 設(shè)計(jì)UI 界面時(shí),用同一按鈕的長(zhǎng)按和短按表示不同的功能是個(gè)比較常見的實(shí)際需求。普通的Button 控件可以通過Interactions 處理一些基本的交互動(dòng)作,通過下面一些簡(jiǎn)單的操作,我們可以將這個(gè)普通的Button 改造成可以根據(jù)不同的按鍵時(shí)間處理不同事務(wù)的多功能按鈕。

        本文引用地址:http://www.104case.com/article/202311/452791.htm

        2. 操作方法

        (1)創(chuàng)建一個(gè)按鈕,并在Mixins 中勾選ClickListener 功能,使Button 能夠響應(yīng)觸控輸入。

        圖1. Enable ClickListener

        1699856700813691.png

        啟用ClickListener Mixin 后,會(huì)更改生成的控件的聲明,下面的代碼表示button1 啟用了ClickListener Mixin。

        touchgfx::ClickListener< touchgfx::Button > button1;

        (2)用戶代碼中實(shí)現(xiàn)回調(diào)

        Designer 中對(duì)Button 控件啟用ClickListener Mixin 后,下一步是在這個(gè)Button 所在的Screen 的頭文件中添加控件的Click 的回調(diào)和其回調(diào)處理函數(shù)的聲明。

        回調(diào)函數(shù)的聲明應(yīng)包含以下三點(diǎn)內(nèi)容:要綁定的類名,此例中為Screen1View;回調(diào)來自哪個(gè)Widget,此處為Button;以及發(fā)生事件的類型ClickEvent。

        Screen1View.hpp

        class Screen1View : public Screen1ViewBase

        {

        public:

        Screen1View();

        virtual ~Screen1View() {} 

        virtual void setupScreen(); 

        virtual void tearDownScreen(); 

        void ButtonClickHandler(const Button& b, const ClickEvent& e); 

        protected: 

        Callback<Screen1View, const Button&, const ClickEvent&> buttonClickedCallback; 

        };

        然后,將回調(diào)函數(shù)的聲明和回調(diào)函數(shù)的處理函數(shù)綁定到視圖對(duì)象。

        1699856765753628.png

        下一步是通過setClickAction()的方法告訴Button1這個(gè)Widget,當(dāng)它被按下時(shí),去調(diào)用哪個(gè)回調(diào)函數(shù)。

        1699856810836730.png

        最后,實(shí)現(xiàn)回調(diào)函數(shù)的處理函數(shù),同時(shí)可以根據(jù)需要自行增加按鈕按下和釋放時(shí)的處理。

        1699856851688229.png

        (3)添加handleTickEvent()聲明和定義,用于處理計(jì)時(shí)相關(guān)邏輯,此函數(shù)以60Hz的頻率被引擎調(diào)用。

        1699856886220882.png

        1699856909590616.png

        1699856929549479.png

        (4)根據(jù)實(shí)際應(yīng)用需求實(shí)現(xiàn)長(zhǎng)按鍵的處理

        在我們的測(cè)試?yán)讨?,?shí)現(xiàn)了三秒長(zhǎng)按鍵后,切換Text文本顯示的功能,如下。

        圖2. 長(zhǎng)按前效果

        1699856970428313.png


        圖3. 長(zhǎng)按3S后效果

        1699856999839906.png


        3. 總結(jié)

        本文解釋了如何通過ClickListener實(shí)現(xiàn)對(duì)按鈕控件自定義功能,實(shí)際應(yīng)用中大多數(shù)的Widgets以及View本身都可以通過ClickListener實(shí)現(xiàn)點(diǎn)擊和釋放時(shí)的自定義處理。




        關(guān)鍵詞: TouchGFX Botton ST

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 错那县| 抚远县| 连山| 苏尼特左旗| 金湖县| 巴林右旗| 图们市| 柏乡县| 合江县| 达孜县| 福鼎市| 冕宁县| 社会| 开鲁县| 修水县| 大庆市| 桂林市| 永福县| 毕节市| 万源市| 城口县| 将乐县| 中牟县| 吉林市| 海宁市| 棋牌| 历史| 南充市| 休宁县| 伊宁县| 淮南市| 出国| 石城县| 德令哈市| 名山县| 马公市| 乌兰察布市| 彝良县| 和顺县| 巴彦淖尔市| 徐闻县|