我有一個奇怪的情況。我正在使用NexPlayer在OpenGL模式下渲染流式視頻。在流式視頻的渲染區域(framelayout)之上,每當視頻播放器緩衝時,我都會以不確定模式顯示ProgressBar - 與YouTube應用的功能相當。FrameLayout之上的ProgressBar
這可以正常工作,玩家停止緩衝,我嘗試從屏幕上移除進度條。進度條停止動畫,但仍保留在屏幕上,就好像它是視頻上的水印一樣。 我嘗試刪除它的方式是通過更改進度條的可見性;我已經嘗試了View.INVISIBLE和View.GONE,但都不起作用。 我也嘗試在另一個佈局中包裝進度條並更改該容器的可見性,但無濟於事。
我注意到當我旋轉設備時,進度條消失。
以下是玩家活動的xml佈局。那裏的表面視圖僅用於設備不支持OpenGL 2.0的情況。
有沒有人有任何想法如何擺脫這個ProgressBar?
在此先感謝!
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<FrameLayout
android:id="@+id/gl_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" >
</FrameLayout>
<SurfaceView
android:id="@+id/surface"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true" >
</SurfaceView>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/controlContainer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#aa000000"
android:orientation="vertical"
android:padding="10dp" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" >
<ToggleButton
android:id="@+id/buttonPausePlay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/selector_play_pause"
android:textOff=""
android:textOn="" />
<ImageButton
android:id="@+id/buttonStop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#00000000"
android:src="@drawable/ic_media_stop" />
</LinearLayout>
<ProgressBar
android:id="@+id/seekbar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:enabled="false"
android:indeterminate="false" />
</LinearLayout>
<LinearLayout
android:id="@+id/loadingContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:orientation="vertical" >
<ProgressBar
android:id="@+id/loading"
style="@android:style/Widget.ProgressBar.Large.Inverse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true" />
</LinearLayout>
</RelativeLayout>
編輯:改變視圖的可視性代碼:
@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框架內調用。我確信他們確實被調用,因爲我在日誌中獲得輸出。
你能張貼您使用顯示和嘗試的代碼隱藏進度條? – Craigy
我添加了代碼。感謝您的期待! – Mopper