VideoView的API:
http://developer.android.com/intl/zh-cn/reference/android/widget/VideoView.html

在来看看它的继承关系 :

java.lang.Object   ↳    android.view.View       ↳    android.view.SurfaceView           ↳    android.widget.VideoView

Added in API level 1

继承自SurfaceView;
上一篇: 想用SurfaceView+MediaPlayer播放视频, 调用起来太麻烦, VideoView就对其做了封装, 很明显, 它解决了这个问题,

先上一张效果图 :
Android视频播放: VideoView播放视频(三)_第1张图片


如果你只需要一个简单的播放视频版本:
xml布局文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="shibin.com.videoviewdemo.MainActivity">    <VideoView        android:id="@+id/videoview"        android:layout_width="match_parent"        android:layout_height="match_parent"/>LinearLayout>

Java代码:

    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mVideoView = (VideoView) findViewById(R.id.videoview);        mVideoView.setVideoURI(Uri.parse("视频路径"));        mVideoView.start();    }

哈哈, 三行代码完事儿了:

这里给一个视频的测试路径 :

http://ht-mobile.cdn.turner.com/nba/big/teams/kings/2014/12/12/HollinsGlassmov-3462827_8382664.mp4

如果你想实现更多的功能, 来看看它的其他API :

        //监听是否准备好        mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {            @Override            public void onPrepared(MediaPlayer mp) {                //这里可以做一些播放前的操作, 例如取消加载动画之类的            }        });        //播放完的监听        mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {            @Override            public void onCompletion(MediaPlayer mp) {                //播放完的操作, 例如可以重播                mp.start();                //或者显示一些其他的视频播放列表            }        });        //错误信息的监听        mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {            @Override            public boolean onError(MediaPlayer mp, int what, int extra) {                //默认return false, 会弹出一个视频错误的对话框, 可以return true;                return false;            }        });        //一些乱七八糟信息的监听        mVideoView.setOnInfoListener(new MediaPlayer.OnInfoListener() {            @Override            public boolean onInfo(MediaPlayer mp, int what, int extra) {                // * 
  • {@link #MEDIA_INFO_UNKNOWN} -- 找不到视频 // *
  • {@link #MEDIA_INFO_VIDEO_TRACK_LAGGING} // *
  • {@link #MEDIA_INFO_VIDEO_RENDERING_START} // *
  • {@link #MEDIA_INFO_BUFFERING_START} -- 缓冲开始 // *
  • {@link #MEDIA_INFO_BUFFERING_END} -- 缓冲结束 // *
  • MEDIA_INFO_NETWORK_BANDWIDTH (703) - // * bandwidth information is available (as extra kbps) // *
  • {@link #MEDIA_INFO_BAD_INTERLEAVING} // *
  • {@link #MEDIA_INFO_NOT_SEEKABLE} // *
  • {@link #MEDIA_INFO_METADATA_UPDATE} // *
  • {@link #MEDIA_INFO_UNSUPPORTED_SUBTITLE} // *
  • {@link #MEDIA_INFO_SUBTITLE_TIMED_OUT} /** * 通过what去判断, 可以做相应的操作 */ return false; } }); //设置视频播放路径, 两种方法效果都是一样的,setVideoPath( )背后还是走setVideoURI( ) mVideoView.setVideoPath("xxx"); mVideoView.setVideoURI(Uri.parse("xxx")); //开始播放 mVideoView.start(); //暂停 mVideoView.pause(); //停止 mVideoView.stopPlayback(); //获取视频的总时长 mVideoView.getDuration(); //当前播放视频的位置 mVideoView.getCurrentPosition(); //视频缓存的百分比 mVideoView.getBufferPercentage(); //获取播放状态 mVideoView.isPlaying();
  • 他基本上重写了MediaPlayer的大部分API, 调用方法也类似, 如果你会用MediaPlayer, 那么VideoView使用起来也会得心应手

    PS: 有些API 的调用需要等到视频播放之后才会有效, 例如: 例如获取视频播放时长, 获取缓冲百分比,,,,
    还有, 记得加上网络访问权限

    总结: 它的优点很明显, 调用非常方便,

    当然缺点也有的: 比如播放加载时候过长; 在比如: 如果你想要把它放在一个可以滑动的列表中, 见鬼去吧! 滑动的时候可能导致屏幕渲染变黑的问题~~

    当然, 这个问题会在后面的文章中被解决.

    更多相关文章

    1. Android短视频开发
    2. 视频专辑: 善知堂android 4.0.3 就业视频教程
    3. 视频教程-Android Material Design 新控件-Android
    4. eclipse android开发环境 bug CDT包含路径名无法修改(JNI开发使用
    5. Android获取存储设备挂载路径
    6. 全家桶!阿里P8大佬熬夜15天,把所有Android第三方库整理成了PDF,附第
    7. android环境搭建及改变默认avd路径
    8. 3G Android智能手机视频预览万里
    9. 最新Android开发视频教程(共6章)Android Studio教程(2017-2018)

    随机推荐

    1. Android(安卓)UI设计的FrameLayout与Tabl
    2. 高德天气应用开发之二:android 高德天气AP
    3. Mono For Android离线激活
    4. Android自定义背景的设置方法
    5. Android用户界面 UI组件--AdapterView及
    6. Android日志(Log类)
    7. Android仿百度谷歌搜索自动提示框AutoCom
    8. Android、JUnit深入浅出(一)——JUnit初步
    9. Android(安卓)in Mono开发初体验之DataBa
    10. 基于Android的WiFi对讲机项目简介