# ExoPlayerVideoView **Repository Path**: adam_zjz/ExoPlayerVideoView ## Basic Information - **Project Name**: ExoPlayerVideoView - **Description**: 基于ExoPlayer的VideoView - **Primary Language**: Android - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 20 - **Created**: 2017-03-24 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ExoPlayerView ExoPlayerView 是一款简基于[ExoPlayer](https://github.com/google/ExoPlayer)的播放器控件. ![brightness](/images/brightness_new.png) ![controller_1](/images/controller_1_new.png) ![fast_forward_rewind](/images/fastforward_rewind_new.png) ![landscape](/images/landscape_new.png) ![portrait](/images/portrait_new.png) ![volume](/images/volume_new.png) 在 `build.gradle` 文件中加入下面语句即可引用ExoPlayerView: compile 'com.jarvanmo:exoplayerview:0.1.0' ExoPlayerView 可以直接播放一像常用视频, 比如说 mp4,m3u8等等,也可以用于直播.使用起来也很简单. 你需要在你的布局文件里面做如下声明: ```xml ``` ExoVideoView 提供了4种视频适应模式: fit , fit_width , fit_height 以及 none. 属性 orientationAuto 决定了controller的方向是否由传感器控制,当方向发生变化时,会回调: ```java videoView.setFullScreenListener(new ExoVideoPlaybackControlView.ExoClickListener() { @Override public void onClick(View view, boolean isPortrait) { videoView.changeOrientation(); } }); ``` 此时,如果是传感器引起的方向变化,参数view则为null.当前版本中,布局的方面不是由传感器决定的,你需要在代码中 控制,因为在我实际工作,我们是不以传感器为准的。后续版本可能会提供开关。 播放代码如下: ```java videoView.play(mediaSource); ``` 当你调用play(mediaSource)方法播放时ExoPlayerView会自动为你创建一个SimpleExoPlayer; 当然你也可以构建你自己的ExoPlayer: ```java videoView.setPlayer(player); ``` 注意:不要忘记释放ExoPlayer: ```java videoView.releaseSelfPlayer(); ``` 可以提供一个显示名字: ```java mediaSource.setDisplayName("LuYu YouYue"); ``` 或者; ```java videoView.setDisplayName("LuYu YouYue"); ``` 也有一些监听器供你使用 : ```java videoView.setBackListener(new ExoVideoPlaybackControlView.ExoClickListener() { @Override public void onClick(View view, boolean isPortrait) { if(isPortrait){ finish(); }else { videoView.changeOrientation(); } } }); ``` ```java videoView.setFullScreenListener(new ExoVideoPlaybackControlView.ExoClickListener() { @Override public void onClick(View view, boolean isPortrait) { videoView.changeOrientation(); } }); ``` 也提供了横屏时在控制条添加自定义view: ```java videoView.addViewToControllerWhenLandscape(view); ``` 其中,view会添加到FrameLayout中. 注意:`changeOrientation()` 只会影响控制控件的样式,不会做任何旋转操作. ExoVideoView 也支持手势操作, 比如说左滑调亮度,右滑调音量,也可以快近或后退. 如果你的target SDK version 是在23或以上, 不要忘记申请权限: ```xml ```