在播放视频前增加等待画面和进度提示
Android可以通过VideoView很方便的实现在线视频部分,可参见调用android api播放视频,不过该例子中的在线视频已经无法访问了。可使用这个源代码(实现了最简单的在线播放):
在线播放,可能需要等待片刻才能开始,或者有些客户需要在用户观看视频前看一下广告。比如:
然后:
基本思路是,VideoView放在一个FrameLayout中,因为FrameLayout是重叠放置视图组件的,再放一个ImageView和ProgressBar,然后注册VideoView的setOnPreparedListener监听器,当视频加载完毕后,让进图条和待机图片消失。
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:layout_width="fill_parent"
android:gravity="center" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout android:layout_width="fill_parent"
android:gravity="center" android:layout_height="fill_parent">
<VideoView android:id="@+id/videoView" android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
<LinearLayout android:layout_width="fill_parent"
android:gravity="center" android:layout_height="fill_parent">
<ImageView android:id="@+id/image" android:layout_height="wrap_content"
android:layout_width="wrap_content" />
</LinearLayout>
<LinearLayout android:layout_width="fill_parent"
android:gravity="center|bottom" android:layout_height="fill_parent">
<ProgressBar android:id="@+id/progress"
android:layout_height="wrap_content" android:layout_width="wrap_content" />
</LinearLayout>
</FrameLayout>
有关监听器的代码:
package com.easymorse.videoplayer;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.MediaController;
import android.widget.ProgressBar;
import android.widget.VideoView;public class MediaPlayerActivity extends Activity {
private VideoView videoView;private ImageView imageView;
private ProgressBar progressBar;@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.video);this.videoView = (VideoView) this.findViewById(R.id.videoView);
this.imageView = (ImageView) this.findViewById(R.id.image);
this.imageView.setImageResource(R.drawable.ad);
this.progressBar=(ProgressBar) this.findViewById(R.id.progress);MediaController controller = new MediaController(this);
this.videoView.setMediaController(controller);
this.videoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
progressBar.setVisibility(View.GONE);
imageView.setVisibility(View.GONE);
mp.start();
}
});videoView
.setVideoURI(Uri
.parse("http://wangjun.easymorse.com/wp-content/video/mp4/tuzi.3gp"));
}
}
源代码见:
日志引用
这篇文章上的评论的 RSS feed TrackBack URI