我想在播放视频之前显示进度对话框。我尝试下面的链接示例播放视频。
http://davanum.wordpress.com/2009/12/04/android-%E2%80%93-videomusic-player-sample-take-2/
虽然有效,但播放视频需要花费更多时间,因此我希望在开始播放视频之前显示进度对话框。所以请在播放视频之前告诉我如何显示进度对话框。
谢谢。
最诚挚的问候。
答案 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的例子。
添加进度对话框:
onPreExecute()
方法中,您可以执行进度对话框设置
例如:
pd.setMessage(...) pd.setTitle(...) pd.show(...)
onPostExecute(...)
方法中,关闭对话框:pd.dismiss();
此外,您可以使用其incrementProgressBy(...)
方法更新进度对话框,或者使用setIndeterminate(...)
方法替换循环动画。在UI设计中,向用户提供已加载进度的反馈是一个好主意:)
我希望这有帮助!