【问题标题】:How to implement progressDialog in videoview when buffering video [like youtube]缓冲视频时如何在videoview中实现progressDialog [如youtube]
【发布时间】:2016-04-28 14:13:10
【问题描述】:

我已经实现了这段代码。 http://www.androidbegin.com/tutorial/android-video-streaming-videoview-tutorial/

但它显示整个活动的进度对话框,但我的要求是仅在视频视图中显示进度对话框,就像在缓冲视频时在 youtube 中显示一样。

【问题讨论】:

标签: android progressdialog


【解决方案1】:

使用以下代码,您可以在视频缓冲时检测到:

 videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
                @Override
                public boolean onInfo(MediaPlayer mp, int what, int extra) {
                    if (what == MediaPlayer.MEDIA_INFO_BUFFERING_START)
                        bufferingDialog.show();
                    if (what == MediaPlayer.MEDIA_INFO_BUFFERING_END)
                        bufferingDialog.dismiss();
                    return false;
                }
            });
        }
    });
    videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
        @Override
        public boolean onError(MediaPlayer mp, int what, int extra) {
            bufferingDialog.dismiss();
            return false;
        }
    });

也推荐看看this库。

【讨论】:

    【解决方案2】:

    这可能会帮助你尝试这种方式

    XML

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <VideoView
            android:id="@+id/videoview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true" />
    
        <ProgressBar
            android:id="@+id/progressbar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:visibility="gone" />
    
    </RelativeLayout>
    

    MainActivity.java

    public class MainActivity extends Activity {
    
        ProgressBar progressBar = null;
    
        VideoView videoView = null;
    
        String videoUrl = "video path here";
    
        Context context = null;
    
        @Override
        public void onCreate(Bundle iclic) {
            super.onCreate(iclic);
    
            context = null;
    
            requestWindowFeature(Window.FEATURE_NO_TITLE);
    
            setContentView(R.layout.activity_main);
    
            videoView = (VideoView) findViewById(R.id.videoview);
            progressBar = (ProgressBar) findViewById(R.id.progressbar);
    
            Uri videoUri = Uri.parse(videoUrl);
    
            videoView.setVideoURI(videoUri);
            videoView.start();
    
            progressBar.setVisibility(View.VISIBLE);
    
            videoView.setOnPreparedListener(new OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    // TODO Auto-generated method stub
                    mp.start();
                    mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() {
                        @Override
                        public void onVideoSizeChanged(MediaPlayer mp, int arg1,
                                int arg2) {
                            // TODO Auto-generated method stub
                            progressBar.setVisibility(View.GONE);
                            mp.start();
                        }
                    });
    
                }
            });
    
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多