0°

Android视频播放器实现小窗口和全屏状态切换

内容预览:
  • 这第一种方法就目前来看不是很推荐! “ 二、大小屏切换创建两个播放器设...~
  • 如果你觉得自己能力不错,那就赶紧把这个方法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滚动和重绘,我看到过这样的实现,可以说想法很好,看起来也很完美,下面看一下其大概的源代码:


Android视频播放器实现小窗口和全屏状态切换

Android视频播放器实现小窗口和全屏状态切换


可以看到,这个方式很巧妙,但是,但是,这种方法也有致命的缺点,我们注册了滚动和绘制监听来控制我们的播放器,一旦我们把播放器放在scrollView或者recyclerView中,那就要教你做人了,播放器的晃动非常厉害,由于我们是注册的监听器来确定播放器的位置,这样我们在滚动控件中,视频播放器的位置跟滚动的位置总是慢一拍,导致在滚动控件在播放器有严重的果冻效果,体验很不好,如果可以优化器滚动效果那么这个方法还是很好的。我看到的是使用了surfaceview来播放视频,不知道使用textureview会不会减轻这个果冻效果,不放在滚动控件中只是放大和缩小这种方法还是不错的。

这第一种方法就目前来看不是很推荐!

二、大小屏切换创建两个播放器设置同一个TextureView



开源项目:JieCaoVideoPlayer


Android视频播放器实现小窗口和全屏状态切换

Android视频播放器实现小窗口和全屏状态切换


这种方法小屏切换到大屏是创建了两个播放器,或者说是创建了两个TextureView的容器,从小到大的时候在Activity中创建了一个全屏的播放器容器,并把当前的视频渲染器(TextureView)和监听器都给赋值过去了,由于使用了TextureView,所以在滚动控件中使用也不会用果冻效果,可以说是正真意义的完美的播放器全屏方案。大小切换由于TextureView的容器换了,所以中间会有很短时间的黑屏,但是可以忽略:


Android视频播放器实现小窗口和全屏状态切换

Android视频播放器实现小窗口和全屏状态切换


这第二种方法比较推荐,但是你要很懂播放器,对源代码很熟悉,由于是直接对ijkMediaplayer进行的封装,中间还会对视频的播放监听器进行切换,所以还是有点复杂的,这方法可以做到真正的全屏,无视是否有ActionBar什么的,直接全屏。如果你觉得自己能力不错,那就赶紧把这个方法get去吧。


三、在Activity中留一个全屏的ViewGroup来放置播放器



开源项目:SuperPlayer


Android视频播放器实现小窗口和全屏状态切换

这方法需要在Activity中预留一个放置播放器的宽高都match_parent的ViewGroup,大小切换就是把播放器添加到本来的小容器和添加到全屏的ViewGroup中来回切换,对于播放器的监听器也不用过多干预,是比较通俗易懂简单的方法:

Android视频播放器实现小窗口和全屏状态切换

Android视频播放器实现小窗口和全屏状态切换


这个方法是主动来切换activity的横竖屏来通知播放器和activity来对大小屏的切换里做出处理,当然你也可以不用onConfigurationChanged方法来间接处理,自己写一个方法来处理,并旋转播放器90度也是可以的,但是这种方法要对activity的ActionBar做处理,要是有ActionBar就需要hide。


四、 在Activity和Fragment中实现大小屏切换



开源项目:MDPlayer


在Activity中使用:


Android视频播放器实现小窗口和全屏状态切换


在Fragment的RecyclerView中使用:


Android视频播放器实现小窗口和全屏状态切换

这是我自己参考第三种方法实现的,我增加了再Fragment、Activity和RecyclerView中放大缩小播放器,基本涵盖了我们遇到的所有场景了。有第三种方法是在Activity中预留容器,所以要是有ActionBar的Activity在放大播放器后,ActionBar并不会主动隐藏,需要我们主动hide和show ActionBar:

Android视频播放器实现小窗口和全屏状态切换


要是在Fragment中使用,就要在Fragment中找到Activity中预留的容器:


Android视频播放器实现小窗口和全屏状态切换


在fragment和Activity中使用都要在方法中做出相应操作,下面是在Fragment中使用:


Android视频播放器实现小窗口和全屏状态切换

Android视频播放器实现小窗口和全屏状态切换

如果您觉得不错,请别忘了分享到您的朋友圈让更多的人看到!! 您的举手之劳,就是对我最好的支持,非常感谢!

Android视频播放器实现小窗口和全屏状态切换

每日掏心话

人活着就应该像齐天大圣,疯过,爱过,恨过,闯过,拼过,努力过,但从没怕过。


Android视频播放器实现小窗口和全屏状态切换


推荐阅读





小密圈
这里聚集了业界内的大牛,值得各位大牛的加入!


Android视频播放器实现小窗口和全屏状态切换

看完本文有收获?请转发分享给更多人
关注「杨守乐」,提升编程技能

【QQ技术群】279126311 []
【QQ技术群】484572225 [未]

以上就是:Android视频播放器实现小窗口和全屏状态切换 的全部内容。

本站部分内容来源于互联网和用户投稿,如有侵权请联系我们删除,谢谢。
Email:[email protected]


0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论