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

7

这里有一个更好的方法:http://www.quicktips.in/how-to-show-progressbar-while-loading-a-video-in-android-videoview/ - Deepak Swami
3个回答

20

首先,声明进度对话框

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();
    }
});

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
我建议您查看AsyncTask文档,这似乎非常适合进行视频预加载。这将使你在加载期间保持UI线程的稳定性。这里有一个使用AsyncTask方法的示例 添加进度对话框的步骤:
  • 创建一个私人ProgressDialog对象作为AsyncTask的扩展类的一部分。
  • onPreExecute()方法中,您可以执行进度对话框设置,例如:pd.setMessage(...) pd.setTitle(...) pd.show(...)
  • onPostExecute(...)方法中,关闭对话框:pd.dismiss();
此外,您可以使用其incrementProgressBy(...)方法更新进度对话框,或者使用setIndeterminate(...)方法循环动画。在UI设计中给用户提供已加载进度的反馈是个好主意 :)
希望这能帮到您!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接