Touchgfx(交互系统和创建无触发交互)

(一)目的是让Touchgfx给我们自动生成一些函数

(1)Screen1View.cpp

cpp 复制代码
#include <gui/screen1_screen/Screen1View.hpp>
#include <touchgfx/Unicode.hpp>
Screen1View::Screen1View()
{
		num = 0;
}
void Screen1View::setupScreen()
{
    Screen1ViewBase::setupScreen();
}
void Screen1View::tearDownScreen()
{
    Screen1ViewBase::tearDownScreen();
}
void Screen1View::addButtonClickHandler()
{
		num++;
		Unicode::snprintf(textArea1Buffer,TEXTAREA1_SIZE,"%d",num);
		textArea1.invalidate();
		newTrigger();
		if(num==5)
			application().gotoScreen2ScreenSlideTransitionWest();
}
void Screen1View::newAction(int32_t val)
{
	touchgfx_printf("执行了newAction,参数值为:%d",val);
}

(2)Screen1View.hpp

cpp 复制代码
#ifndef SCREEN1VIEW_HPP
#define SCREEN1VIEW_HPP
#include <gui_generated/screen1_screen/Screen1ViewBase.hpp>
#include <gui/screen1_screen/Screen1Presenter.hpp>
class Screen1View : public Screen1ViewBase
{
public:
    Screen1View();
    virtual ~Screen1View() {}
    virtual void setupScreen();
    virtual void tearDownScreen();
	virtual	void addButtonClickHandler();
	virtual	void newAction(int32_t val);	
protected:
		int num;
};

#endif // SCREEN1VIEW_HPP

(3)Screen1ViewBase.cpp

cpp 复制代码
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#include <gui_generated/screen1_screen/Screen1ViewBase.hpp>
#include <touchgfx/Color.hpp>
#include <texts/TextKeysAndLanguages.hpp>
#include <images/BitmapDatabase.hpp>

Screen1ViewBase::Screen1ViewBase() :
    buttonCallback(this, &Screen1ViewBase::buttonCallbackHandler),
    interaction1Counter(0)
{
    __background.setPosition(0, 0, 1024, 600);
    __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
    add(__background);

    bgBox.setPosition(0, 0, 1024, 600);
    bgBox.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
    add(bgBox);

    box1.setPosition(96, 40, 50, 50);
    box1.setColor(touchgfx::Color::getColorFromRGB(255, 0, 0));
    add(box1);

    textArea1.setPosition(48, 161, 146, 30);
    textArea1.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
    textArea1.setLinespacing(0);
    Unicode::snprintf(textArea1Buffer, TEXTAREA1_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_N7BF).getText());
    textArea1.setWildcard(textArea1Buffer);
    textArea1.setTypedText(touchgfx::TypedText(T___SINGLEUSE_UOL8));
    add(textArea1);

    addButton.setXY(36, 223);
    addButton.setBitmaps(touchgfx::Bitmap(BITMAP_BLUE_BUTTONS_ROUND_EDGE_SMALL_ID), touchgfx::Bitmap(BITMAP_BLUE_BUTTONS_ROUND_EDGE_SMALL_PRESSED_ID));
    addButton.setLabelText(touchgfx::TypedText(T___SINGLEUSE_7J1W));
    addButton.setLabelColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
    addButton.setLabelColorPressed(touchgfx::Color::getColorFromRGB(255, 255, 255));
    addButton.setAction(buttonCallback);
    add(addButton);
}
Screen1ViewBase::~Screen1ViewBase()
{

}
void Screen1ViewBase::setupScreen()
{

}
void Screen1ViewBase::buttonCallbackHandler(const touchgfx::AbstractButton& src)
{
    if (&src == &addButton)
    {
        //Interaction4
        //When addButton clicked call virtual function
        //Call addButtonClickHandler
        addButtonClickHandler();

        //Interaction5
        //When addButton clicked call newAction on Screen1
        //Call newAction
        newAction(126);
    }
}

void Screen1ViewBase::afterTransition()
{
    //Interaction1
    //When screen transition ends delay
    //Delay for 3000 ms (180 Ticks)
    interaction1Counter = INTERACTION1_DURATION;
}
void Screen1ViewBase::handleTickEvent()
{
    if (interaction1Counter > 0)
    {
        interaction1Counter--;
        if (interaction1Counter == 0)
        {
            //Interaction2
            //When Interaction1 completed change color of box1
            //Set RGB color R:0, G:255, B:0 on box1
            box1.setColor(touchgfx::Color::getColorFromRGB(0, 255, 0));
            box1.invalidate();
        }
    }

}
void Screen1ViewBase::newTrigger()
{
    //Interaction6
    //When newTrigger is called change color of box1
    //Set RGB color R:0, G:0, B:255 on box1
    box1.setColor(touchgfx::Color::getColorFromRGB(0, 0, 255));
    box1.invalidate();
}

(4)Screen1ViewBase.hpp

cpp 复制代码
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#ifndef SCREEN1VIEWBASE_HPP
#define SCREEN1VIEWBASE_HPP

#include <gui/common/FrontendApplication.hpp>
#include <mvp/View.hpp>
#include <gui/screen1_screen/Screen1Presenter.hpp>
#include <touchgfx/widgets/Box.hpp>
#include <touchgfx/widgets/TextAreaWithWildcard.hpp>
#include <touchgfx/widgets/ButtonWithLabel.hpp>

class Screen1ViewBase : public touchgfx::View<Screen1Presenter>
{
public:
    Screen1ViewBase();
    virtual ~Screen1ViewBase();
    virtual void setupScreen();
    virtual void afterTransition();
    virtual void handleTickEvent();

    /*
     * Custom Actions
     */
    virtual void newAction(int32_t value)
    {
        // Override and implement this function in Screen1
    }
    virtual void newTrigger();
    /*
     * Virtual Action Handlers
     */
    virtual void addButtonClickHandler()
    {
        // Override and implement this function in Screen1
    }
protected:
    FrontendApplication& application() {
        return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance());
    }
    touchgfx::Box __background;
    touchgfx::Box bgBox;
    touchgfx::Box box1;
    touchgfx::TextAreaWithOneWildcard textArea1;
    touchgfx::ButtonWithLabel addButton;
    static const uint16_t TEXTAREA1_SIZE = 10;
    touchgfx::Unicode::UnicodeChar textArea1Buffer[TEXTAREA1_SIZE];
private:
    touchgfx::Callback<Screen1ViewBase, const touchgfx::AbstractButton&> buttonCallback;
    void buttonCallbackHandler(const touchgfx::AbstractButton& src);
    static const uint16_t INTERACTION1_DURATION = 180;
    uint16_t interaction1Counter;

};

#endif // SCREEN1VIEWBASE_HPP
相关推荐
7yewh10 分钟前
MCU程序加密保护(二)ID 验证法 加密与解密
单片机·嵌入式硬件·安全
YOYO--小天13 分钟前
RS485和RS232 通信配置
linux·嵌入式硬件
小_楠_天_问17 分钟前
第二课:ESP32 使用 PWM 渐变控制——实现模拟呼吸灯或音调变化
c语言·嵌入式硬件·mcu·esp32·arduino·pwm·esp32-s3
欢乐熊嵌入式编程1 小时前
智能手表项目风险评估与应对计划书
嵌入式硬件·物联网·目标跟踪·智能手表
JANYI20182 小时前
TTL、RS-232、RS-485电平转换详解
单片机·嵌入式硬件
向宇it3 小时前
【unity游戏开发——编辑器扩展】使用EditorGUI的EditorGUILayout绘制工具类在自定义编辑器窗口绘制各种UI控件
开发语言·ui·unity·c#·编辑器·游戏引擎
昊昊昊昊昊明4 小时前
十天学会嵌入式技术之51单片机—day-10
单片机·嵌入式硬件·51单片机
小众AI4 小时前
UI-TARS: 基于视觉语言模型的多模式代理
人工智能·ui·语言模型
剑鞘的流苏5 小时前
STM32-USART串口通信(9)
stm32·单片机·嵌入式硬件
花落已飘7 小时前
LVGL(lv_btnmatrix矩阵按钮)
ui·c·lvgl