- 这第一种方法就目前来看不是很推荐! “ 二、大小屏切换创建两个播放器设...~
- 如果你觉得自己能力不错,那就赶紧把这个方法get去吧~
- 有第三种方法是在Activity中预留容器,所以要是有ActionBar的Activity在...~
始发于微信公众号: 程序员小乐
分享编程技能、互联网技术、生活感悟、打造干货分享平台,将总结的技术、心得、经验分享给大家,这里不只限于技术!学无止境,不求尽如人意,但求问心无愧。让学习成为一种美、一种习惯。值得爱学习的你去关注,感觉有帮助转发分享让更多的人去关注!点击上方 蓝字 关注!
作者:Dawish_大D
链接:http://blog.csdn.net/u010072711/article/details/51517170
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。Android视频播放器实现小窗口和全屏状态切换—– 由 分享
每日英语
one day you’ll understand that it’s harder to be kind than clever. cleverness is a gift, yet kindness is a choice.
有一天你会明白,善良比聪明更难。聪明是一种天赋,而善良是一种选择。
实在是不好意思,楼下评论的兄弟久等了,这文章一直没写第一是没时间,第二是自己准备也不充足,最近才看了好几个Android视频播放器的开源项目,才对视频播放器的大小切换有点了解,就我目前的了解,视频播放器的大小屏切换基本有三个方案可选,下面我分别简单地讲一下,至于具体的实现我会给出github的链接,大家直接去看源代码。
“
一、让播放器悬浮在Activity中
所谓让视频播放器悬浮在activity中,就是播放器在内存里面,需要显示的时候就设置一个锚点view,当时小窗口的时候播放器就跟随这个锚点view滚动和重绘,我看到过这样的实现,可以说想法很好,看起来也很完美,下面看一下其大概的源代码:
可以看到,这个方式很巧妙,但是,但是,这种方法也有致命的缺点,我们注册了滚动和绘制监听来控制我们的播放器,一旦我们把播放器放在scrollView或者recyclerView中,那就要教你做人了,播放器的晃动非常厉害,由于我们是注册的监听器来确定播放器的位置,这样我们在滚动控件中,视频播放器的位置跟滚动的位置总是慢一拍,导致在滚动控件在播放器有严重的果冻效果,体验很不好,如果可以优化器滚动效果那么这个方法还是很好的。我看到的是使用了surfaceview来播放视频,不知道使用textureview会不会减轻这个果冻效果,不放在滚动控件中只是放大和缩小这种方法还是不错的。
这第一种方法就目前来看不是很推荐!
“
二、大小屏切换创建两个播放器设置同一个TextureView
开源项目:JieCaoVideoPlayer
这种方法小屏切换到大屏是创建了两个播放器,或者说是创建了两个TextureView的容器,从小到大的时候在Activity中创建了一个全屏的播放器容器,并把当前的视频渲染器(TextureView)和监听器都给赋值过去了,由于使用了TextureView,所以在滚动控件中使用也不会用果冻效果,可以说是正真意义的完美的播放器全屏方案。大小切换由于TextureView的容器换了,所以中间会有很短时间的黑屏,但是可以忽略:
这第二种方法比较推荐,但是你要很懂播放器,对源代码很熟悉,由于是直接对ijkMediaplayer进行的封装,中间还会对视频的播放监听器进行切换,所以还是有点复杂的,这方法可以做到真正的全屏,无视是否有ActionBar什么的,直接全屏。如果你觉得自己能力不错,那就赶紧把这个方法get去吧。
“
三、在Activity中留一个全屏的ViewGroup来放置播放器
开源项目:SuperPlayer
这方法需要在Activity中预留一个放置播放器的宽高都match_parent的ViewGroup,大小切换就是把播放器添加到本来的小容器和添加到全屏的ViewGroup中来回切换,对于播放器的监听器也不用过多干预,是比较通俗易懂简单的方法:
这个方法是主动来切换activity的横竖屏来通知播放器和activity来对大小屏的切换里做出处理,当然你也可以不用onConfigurationChanged方法来间接处理,自己写一个方法来处理,并旋转播放器90度也是可以的,但是这种方法要对activity的ActionBar做处理,要是有ActionBar就需要hide。
“
四、 在Activity和Fragment中实现大小屏切换
开源项目:MDPlayer
在Activity中使用:
在Fragment的RecyclerView中使用:
这是我自己参考第三种方法实现的,我增加了再Fragment、Activity和RecyclerView中放大缩小播放器,基本涵盖了我们遇到的所有场景了。有第三种方法是在Activity中预留容器,所以要是有ActionBar的Activity在放大播放器后,ActionBar并不会主动隐藏,需要我们主动hide和show ActionBar:
要是在Fragment中使用,就要在Fragment中找到Activity中预留的容器:
在fragment和Activity中使用都要在方法中做出相应操作,下面是在Fragment中使用:
如果您觉得不错,请别忘了分享到您的朋友圈让更多的人看到!! 您的举手之劳,就是对我最好的支持,非常感谢!
每日掏心话
人活着就应该像齐天大圣,疯过,爱过,恨过,闯过,拼过,努力过,但从没怕过。
推荐阅读
推荐阅读
小密圈
这里聚集了业界内的大牛,值得各位大牛的加入!

看完本文有收获?请转发分享给更多人
关注「杨守乐」,提升编程技能
【QQ技术群】279126311 [未]
【QQ技术群】484572225 [未]
小密圈
这里聚集了业界内的大牛,值得各位大牛的加入!看完本文有收获?请转发分享给更多人
关注「杨守乐」,提升编程技能
【QQ技术群】279126311 [未]
【QQ技术群】484572225 [未]
以上就是:Android视频播放器实现小窗口和全屏状态切换 的全部内容。
本站部分内容来源于互联网和用户投稿,如有侵权请联系我们删除,谢谢。
Email:[email protected]