最近接到个需求: 列表中播放视频 当视频正在播放中 用户将播放的该item滚动出屏幕时 在屏幕右下方出现一个小的浮动视频窗口继续播放视频 当用户将视频再滚动回播放的item时 再切换到该item 继续播放。

拿到需求的时候第一时间会想利用ListView+VideoView来实现列表播放,但现实往往是残酷的。Videoview继承于SurfaceView,而SurfaceView是没有UI同步缓冲区的这就导致了在列表滚动的时候,正在播放的视频需要跟上滚动的步伐,既然这条路走不通的话只能选择使用TextureView来处理了,在这里强烈推荐一个大神的库VideoPLayerManager 如果看官遇到类似的需求 那么这么个库可以帮上你很大的忙,但是我遇到的需求并没有这么简单 还需要很重要的一步是解决列表里面的视频和浮动播放窗口的切换问题。

我的思路是只持有一个MediaPlayer对象 不论是播放在ListView中还是悬浮播放窗口中,计算当前item是否滚动出屏幕 若滚出了屏幕就把浮动的TextureView传给MediaPlayer进行切换播放 当item又出现到屏幕上时 再将该Item中的TextureView传给MediaPlayer 这样就解决了视频的无缝切换

接下来就是处理ListView中的item的状态 例如时间的显示 seekbar播放进度显示等 我这是用的EventBus。如果各位看官大神 对于这个需求还有更好的解决方案欢迎留言或私信,我就在这先抛块砖 :)

Android 列表播放视频和浮动播放窗口相关推荐

  1. uniapp 判断页面是否是横竖屏,解决微信小程序video组件全屏播放视频遮盖自定义播放控件问题

    如果res.deviceOrientation 等于landscape 的话是竖屏,portrait则是横屏.因为用户每旋转一次屏幕就会触发里面的onShow钩子,因此在页面显示或横竖屏变化都会触发这 ...

  2. android 列表视频播放器,Android------视频播放器(包含全屏播放,快退,快进,腾讯新闻的列表播放等)...

    前段时间做了一个新闻APP,涉及到了列表视频播放,和腾讯新闻APP差不多,总结了一下代码,写了一个Demo来分享给大家. 用了  TabLayout+RecylerView+自定义视频控件完成的 列表 ...

  3. Android 播放视频的方法+播放测试地址 http

    1 在请求网络时 要记得设置权限 调用系统播放器 Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath()+&qu ...

  4. html5播放视频自动循环播放,HTML5 通过Vedio标签实现视频循环播放的示例代码

    要实现网页播放视频在HTML5以前是通过标签 标签的作用是在 HTML页面中嵌入多媒体元素 标签的作用是在 HTML页面中嵌入多媒体元素 存在的问题: 需要flash,效率低 如果浏览器不支持 Fla ...

  5. 小程序给视频加默认图片封面,点击播放视频并停止播放上一个视频

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 实现的功能: 微信小程序视频组件添加图片封面, 点击图片播放视频, 点击下一个视频的封面图自动停止播放当前视频 ...

  6. Unity3d C# 使用Universal Media Player(ump)插件播放视频的众坑之无法播放视频和VLC播放器依赖的问题

    前言 Ump播放视频的坑,相信很多人都踩过了很多了,这个问题是必须VLC播放器的问题,我默认导入UMP Pro Win Mac Linux WebGL 2.0.3后,设置界面是这样的: 并且无法去除U ...

  7. python如何播放视频_python如何播放视频

    python如何播放视频?下面给大家介绍两种方法: 方法一 使用imageio库import pylab import imageio #视频的绝对路径 filename = '/path/to/yo ...

  8. python如何播放视频_python中播放视频的方法有哪些

    python中播放视频的方法有哪些 发布时间:2020-08-25 11:45:52 来源:亿速云 阅读:78 作者:小新 这篇文章给大家分享的是有关python中播放视频的方法有哪些的内容.小编觉得 ...

  9. android vitamio 播放视频,使用Vitamio 播放网络视频的注意事项

    总的步骤: 一:导入vitamio_lib包 二:xml布局中的videoView要替换 三:java文件中的所有包导入的都是vitamio_lib下的东西 四:在java文件的setContentV ...

最新文章

  1. 优化系统后VS启动不了问题的一种解决方案
  2. token,session,cookie
  3. 2017-2018-2 20179216 《网络攻防与实践》 第四周总结
  4. 3.Spring Cloud Alibaba教程:Nacos服务注册与发现
  5. 什么是java OOM?如何分析及解决oom问题?
  6. 判断手机号码是否符合要求
  7. Apple Swift 编程语言入门教程
  8. 程序员幽默趣图(动物篇)
  9. 程序语言python的优化版_从20秒到0.5秒:一个使用Rust语言来优化Python性能的案例...
  10. VirtualBox 虚拟 CentOS 7 磁盘扩容
  11. 计算机二级C语言题库(60套真题+刷题软件)2022年9月份新题第一套
  12. 比例调速阀AMESim仿真
  13. 【ATSC】美国地面数字电视广播从ATSC 1.0向ATSC 3.0标准的过渡
  14. java实现开根号的运算
  15. Cheat Engine逆向修改植物大战僵尸(外挂)
  16. 浅谈运营商行业业务的发展方向
  17. 分享几个找论文参考文献的网站
  18. mysql题 以下1-7_mysql练习题
  19. 基于Java的电子作业提交系统_基于jsp的网上作业提交系统-JavaEE实现网上作业提交系统 - java项目源码...
  20. linux智能电压表设计与实现,智能电压表的设计

热门文章

  1. TiDB x CAPCOM | 为在线游戏提供灵活、可靠、可扩展的数据库服务
  2. 外贸 服装内衣 接单15天成交50万 分享 (普宁电商外贸)
  3. 如何删除顽固低价链接
  4. SAMBA共享工具安装
  5. 三、快速抠黑色背景花纹图案
  6. MarkDown基础符号
  7. xr的软件适配是被放弃了吗_什么是放弃软件?
  8. 这个明星最爱的奢侈品旅行箱,如何在天猫618增长5000%?
  9. 元气森林的企业数字化运营之道
  10. 手把手教你搭建美团饿了么电影票外卖cps小程序 附源码