VideoView 全屏显示

首先

自定义一个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();
            }
        });
注:有关videoview的方法后续有机会还会在更新,先写这么多

你可能感兴趣的:(VideoView 全屏显示)