2012-05-09 36 views
0

我有一个ProgressBar和一个VideoView都在RelativeLayout中,ProgressBar以z顺序浮动在VideoView上方(在XML之后)。 ProgressBar是不确定的。当我切换视频源时,通过将其可见性设置为View.VISIBLE,我将显示ProgressBar,直到新视频播放完毕。我正在UI线程中执行此操作。使进度条覆盖VideoView立即显示

但我的ProgressBar不会立即显示,尽管我的日志语句(也在UI线程中,立即在setVisibility()调用之前)立即发生。它需要几(2或3)秒。我已经尝试了许多事情来立即使ProgressBar显示,并且已经用完了想法。

  • 添加动画(到进度;还向RelativeLayout的)
  • 做出动画结束可见性改变发生
  • progressBar.bringToFront()
  • progressBar.invalidate()和postInvalidate()
  • relativeLayout.invalidate()和postInvalidate()

我怎样才能使进度立即出现?

回答

1

可能尝试使整个视图无效或执行setContentView(R.layout.abc);

我在类似情况下所做的也是使用调度程序启动后续代码,以便UI屏幕更新有时间更新并且不会被优先推回。如果你可以在你的代码中做到这一点,那么即使0.5秒也足够了......?

+0

谢谢;我尝试了调度程序的方法,但它没有帮助。 –

+0

这真的很奇怪 - 到目前为止它总是在我的情况下工作。我猜想,必须有其他一些任务让UI不再更新。它有2-3秒的延迟时间吗?那么肯定的是,肯定会有一些让UI不能更新的东西! – user387184

+0

我认为发生的事情是很多来自其他方法的UI线程阻塞。代码非常糟糕。 –