Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 需要不确定时间的任务的进度条?_User Interface_Progress Bar - Fatal编程技术网

User interface 需要不确定时间的任务的进度条?

User interface 需要不确定时间的任务的进度条?,user-interface,progress-bar,User Interface,Progress Bar,另一个随机问到的问题(我在过去5个小时里喝了9杯咖啡,很抱歉…)——你会向用户展示什么样的进度条,你不知道需要多长时间,但你很清楚“平均”时间。例如,一项任务通常需要30秒左右的时间,但您无法知道进度(除非任务仍在进行或只是失败)。最好的用户体验是什么 一个进度条,一开始速度快,一开始速度慢(可能进度是1/x式的渐进曲线),在平均任务时间内达到50%(eclipse式指南建议这样做) 一个进度条,进度缓慢,速度恒定,可能达到15%左右的“平均时间”(IE/Firefox在最初查找域时会这样做)

另一个随机问到的问题(我在过去5个小时里喝了9杯咖啡,很抱歉…)——你会向用户展示什么样的进度条,你不知道需要多长时间,但你很清楚“平均”时间。例如,一项任务通常需要30秒左右的时间,但您无法知道进度(除非任务仍在进行或只是失败)。最好的用户体验是什么

  • 一个进度条,一开始速度快,一开始速度慢(可能进度是1/x式的渐进曲线),在平均任务时间内达到50%(eclipse式指南建议这样做)
  • 一个进度条,进度缓慢,速度恒定,可能达到15%左右的“平均时间”(IE/Firefox在最初查找域时会这样做)
  • 一个不确定的弯曲条(Mac电脑到处都有,新的windows版本也有),只显示某种运动而不显示任何进度,一个微调器,或一些只通知用户正在进行的动画
如果平均时间是10分钟而不是30秒,答案会有所不同吗

谢谢, 罗伯特

编辑:


需要明确的是,问题是关于进度条的,在进度条中,您不知道/指示需要多长时间(例如,在远程机器上执行任务)。如果您确实有一些进度指示,使用它通常是好的。

为什么不在方法中完成任务时增加进度条?


任务或流程所需的时间无关紧要,当任务的Y部分完成时,或者您已经深入到流程中,可以简单地将progressbar的值增加X个数量。(即在100 KB文件上传中每处理5 KB)

肯定是Barber pole进度条。我认为这是Mac人机界面指南(HIG)的标准。我确信其他平台也存在类似的“未定义”进度条

我还将放置一个文本进度指示器(例如,像传输的字节数)。“猜测”完成百分比是可行的,但你肯定应该非常确定平均时间及其标准偏差,否则你会激怒很多愤怒的用户并单击“取消”,因为你的进度在一小时后就停滞在99%。这对他们和你的软件声誉来说都是非常恼人的。

可用性研究(我找不到pdf)表明,在完全相同的持续时间内,加载具有不同模式(指数、线性、对数)的条,“感觉更快”的条与完成指数的条相比。我的意思是,那些开始慢,但随着时间的推移变得更快的

我通常做的是:

  • 如果我知道这个过程所需的平均时间,再向前移动一点,然后放慢速度直到最后20%-10%,那么进度条就会加速并赶上真正的进度,这样的时间安排使得这个过程在进度条速度最快的时候结束
  • 如果我不知道需要多长时间,我会测量很多次才能得到大致的结果(秒?分钟?小时?)
    • 如果这是一个重复性操作,每次运行之间变化很小,我会考虑最后一次运行的时间
    • 如果这是一个长时间运行的操作或具有高可变性,我不会使用进度条,而是使用动画来显示我正在工作

不要对你的用户撒谎永远不要告诉他们它将在一分钟半小时后结束。我将继续运行。

我将成为Mac和Vista风格旋转圈的超级粉丝,它在不设定误导用户期望的情况下显示了进展

XKCD漫画


进度条是否以精确恒定的速率移动并不重要。事实上,从字面上看,这几乎是不可能的。您如何提前知道哪些因素可能会加速或减缓实际进展

因此,我选择任何方便的方法来衡量需要完成的工作量,并跟踪完成的百分比。如果这是要传输的字节数,要处理的记录数,要处理的foo数,等等。所以当然,有时候它开始的时候很快,然后变慢,反之亦然。但真正重要的是,只要这个过程朝着完成的方向努力,它就会继续前进

我认为困难的问题在于你事先不知道要做多少工作。比如,您必须处理一组记录,但是除了读取所有记录并对其进行计数之外,您没有简单的方法来获取记录计数。一旦您这样做了,您还不如一路处理它们。在这些情况下,我通常不显示进度条,而是显示“进度计数”:如“1条记录已处理”、“2条记录已处理”等。至少用户可以看到它在移动,在他做了几次之后,他可能大致知道它要走多远,也就是说,它是数万对几十万或者其他什么


我现在正在开发一个系统,它通常使用一种我觉得很蹩脚的方法:它们只是将完全任意的百分比附加到任何方便的检查点上。比如,如果一个函数读取一组数据,对其进行排序、格式化并打印,那么当读取完成时,它们会说25%,排序完成时会说50%,格式化完成时会说75%,打印完成时会说100%。我想这总比什么都没有好。

我从未见过它,但是在进度条上滑动一个窗口怎么样,这样你就可以看到工作是否在进行,以什么速度进行,但终点一直离得更远。有点像在月球上行走的进度条。您需要使动画与众不同,这样用户就可以知道正在添加新的blob,并且
==============================================================================
  Executing command xyz.. 

     Started: 10:30 AM (usually requires about 20 minutes to complete)

     Status: 10:35:10 AM.. Still working...{this line needs to update frequently}

  [Send to background]    [Cancel]
==============================================================================