首先
自定义一个Videoview,CustomVideoView,继承Videoview。构造函数,关键方法是onMeasure,其中getDefaultSize测量了宽和高的值。
public class CustomVideoView extends VideoView{
public CustomVideoView(Context context) {
super(context);
}
public CustomVideoView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomVideoView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
/**
*作用是返回一个默认的值,如果MeasureSpec没有强制限制的话则使用提供的大小.否则在允许范围内可任意指定大小
* 第一个参数size为提供的默认大小,第二个参数为测量的大小
*
*/
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width=getDefaultSize(0,widthMeasureSpec);
int height=getDefaultSize(0,heightMeasureSpec);
setMeasuredDimension(width,height);
}
@Override
public void setOnPreparedListener(MediaPlayer.OnPreparedListener l) {
super.setOnPreparedListener(l);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return super.onKeyDown(keyCode, event);
}
}
然后
在活动中引用前,先在xml中定义CustomVideoView长和宽都是match_parent(因为是全屏。。),这里的还需要设置它的焦点(focusable)和focusableInTouchMode和clickable,皆为false。
最后
就是在活动中引用啦,videoview的setVideoURI方法找MP4的资源。我是直接在res中放了RAW的文件夹,把视频资源放在这里的。
customVideoView.setVideoURI(Uri.parse("android:resource://"+this.getPackageName()+"/" +R.raw.welcomevideo));
customVideoView.start(); //开始播放
由于是app的welcome界面所以视频资源最好是循环播放的,因此调用了setOnCompletionListener方法:
customVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
customVideoView.start();
}
});