2012-05-09 9 views
0

ProgressBarとVideoViewの両方がRelativeLayout内にあり、ProgressBarがVideoViewの上にzオーダーで浮動している(XMLの後に)。 ProgressBarは不確定です。ビデオソースを切り替えると、新しいビデオが再生されるまでProgressBarが表示されます。その表示はView.VISIBLEに設定されます。私はUIスレッドでこれをやっています。VideoViewディスプレイにProgressBarオーバーレイを即座に作成する

しかし私のロギングステートメント(UIスレッドでも、setVisibility()呼び出しの直前)は即座に発生しますが、私のProgressBarはすぐには表示されません。数秒(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スレッドのブロックです。コードはかなりひどく絡まっています。 –

関連する問題