• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 設計應用 > TouchGFX 處理按鈕長按的一種方法

    TouchGFX 處理按鈕長按的一種方法

    作者: 時間:2023-11-13 來源:ST 收藏

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

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

    2. 操作方法

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

    圖1. Enable ClickListener

    1699856700813691.png

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

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

    (2)用戶代碼中實現回調

    Designer 中對Button 控件啟用ClickListener Mixin 后,下一步是在這個Button 所在的Screen 的頭文件中添加控件的Click 的回調和其回調處理函數的聲明。

    回調函數的聲明應包含以下三點內容:要綁定的類名,此例中為Screen1View;回調來自哪個Widget,此處為Button;以及發生事件的類型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; 

    };

    然后,將回調函數的聲明和回調函數的處理函數綁定到視圖對象。

    1699856765753628.png

    下一步是通過setClickAction()的方法告訴Button1這個Widget,當它被按下時,去調用哪個回調函數。

    1699856810836730.png

    最后,實現回調函數的處理函數,同時可以根據需要自行增加按鈕按下和釋放時的處理。

    1699856851688229.png

    (3)添加handleTickEvent()聲明和定義,用于處理計時相關邏輯,此函數以60Hz的頻率被引擎調用。

    1699856886220882.png

    1699856909590616.png

    1699856929549479.png

    (4)根據實際應用需求實現長按鍵的處理

    在我們的測試例程中,實現了三秒長按鍵后,切換Text文本顯示的功能,如下。

    圖2. 長按前效果

    1699856970428313.png


    圖3. 長按3S后效果

    1699856999839906.png


    3. 總結

    本文解釋了如何通過ClickListener實現對按鈕控件自定義功能,實際應用中大多數的Widgets以及View本身都可以通過ClickListener實現點擊和釋放時的自定義處理。




    關鍵詞: TouchGFX Botton ST

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 张家口市| 罗定市| 沐川县| 永寿县| 赣榆县| 贺兰县| 兴城市| 舟曲县| 根河市| 维西| 额尔古纳市| 宾阳县| 巫山县| 蒙阴县| 尼玛县| 黄陵县| 三穗县| 宜丰县| 连山| 惠安县| 绵竹市| 灵武市| 古交市| 咸阳市| 章丘市| 仪陇县| 攀枝花市| 饶阳县| 彰化市| 西贡区| 博客| 华蓥市| 安阳县| 嘉祥县| 天气| 巴中市| 尖扎县| 潞城市| 安阳县| 成安县| 瓦房店市|