在这种特殊情况下,一个过程中有9个自动步骤需要不同的时间长度。我们目前有一个数字显示在进度条中心的百分比,但它遇到常见的停止走走问题,赛车高达33%,等待很长时间,比赛高达55%,等待更长的时间然后完成。
向用户展示此内容的最佳方式是什么?我们是否应该删除该数字,删除整个进度条以支持ajax类型的圆形动画,为九个步骤添加描述性文本并将其关闭或保留原样?你有什么想法?
答案 0 :(得分:3)
如果确实需要很长时间,那么AJAX类型的动画可能不是一个好主意。我会选择项目清单。
答案 1 :(得分:2)
进度条用于向用户保证某些事情正在发生。如果您没有更详细的步骤列表,我建议“伪造”它们。
一个基本的解决方案是运行计时器并慢慢增加进度,将其限制在下一个逻辑步长值。如果步骤花费的时间差异很大,您可以手动调整每个计时器'tick'的增量值,具体取决于您所处的步骤。
然而,一个更好的解决方案(我曾经用这种方式实现它,但我不能发布代码:)),随着步骤的继续,将逐渐减少增量 - 所以它永远不会完全进入下一步。然后下一步到达,你有一个很好的跳跃,循环重复。
答案 2 :(得分:1)
在某些情况下,进度条指示发生的事情比准确和顺利更重要。当进度条停止前进时,用户往往会感到恐慌。
如果你的酒吧冻结一段时间有问题,最好用一般的动画来替换它,这会让用户放心发生的事情,而不用担心显示过程有多远。或者,保持进度条的位置,但添加一些额外的动画作为安慰剂。
答案 3 :(得分:1)
如果您有兴趣,这里有一篇关于用户对进度条感知的非常有趣的文章。让我想一想:
答案 4 :(得分:1)
为了扩展Cadet Pirx的答案,这里有一些WinForms C#代码。您需要一个新的UserControl
。在其上加ProgressBar
控件,名为inner
。添加以下代码:
public partial class ZenoProgressBar : UserControl
{
private const int DEFAULT_FACTOR_VALUE = 10;
private const int DEFAULT_MAXIMUM_VALUE = 100;
public ZenoProgressBar()
{
InitializeComponent();
Maximum = DEFAULT_MAXIMUM_VALUE;
Factor = DEFAULT_FACTOR_VALUE;
}
/// <summary>
/// The "speed" of the progress bar. While it will never get to
/// the end, it uses this number to decide how much further to
/// go each time Increment is called. For example, setting it to
/// 2 causes half of the remaining distance to be covered.
/// </summary>
[DefaultValue(DEFAULT_FACTOR_VALUE)]
public int Factor { get; set; }
[DefaultValue(DEFAULT_MAXIMUM_VALUE)]
public int Maximum { get; set; }
private void ZenoProgressBar_Load(object sender, EventArgs e)
{
inner.Dock = DockStyle.Fill;
}
public void Increment()
{
inner.Value += (inner.Maximum - inner.Value) / Factor;
}
}
答案 5 :(得分:0)
我几乎遇到了同样的问题。我们还有9个步骤,因此条形图将分别为11%,22%33%等等,并且还会比其他步骤花费更长的时间。
我决定让两个较长的步数算作两个,所以我们怎么有11个步骤,所以它不那么明显,并且跳跃并不总是均匀:9%,18%,36%,45完成%,54%,72%,81%,90%。步长值总是相同的,但由于步骤的大小不明显,所以它有效..