Android上使用VideoView来创建播放器

722 阅读1分钟

VideoView和MediaController

在Android上最快速的实现一个播放器的方法莫过于使用VideoView+MediaController的方式了。其中VideoView继承自SurfaceView,内部使用了MediaPlayer实现对视频的解码和渲染。看一下VideoView的方法,其中比较重要的方法就是setVideoURI,设置播放的视频源,可以是本地文件,也可以是网络文件。start/stop/suspend/pause/resume/seekTo就是主要的播放程。VideView实现了MediaController的接口,可以通过setMediaController来设置一个控制播放的MediaController控件。

MediaController是用来控制播放器的一个控件,包括基本的播放,暂停,回退,快进,和一个进度控制条,来控制播放器的播放。setAnchroView设置了MediaController应该在浮现在哪个View之上。

实例

首先我们在Manifest文件中添加一个VideoView的控件。

        <VideoView
            android:id="@+id/videoView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"/>

创建播放器,在Activity中,通过下面的代码就可以通过VideoView和MediaController创建出一个播放器。具有基本的播放功能。

        String video_path = Environment.getExternalStorageDirectory().getPath() + "/test.mp4";
        final VideoView videoView = (VideoView) findViewById(R.id.videoView);
        videoView.setVideoPath(video_path);
        MediaController mediaController = new MediaController(this);
        mediaController.setAnchorView(videoView);
        videoView.setMediaController(mediaController);

        videoView.start();

我们可能希望得到一个全屏的界面,通过以下的代码即可实现窗口全屏。这个需要在setContentView之前调用。

    private void hideSystemUI() {
        View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_IMMERSIVE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
    }

参考:

developer.android.com/reference/a… developer.android.com/reference/a… www.techotopia.com/index.php/A…