FrameLayoutの上にあるProgressBar

私には奇妙な状況があります。私はNexPlayerを使ってストリーミングビデオをOpenGLモードでレンダリングしています。ストリーミングビデオ(framelayout)のレンダリング領域の上に、ビデオプレーヤーがバッファリングしているときは必ず、不確定モードでProgressBarを表示します。これはYouTubeアプリの機能に匹敵します。

これは、プレーヤーがバッファリングを停止して、画面からプログレスバーを削除しようとするまでうまく動作します。プログレスバーのアニメーションは停止しますが、ビデオ上のウォーターマークのように画面に残ります。 私がそれを削除しようとする方法は、プログレスバーの可視性を変更することです。 View.INVISIBLEとView.GONEの両方を試しましたが、いずれも動作しません。 また、別のレイアウトでプログレスバーを折り返して、そのコンテナの可視性を変更しようとしましたが、無駄にしました。

私は、デバイスを回転させると、プログレスバーが消えることに気付きました。

以下は、プレーヤーのアクティビティのxmlレイアウトです。そこのサーフェイスビューは、デバイスがOpenGL 2.0をサポートしていない場合にのみ使用されます。

誰もこのProgressBarを取り除く方法について考えていますか?

前もって感謝します!

<?xml version="1.0" encoding="utf-8"?>










    

        

        
    

    




    




編集:ビューの可視性を変更するコード:

@Override
public void onBuffering(int progress_in_percent) {
    Log.d(TAG, "Buffering " + progress_in_percent + " %");
}

@Override
public void onBufferingBegin() {
    Log.d(TAG, "Buffering begin");
     loadingContainer.setVisibility(View.VISIBLE);
}

@Override
public void onBufferingEnd() {
    Log.d(TAG, "Buffering end");
    loadingContainer.setVisibility(View.GONE);
}

これらのメソッドは、NexPlayerフレームワーク内から呼び出されます。ログに出力が表示されるので、私は彼らが呼び出されると確信しています。

1
追加された 編集された
ビュー: 4
私はコードを追加しました。見てくれてありがとう!
追加された 著者 Mopper,
表示に使用するコードを投稿してプログレスバーを非表示にすることができますか?
追加された 著者 Craigy,

1 答え

そうですね、私はそれを理解しました。 NexPlayerフレームワークから取得していたコールバックは、UIスレッドではありませんでした。奇妙なことに、これはログにスタックトレースを発生させませんでしたので、デバッガを接続して例外が発生した場合に中断するブレークポイントを追加するまで、これに気付かなかったのです。

上記のコードとまったく同じことをするランナブルを作成し、それらをハンドラに投稿することでこれを修正しました。

(ProgressBarが最初に表示された理由は、間違ったスレッドでも表示されていたためです。)

2
追加された