跳转到主要内容

动画图像

动画图像能够使用一系列共用同一标识符的图像从头至尾运行动画。 动画图像能够在停止或暂停之前运行一次动画或循环运行动画。

在模拟器中运行的动画图像

控件组

动画图像位于TouchGFX Designer中的图像控件组中。

TouchGFX Designer中的动画图像

属性

TouchGFX Designer中动画图像的属性。

属性组属性说明
名称控件的名称名称是TouchGFX Designer和代码中使用的唯一标识符
位置XY 指定控件左上角相对于其父的位置。

WH 指定控件的宽度和高度。
模拟图像的大小是从关联图像的大小获取的,其大小无法更改(除非更改图像)。

锁定指定控件是否应锁定为其当前的X、Y、W和H。
如果锁定控件,还会禁止通过屏幕与控件进行交互。

可见 指定控件的可见性。 如果将控件标记为不可见,还会禁止通过屏幕与控件进行交互。
图像第一个图像最后一个图像指定用于动画的一系列图像中的第一个图像和最后一个图像。
所用图像必须使用标识符,例如img_01.png、img_02.png、img_03.png、img_04.png、img_05.png、img_06.png、img_07.png等。
动画加载时启动指定动画是否应在屏幕加载时立即启动。

反向动画指定用于动画的图像是否应按相反顺序运行。

循环动画指定动画是否应连续运行。

更新间隔指定动画中每个图像间隔的时长。
外观Alpha 指定控件的透明度。 控件的Alpha值介于0和255之间。 0表示完全透明,255表示不透明。
Mixin可拖动 指定在运行时控件是否可拖动。

ClickListener 指定控件被点击时是否会调用回调函数。

FadeAnimator 指定控件是否可绘制其 Alpha 值变化的动画。

MoveAnimator 指定控件是否可绘制 XY 值变化的动画。

交互

下面的部分介绍了动画图像支持的操作和触发条件。

操作

标准控件操作说明
移动控件随时间的推移将控件移动到新位置。
渐隐控件随时间的推移改变控件的Alpha值。
隐藏控件隐藏控件(将可见性设置为false)。
显示控件使隐藏的控件可见(将可见性设置为true)。

触发条件

触发条件说明
动画已完成动画图像已完成其动画。

性能

动画图像取决于其图像绘图,在大部分平台上,会将动画图像视为执行速度较快的控件。
动画图像会按照更新间隔绘图。 因此,较低的更新间隔会产生更多的图像绘制。

更多关于图像绘图性能的信息,请阅读常规UI组件性能部分。

示例

生成代码

在生成的视图基类的代码中,可以查看TouchGFX Designer是如何创建动画图像的。

mainViewBase.cpp
#include <gui_generated/main_screen/mainViewBase.hpp>
#include "BitmapDatabase.hpp"

mainViewBase::mainViewBase()
{

image.setXY(0, 0);
image.setBitmap(touchgfx::Bitmap(BITMAP_BLUE_BACKGROUNDS_MAIN_BG_TEXTURE_480X272PX_ID));

animatedImage.setXY(0, -104);
animatedImage.setBitmaps(BITMAP_BUTTERFLY_01_ID, BITMAP_BUTTERFLY_72_ID);
animatedImage.setUpdateTicksInterval(2);
animatedImage.startAnimation(false, true, true);

add(image);
add(animatedImage);
}

void mainViewBase::setupScreen()
{

}
Tip
可在用户代码中使用这些函数以及动画图像类中提供的其他函数。 如果更改控件的外观,请必须调用 animatedImage.invalidate() 强制进行重新绘制。

用户代码

以下代码示例介绍了动画完成后如何设置动画图像的回调函数:

mainView.hpp
#ifndef MAINVIEW_HPP
#define MAINVIEW_HPP

#include <gui_generated/main_screen/mainViewBase.hpp>
#include <gui/main_screen/mainPresenter.hpp>

class mainView : public mainViewBase
{
public:
mainView();
virtual ~mainView() {}
virtual void setupScreen();
virtual void tearDownScreen();
protected:
/*
* Callback Declarations
*/
touchgfx::Callback<mainView, const touchgfx::AnimatedImage&> animatedImageAnimationDoneCallback;

/*
* Callback Handler Declarations
*/
void animatedImageAnimationDoneCallbackHandler(const touchgfx::AnimatedImage& src);
};

#endif // MAINVIEW_HPP
mainView.cpp
#include <gui/main_screen/mainView.hpp>

mainView::mainView():
animatedImageAnimationDoneCallback(this, &mainView::animatedImageAnimationDoneCallbackHandler)
{

}

void mainView::setupScreen()
{
mainViewBase::setupScreen();
animatedImage.setDoneAction(animatedImageAnimationDoneCallback);
}

void mainView::tearDownScreen()
{
mainViewBase::tearDownScreen();
}

void mainView::animatedImageAnimationDoneCallbackHandler(const touchgfx::AnimatedImage& src)
{
if (&src == &animatedImage)
{
//execute code whenever the animation of animatedImage stops
}
}

TouchGFX Designer示例

如需进一步了解动画图像,请尝试在TouchGFX Designer中使用下列UI模板之一创建新应用:

TouchGFX Designer中的动画图像示例UI模板

API参考