5.增加启动和暂停控制
TouchGFX采用的是MPV架构,界面和底层完全分离,对于复杂的UI界面非常友好,下面的例子是基于屏幕到底层的例子,View–>Presenter–>Model。其实如果只是控制动画的变化,是只用view自己就够了,但是这样就不能通知到底层。
得先把空间自己装载先给关了。
再增加回调虚函数
生成代码后,打开头文件即可看到创建的回调函数。
然后我们在screenview.cpp里重写并实现这个函数。
void screenView::StartAnimation()
{
if(toggleButton1.getState()){
animatedImage1.startAnimation(false, true, true); //不反转,重置,循环
}else {
animatedImage1.stopAnimation();//停止动画
}
animatedImage1.invalidate(); //重绘控件,必须调用
presenter->button1Clicked(toggleButton1.getState()); //需在presenter定义,通知presenter,按键按下。
}
如果不需要通知底层,那把最后一行删掉,也就成功了。 hpp中增加定义,在cpp里定义。
void screenPresenter::button1Clicked(bool state)
{
model->viewBtnClick(state);//通知model
}
然后再在model里同样的做法。
void Model::viewBtnClick(bool state)
{
if(state){
HAL_GPIO_WritePin(GPIOH, GPIO_PIN_7, GPIO_PIN_RESET);
}else {
HAL_GPIO_WritePin(GPIOH, GPIO_PIN_7, GPIO_PIN_SET);
}
}
**注意:**我这里包含了main.h,用的cubemx生成的会有extern {}的那个,如果是自己弄的要注意,c和c++一起的时候要这样弄,不然编译错误。
|