
动画 对于TouchGFX来说,动画的类型比较简单,但正是简单的动画方式才可以多重组合,形成复杂的动画效果。TouchGFX动画主要有位置移动、透明度转化、图片轮播、以及3D场景动画。接下来为大家介绍每种动画的特点及使用方法。 动画类型 位置移动: MoveAnimator类 用于移动控件的类,要使用该动画时在Box小部件上的TouchGFX Designer中启用Move Animator混合。在代码上启动该种动画的方法如下:
同时也可以设置一个动画结束时的回调函数,如下所示:
这种添加回调的方式在TouchGFX上使用的很多之后可以通过API查找应用。 透明度转化: FadeAnimator类用于将控件的透明度进行调整,这个动画可以实现动态半透明效果,例如光照之类。 使用方法如下:
当然FadeAnimator类也有回调函数,再此不做过多介绍。 图片轮播: AnimatedImage类用于多张图片的轮播,该类也被封装成了一种小控件,在TouchGFX designer中能看见该类。该动画的属性有暂停以及开始停止。
startAnimation函数参数说明如下: virtual void startAnimation ( const bool rev , const bool reset =false, const bool loop =false ) Starts the animation with the given parameters for animation direction, normal or reverse, whether to restart the animation and finally if the animation should loop automatically upon completion. Parameters: rev Defines if the animation should be performed in reverse order. reset (Optional) Defines if the animation should reset and start from the first (or last if reverse order) bitmap. loop (Optional) Defines if the animation should loop or do a single animation. 3D场景动画: textureMapper类可以用作3D场景的动作,但虽然叫做3D场景,并不是将图像立体化做处理,而是通过将图像变形来展示3D的状态。所以使用的还是CPU的计算。 对于该类的使用建议大家看看官方的API说明。 动画延时和动画速度 有些动画在移动的过程中会有从起始点到结束点的时间,除此之外还有一定时间后开始动画的操作。 接下来要说一说这些操作。 void startMoveAnimation ( int16_t endX , int16_t endY , uint16_t duration , EasingEquation xProgressionEquation =&EasingEquations::linearEaseNone, EasingEquation yProgressionEquation =&EasingEquations::linearEaseNone ) 将动画从当前位置开始移动到指定的结束位置。 动画过程中位置(X,Y)的展开由提供的EasingEquations描述。如果未给出缓和方程,则移动将线性执行。 参数: endX 动画结束时的X位置。 endY 动画结束时的Y位置。 duration 动画的持续时间,以刻度为单位。 xProgressionEquation (可选)描述动画期间X位置的发展的等式。默认值为EasingEquations :: linearEaseNone。 yProgressionEquation (可选)描述动画期间Y位置的发展的等式。默认值为EasingEquations :: linearEaseNone。 这其中duration 是动画运动保持的时间,但是输入的参数并不是毫秒数或者秒数,而是TouchGFX的tick数。 virtual void setMoveAnimationDelay ( uint16_t delay ) 设置一定时间后进行移动动画。 Parameters: delay 延时的tick数。 由此可以看出用于计算动画帧数及动作的的周期是根据系统的TouchGFX的tick周期决定的,也就是说影响动画卡顿的条件之一就是tick的周期。除此之外还有动画刷新幅度的大小。随着大小不一刷新的速度不一致。 在嵌入式板子中如果需要使用动画那就要根据主tick中的业务逻辑进行调整,保证每次tick运行时间接近,以防动画卡顿。 总结 用动画时可以多考虑组合动画来达到想要的目的。总的来说动画的使用是用于嵌入式UI开发的点缀,如果将动画看作卖点的化真的就是画蛇添足了。 ———————————————— 版权声明:空闲的程序员 |
STM32F769I-DISCO开发板GUI学习内容(二)_课前硬件基础
【STM32L562E-DK】健康手环基础界面开发(一)—— 准备工作
汇编浮点库qfplib移植STM32F769I-DISCO开发板与硬件浮点运算性能测试对比
【圣诞专享活动】使用TouchGFX做GUI显示:圣诞快乐&Merry Christmas!
STM32F103移植LittlevGUI代码
【STM32H7S78-DK评测】-5 LVGL&DMA2D DEMO测试
【STM32H7S78-DK评测】-4 LTDC&DMA2D 基本测试
STM32F3DISCOVERY + UCGUI3.90A的移植(源码+视频)
STM32MP135F-DK开发板评测-Linux系统下基于gtk的计算器应用
STM32MP135F-DK开发板评测-Linux系统下的GTK计算器