跳转到主要内容

基于图像的进度条

基于图像的进度条显示当前进度,方法是将平铺的图像置于背景图像上方作为进度指示器。 进度图像、Alpha、以及图像的进度方向可以配置。 可以创建自定义的背景图像,并更改进度指示器的不同参数(比如位置和大小),以适应自定义的背景图像。

在模拟器中运行的基于图像的进度条

控件组

基于图像的进度条位于TouchGFX Designer中的进度指示器控件组中。

TouchGFX Designer中的基于图像的进度条

属性

TouchGFX Designer中基于图像的进度条的属性。

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

WH 指定控件的宽度和高度。
“基于图像的进度条”的大小由所选背景图像的大小决定。

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

可见 指定控件的可见性。
如果将控件标记为不可见,还会禁止通过屏幕与控件进行交互。
样式样式 指定控件的预定义设置,用于将所选属性设为预定义的值。
这些样式包含可免费使用的图像
图像背景设置背景图像。

进度设置用于显示进度的图像。
进度位置XY坐标指定进度图像的左上角相对于进度指示器的位置。

WH 指定进度图像的宽度和高度。
最小值最大值指定指示器的最小和最大整数值。

初始指定进度指示器的初始值。总步数指定进度指示器报告新值的粒度。 例如,如果需要以0%、10%、20%、...、100%的形式报告进度,总值应该设为10。

最小步数指定进度指示器显示的最小步数。
外观方向指定进度指示器的进度方向。

将进度图像锚定在零点指定进度图像是否应该锚定在0点(相对于进度方向),即图像是“revealed”还是“pulled”。

Alpha指定控件的透明度。 控件的Alpha值介于0和255之间。 0表示完全透明,255表示不透明。
Mixin可拖动 指定在运行时控件是否可拖动。

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

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

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

交互

下面的部分介绍了“基于图像的进度条”支持的操作和触发。

动作

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

触发

基于图像的进度条不会产生任何触发。

性能

基于图像的进度条包含一幅平铺的图像和一幅背景图像。 因此,基于图像的进度条取决于图像绘制,在大部分平台上,会被视为执行速度较快的控件。

关于图像绘制性能的更多信息,请阅读通用UI组件性能一节。

示例

生成代码

在生成的视图基类的代码中,可以查看TouchGFX Designer是如何创建“基于图像的进度条”的。

Screen1ViewBase.cpp
imageProgress.setXY(148, 126);
imageProgress.setProgressIndicatorPosition(2, 2, 180, 16);
imageProgress.setRange(0, 100);
imageProgress.setDirection(touchgfx::AbstractDirectionProgress::RIGHT);
imageProgress.setBackground(touchgfx::Bitmap(BITMAP_BLUE_PROGRESSINDICATORS_BG_MEDIUM_PROGRESS_INDICATOR_BG_SQUARE_DEGREES_ID));
imageProgress.setBitmap(BITMAP_BLUE_PROGRESSINDICATORS_FILL_TILING_PROGRESS_INDICATOR_FILL_STRIPED_NORMAL_HORIZONTAL_ID);
imageProgress.setValue(0);
imageProgress.setAnchorAtZero(false);
Tip
可在用户代码中使用这些函数以及ImageProgress类中提供的其他函数。 如果更改控件的外观,请必须调用 imageProgress1.invalidate() 强制进行重新绘制。

用户代码

下面的示例演示了如何实现handleTickEvent()函数以模拟进度。 运行这段代码将创建本文开头所示的应用

Screen1View.hpp
class Screen1View : public Screen1ViewBase
{
public:
Screen1View();
virtual ~Screen1View() {}
virtual void setupScreen();
virtual void tearDownScreen();
virtual void handleTickEvent();
protected:
bool increase = true;
};
Screen1View.cpp
void Screen1View::handleTickEvent()
{
int currentValue = imageProgress.getValue();
int16_t max;
int16_t min;
imageProgress.getRange(min, max);

if (currentValue == min)
{
increase = true;
}
else if (currentValue == max)
{
increase = false;
}

int nextValue = increase == true ? currentValue+1 : currentValue-1;

imageProgress.setValue(nextValue);
}

TouchGFX Designer示例

如需进一步了解“基于图像的进度条”,请尝试在TouchGFX Designer中使用以下UI模板创建新应用:

TouchGFX Designer中的进度指示器示例UI模板

API参考