跳转到主要内容

进度框

进度框显示当前进度,方法是将一个简单的置于背景图像的顶上作为进度指示器。 可以配置框的颜色Alpha和框的前进方向。 可以创建自定义的背景图像,并更改进度指示器的不同参数(比如位置和大小),以适应自定义的背景图像。

在模拟器中运行的进度框

控件组

进度框位于TouchGFX Designer中的进度指示器控件组中。

TouchGFX Designer中的进度框

属性

TouchGFX Designer中进度框的属性。

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

WH指定控件的宽度和高度。
进度框的大小由所选背景图像的大小决定。

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

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

进度设置进度框的颜色。
进度位置XY坐标指定进度框的左上角相对于进度指示器的位置。

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

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

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

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

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

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

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

交互

下面的部分介绍了进度框支持的操作和触发条件。

动作

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

触发

Trigger说明
Value update completeWill be triggered when an update animation is completed. If duration of the update is 0 the update will happen instantly but will still trigger this event.
Value updatedWill be triggered for both instant updates and intermediate steps during an update animation. Will only trigger when the new value differs from the current one.

性能

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

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

示例

生成代码

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

Screen1ViewBase.cpp
boxProgress.setXY(148, 126);
boxProgress.setProgressIndicatorPosition(2, 2, 180, 16);
boxProgress.setRange(0, 100);
boxProgress.setDirection(touchgfx::AbstractDirectionProgress::RIGHT);
boxProgress.setBackground(touchgfx::Bitmap(BITMAP_BLUE_PROGRESSINDICATORS_BG_MEDIUM_PROGRESS_INDICATOR_BG_SQUARE_0_DEGREES_ID));
boxProgress.setColor(touchgfx::Color::getColorFromRGB(0, 151, 255));
boxProgress.setValue(0);

用户代码

下面的示例演示了如何实现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 = boxProgress.getValue();
int16_t max;
int16_t min;
boxProgress.getRange(min, max);

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

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

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

TouchGFX Designer示例

如需进一步了解进度框,请尝试在TouchGFX Designer中使用以下UI模板创建新应用:

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

API参考