如何在播放视频之前显示进度条

时间:2011-02-07 13:40:15

标签: android video-streaming progressdialog

我想在播放视频之前显示进度对话框。我尝试下面的链接示例播放视频。

http://davanum.wordpress.com/2009/12/04/android-%E2%80%93-videomusic-player-sample-take-2/

虽然有效,但播放视频需要花费更多时间,因此我希望在开始播放视频之前显示进度对话框。所以请在播放视频之前告诉我如何显示进度对话框。

谢谢。

最诚挚的问候。

3 个答案:

答案 0 :(得分:18)

首先,声明进度对话框

private static ProgressDialog progressDialog;

然后,在onCreate中,在调用runOnUiThread之前,启动对话框

progressDialog = ProgressDialog.show(this, "", "Loading...", true);

在playVideo中,设置一个OnPreparedListener,在视频准备播放时将关闭对话框

mVideoView.setOnPreparedListener(new OnPreparedListener() {

    public void onPrepared(MediaPlayer arg0) {
        progressDialog.dismiss();
        mVideoView.start();
    }
});

答案 1 :(得分:8)

在这种情况下,恕我直言,使用进度对话框中的ProgressBar小部件更加优雅。它在视频表面看起来更好。您可以将进度条添加到VideoView上方的活动布局中:

<ProgressBar 
    android:id="@+id/progress" 
    android:indeterminate="true" 
    android:indeterminateBehavior="repeat" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:layout_gravity="center">
</ProgressBar>

在onCreate中,在调用runOnUiThread之前,显示进度:

mProgress = (ProgressBar)findViewById(R.id.progress);
mProgress.setVisibility( View.VISIBLE );

在onPrepared回调中隐藏进度:

mProgress.setVisibility( View.INVISIBLE );

答案 2 :(得分:2)

我建议查看AsyncTask documentation,这似乎非常适合进行视频预加载。这将允许您在加载过程中保持UI线程稳定。有一个使用AsyncTask方法here的例子。

添加进度对话框:

  • 创建私人ProgressDialog object作为扩展类的一部分 of AsyncTask。
  • onPreExecute()方法中,您可以执行进度对话框设置 例如: pd.setMessage(...) pd.setTitle(...) pd.show(...)
  • onPostExecute(...)方法中,关闭对话框:pd.dismiss();

此外,您可以使用其incrementProgressBy(...)方法更新进度对话框,或者使用setIndeterminate(...)方法替换循环动画。在UI设计中,向用户提供已加载进度的反馈是一个好主意:)

我希望这有帮助!