在程序中需要打开若干个第三方程序,不同的程序加载时长不同,想要加一个进度条让用户明确地看到还需要等待多长的时间。在加载过程中不知道还需要多长时间,所以processBar的最大值不知道,求大佬提供解决思路。

解决方案 »

  1.   

    1. 打开多少程序,MaxValue就设几
    2. 虽然加载时间不知道,但是每个应用加载时间能比较出相对长短,多测几次,每个应用设置一个权值,MaxValue = 权值相加。
      

  2.   

    进度条不是计时器,它只是用来告诉用户当前进度是多少,完全可以根据任务数来展示进度。
    方案1:所有程序权值都是1,MaxValue=程序数量,Value=已经打开的程序数量(其实也是权值相加,不过大家都是1)。
    方案2:所有程序权值不一样,自己测结果。假设三个程序ABC打开时间分别要3秒,8秒,10秒;换一台电脑,可能是10秒,30秒,40秒;绝对时间有长有短,但是完全可以假定同样场景下,每个程序有自己的相对快慢,A一定比C慢。最终就可以给它们设定权值:3,8,10。MaxValue=21,Value=已经打开的程序权值相加。当然这只是理想场景。但即使ABC实际打开时间是6秒,5秒,8秒,最终呈现的效果也足以欺骗用户。如果实在转不过这个弯,可以自己模拟两遍看看。
    如果你的目的是精确预测出每个程序的打开时间,那不可能做到。
      

  3.   

    可以设置为第三方程序打开多少设置多少 maxValue值
      

  4.   

    打开程序的时间受N种因素影响,不可能每次都一样,所以想做一个真正的跟着时间走的进度条是不现实的,除非你的第三方程序有返回值告诉你加载到哪一步了。
    如果你想要进度值平滑的效果,可以用Marquee样式的进度条,让它一直滚动,然后提示用户当前在加载哪个程序。