昨天是双12的最后一天,支付宝口碑公布的数据显示,双12活动三天,累计参与的消费者数超1亿。仅12月10日一天,就有4900万人走上街头,用支付宝搞定了自己的吃喝玩乐,“85后”的年轻人占到66%。主打“5折”的餐饮类,是人流量最大的,其次是超市。但是对于其他领域的商家来说,双12的影响却不是那么大。 本篇来自 niorgai 的投稿,篇幅不长,介绍了如何使用 VideoView,适合还未接触的朋友阅读。文末提及的 ExoPlayer,感兴趣的朋友可以关注下。 niorgai 的博客地址:
Android 上原生的控件 VideoView 当然是做视频播放的首选,使用简单,下面介绍一下自己在项目使用过程中的一些注意点. 1. 宽高问题 (1). 由 VideoView 的源码可知,不管你设置的 View 的宽高是多少, VideoView 会根据视频文件的宽高重新设置 View 的宽高,最终显示效果类似于 ImageView 的 FIT_CENTER. (2). 如果想自定义宽高,做到 FIT_XY 的效果,就需要继承 VideoView 重写 onMeasure 方法. 2. 播放和暂停/恢复 (1). 播放调用 setVideoPath() 或 setVideoURI() 即可, VideoView 会异步加载视频,加载完毕回调 OnPreparedListener() .如果播放本地视频,放进 raw 文件夹,如 video_guide.mp4. (2). 暂停: pause(). (3). 恢复: start().注意这里不要调用 resume(). 3. 进度条 (1). 进度检测 UI中一般会有一个 SeekBar 来显示当前播放进度,这里我采取是定时刷新的的办法:
mSeekBar.setMax(mp.getDuration());
mSeekBar.setProgress(mVideoView.getCurrentPosition()). (2). 进度条拖动,必然是通过 OnSeekBarChangeListener() 监控. 4. 显示和隐藏 Loading 图 如果播放网络视频,难免会遇到缓冲的情况,除了视频需要切片之外,客户端还需要监听缓冲状态以显示/隐藏 Loading 图. 5. “无法加载此视频”的提示 如果是一个无法播放的视频,会弹出一个”无法播放此视频”的 Dialog. 从体验的角度来说就算无法播放也不能用这样的 Dialog 来提示,查看源码可知, 只需要为 VideoView 设置 OnErrorListener() 即可. 6. 横竖屏切换 视频当然是全屏播放最好,此时就需要将 Activity 变为横屏. (1). 在 AndroidManifest.xml 设置当前 Activity 的 configChanges 属性. android:configChanges='orientation' (2). 通过代码改变当前 Activity 的横竖屏. (3). 在 View 或 Activity 的 onConfigurationChanged() 回调中处理横竖屏切换. 7. 切换后台或打开新页面(即经过 Activity 的 onStop() 生命周期 因为 VideoView 继承了 SurfaceView , 在 Activity 的 onStop() 生命周期中会调用 surfaceDestroyed(), 此时会释放 MediaPlayer, 所以当切换后台或打开新页面回来,视频就会重头播放,暂时还没想到解决办法. 以上就是关于原生 VideoView 的简单使用, 下一步我考虑切换到 Google 的
如果使用顺利我会继续总结. 每天学习累了,看些搞笑的段子放松一下吧。关注最具娱乐精神的公众号,每天都有好心情。
|
|
来自: 个人文档awpyia > 《android ui》