进度条
概念
在使用Matlab开发界面时,有一个很好用的工具就是进度条。在计算过程中,为用户提供计算进度的反馈是改善用户体验的重要手段。
一项进行的计算任务,如果其总体进度是比较容易量化,则可以按照0%~100%的方式,更新界面上的指示。
当一项任务的进度难以量化,或者只需要提示程序目前正在忙碌之中,则可以提供一个界面动画来提示任务正在进行中。
当然,进度条还可能提供另外一个功能,取消背景任务的功能。
综上所述,进度条的概念提供了三个方面的功能:
- 显示任务的量化进度;
- 显示非量化的任务进心中;
- 提供取消任务的功能。
这在UI/UX中,是三个不同的概念。
此外,在使用进度条中,还有一个需要分析清楚的需求。也就是是否需要有并行的才做。这就决定在显示进度条的对话框(窗口)是模式对话框还是非模式对话框。
- 模式对话框:必须关闭对话框才能操作父窗口;
- 非模式对话框:无需关闭对话框,可以把焦点切换到父窗口,与其中的控件交互。
这两种模式的对话框用途略有不同,模式对话框采取了中断用户操作的方式,使用户的全部注意力集中于当前对话框中;而非模式对话框则是提供独立的额外信息,随时可以关闭、置于后台和查看。通过用户体验进行需求分析,很容易就可以确定使用哪种对话框。
- 如果程序只有一项中心任务正在进行,且不便于或者无需提供其它交互,则进度条选择模式对话框
- 如果是一项背景任务或者异步任务,这更适合选择非模式对话框来实现进度条,或者把进度条放置于当前窗口中的某个位置(如状态栏)
在Matlab这种以计算为核心的环境中,大部分时候都会把主要的资源集中用于数值计算,所以模式对话框来显示进度、提供取消的功能可能会更加符合逻辑。
工具
在以uifigure
为基础的App开发中,提供了一系列对话框和通知的工具:
函数 | 作用 |
---|---|
uialert |
显示警报对话框 |
uiconfirm |
创建确认对话框 |
uiprogressdlg |
创建进度对话框 |
uisetcolor |
打开颜色选择器 |
uigetfile |
打开文件选择对话框 |
uiputfile |
打开用于保存文件的对话框 |
uigetdir |
打开文件夹选择对话框 |
uiopen |
打开文件选择对话框并将选定的文件加载到工作区中 |
uisave |
打开用于将变量保存到 MAT 文件的对话框 |
进度条对话框
语法
进度条是一个对话框,名字都称为是dlg
。调用的方式:
d = uiprogressdlg(fig)
d = uiprogressdlg(fig,Name,Value)
调用的第一个参数是不能省略的,对应一个图窗,必须采用uifigure
函数创建。
而参数有以下几类:
- 外观:
Message
,显示在进度条上面的信息;Title
,对话框的标题Icon
,在进度条左侧显示的图标,采用图像名称或者图像数组Interpreter
,文本的解释器(tex
,latex
,html
),如果动态更新信息或者标题的频率过高,设置解释器可能会降低效率
- 进度:
Value
,这个是一个∈[0,1]\in [0,1]∈[0,1]中的数值,就是主要的设定进度的接口ShowPercentage
,是否显示比分比的文本,默认是’off’Indeterminate
,设定不确定的进度,仅仅显示任务进行中
- 交互性
Cancelable
,是否允许取消,如果设置为on
,则显示一个取消按钮CancelText
,设定取消按钮的文本CancelRequest
,是否已经请求取消的属性,如果已经按下取消按钮,这个值就是true
,程序可以选择相应的处理。
在创建过程中,可以设定这些值,也可以采用仅仅传入fig
的方式调用,后续采用属性的方式设定。
dlg = uiprogressdlg(fig);
dlg.Icon = "logo.png";
dlg.Cancelable = 'on';
dlg.CancelText = "Stop";
% ...
d.Message = "step 1 done";
d.Value = 0.55