Android上定义播放器控件UniversalVideoView

在Android上播放视频最简单的方法是使用SDK中内置的VideoView,然后加上MediaController来控制视频播放暂停等,但是这样有一个缺点是无法定制自己的控制UI,所以这里提供一个自定义播放控件,它可以设置多种自定义属性(如loading样式,错误视频等),并且很容易在全屏与非全屏之间切换,另外支持Android V2.3及以上系统.

项目地址: https://github.com/linsea/UniversalVideoView

使用方法

完整的使用方法请参考项目里的Sample.

1. 在build.gradle文件上加入以下依赖包.

1dependencies { 2 compile 'com.linsea:universalvideoview:1.1.0@aar' 3 }

2. 在布局文件中加入自定义View,注意要使UniversalVideoView和UniversalMediaController位于同一个父Layout中, 这样控制条才会浮在视频之上.

1            <FrameLayout 2 android:id="@+id/video_layout" 3 android:layout_width="fill_parent" 4 android:layout_height="200dp" 5 android:background="@android:color/black"> 6 7 <com.universalvideoview.UniversalVideoView 8 android:id="@+id/videoView" 9 android:layout_width="fill_parent" 10 android:layout_height="fill_parent" 11 android:layout_gravity="center" 12                    app:uvv_autoRotation="true" 13 app:uvv_fitXY="false" /> 14 15 <com.universalvideoview.UniversalMediaController 16 android:id="@+id/media_controller" 17 android:layout_width="fill_parent" 18 android:layout_height="fill_parent" 19 app:uvv_scalable="true" /> 20 21 </FrameLayout>

3. 在onCreate方法中设置相关事件的监听.

1View mBottomLayout; 2View mVideoLayout; 3UniversalVideoView mVideoView; 4UniversalMediaController mMediaController; 5 6mVideoView = (UniversalVideoView) findViewById(R.id.videoView); 7mMediaController = (UniversalMediaController) findViewById(R.id.media_controller); 8mVideoView.setMediaController(mMediaController); 9 10mVideoView.setVideoViewCallback(new UniversalVideoView.VideoViewCallback() { 11 @Override 12 public void onScaleChange(boolean isFullscreen) { 13 this.isFullscreen = isFullscreen; 14 if (isFullscreen) { 15 ViewGroup.LayoutParams layoutParams = mVideoLayout.getLayoutParams(); 16 layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT; 17 layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT; 18 mVideoLayout.setLayoutParams(layoutParams); 19 //设置全屏时,无关的View消失,以便为视频控件和控制器控件留出最大化的位置 20 mBottomLayout.setVisibility(View.GONE); 21 } else { 22 ViewGroup.LayoutParams layoutParams = mVideoLayout.getLayoutParams(); 23 layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT; 24 layoutParams.height = this.cachedHeight; 25 mVideoLayout.setLayoutParams(layoutParams); 26 mBottomLayout.setVisibility(View.VISIBLE); 27 } 28 } 29 30 @Override 31 public void onPause(MediaPlayer mediaPlayer) { // 视频暂停 32 Log.d(TAG, "onPause UniversalVideoView callback"); 33 } 34 35 @Override 36 public void onStart(MediaPlayer mediaPlayer) { // 视频开始播放或恢复播放 37 Log.d(TAG, "onStart UniversalVideoView callback"); 38 } 39 40 @Override 41 public void onBufferingStart(MediaPlayer mediaPlayer) {// 视频开始缓冲 42 Log.d(TAG, "onBufferingStart UniversalVideoView callback"); 43 } 44 45 @Override 46 public void onBufferingEnd(MediaPlayer mediaPlayer) {// 视频结束缓冲 47 Log.d(TAG, "onBufferingEnd UniversalVideoView callback"); 48 } 49 50});

注意:
UniversalVideoView 没有保存播放的状态,如播放到第几分钟了,所以需要应用自己保存这些状态并恢复.
如果为了避免在旋转屏幕时系统重启Activity,需要添加Activity的属性:

android:configChanges="orientation|keyboardHidden|screenSize

4 定制属性

为了保证定制UI的灵活度,提供以下属性:

uvv_fitXY

UniversalVideoView的属性,布尔值,true时设置视频缩放时在X,Y方向上铺满View设置的宽度和高度,这样可能使视频变形.false时则缩放时保持视频的长宽比例,与SDK中的VideoView类似.

uvv_autoRotation

UniversalVideoView的属性,布尔值,true时视频会根据重力响应通知客户进行全屏与非全屏之间的切换.

uvv_scalable

UniversalMediaController属性,布尔值,是否显示控制条右下方的缩放按钮,如果不想全屏播放时,可以设置为false不显示.

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

vue video全屏播放

需求:1、视频为长方形,页面初始化打开为横屏全屏播放视频。2、微信不支持自动播放,故自动播放需求删除。方法:1、vuevideoplayer插件因需求较简单,仅要求播放本地一个视频,故未选择使用插件。2、video<divid"video_box"style"zindex:999;":cl

android开发笔记之多媒体—播放音频(音乐)

Android应用增加动画,视频,音乐等多媒体功能,因此为手机提供音频录制,播放,视频录制,播放的功能十分重要。Android提供了常见音频,视频的编码,解码机制,Android支持的音频格式有MP3,WAV和3GP等,支持的视频格式有MP4和3GP等。Android提供了这些多媒体的支持类,可以非常方便地在手机应用中播放音频,

03.视频播放器Api说明

03.视频播放器Api说明目录介绍01.最简单的播放02.如何切换视频内核03.切换视频模式04.切换视频清晰度05.视频播放监听06.列表中播放处理07.悬浮窗口播放08.其他重要功能Api09.播放多个视频10.