最近项目中需要是实现在列表中自动播放视频,中间遇到了些问题,终于解决,特来跟大家分享一下:

列表使用的RecyclerView 播放视频使用MediaPlayer+TextureView。
主要思路:
1、监听RecyclerView的滑动,开始滑动时停止正在播放的item。
2、通过LinearLayoutManager 获取当前显示的第一个item及最后一个item
3、RecyclerView停止滑动后,选择item进行播放。如果当前界面只有一个item,播放当前。如果item数量大于2个,播放第二个。如当前界面有两个item则判定哪一个显示的区域比较大。播放item并记录当前position。
附上主要实现逻辑:
try {
int fristPos = layoutManager.findFirstVisibleItemPosition();
int lastPos = layoutManager.findLastVisibleItemPosition();
ViewHolder holder = null;
if (recyclerView.getChildCount() == 2) {
View fristView = recyclerView.getChildAt(0);
if (fristView != null) {
int[] location = new int[2];
fristView.getLocationInWindow(location);
if (location[1] > 0) {
holder = (ViewHolder) recyclerView.findViewHolderForPosition(fristPos);
lastPlayPosition = fristPos;
}
}
if (holder == null) {
View lastView = recyclerView.getChildAt(1);
if (lastView != null) {
int[] lastViewLocation = new int[2];
lastView.getLocationInWindow(lastViewLocation);
if ((lastViewLocation[1] + videoHeight) < screenHeight) {
holder = (ViewHolder) recyclerView.findViewHolderForPosition(lastPos);
lastPlayPosition = lastPos;
}
}
}
} else if (recyclerView.getChildCount() == 1) {
holder = (ViewHolder) recyclerView.findViewHolderForPosition(fristPos);
lastPlayPosition = fristPos;
} else {
holder = (ViewHolder) recyclerView.findViewHolderForPosition(fristPos + 1);
lastPlayPosition = fristPos + 1;
}
if (holder != null) {
holder.play();
}
} catch (Exception e) {
e.printStackTrace();
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# 列表
# 播放视频
# android使用surfaceview+MediaPlayer播放视频
# Android ViewPager中显示图片与播放视频的填坑记录
# Android中使用TextureView播放视频
# Android编程实现播放视频时切换全屏并隐藏状态栏的方法
# Android编程实现播放视频的方法示例
# Android多媒体教程之播放视频的四种方法
# Android 播放视频常见问题小结
# Android DragVideo实现播放视频时任意拖拽的方法
# Android仿新浪微博/QQ空间滑动自动播放视频功能
# android surfaceView实现播放视频功能
# 第一个
# 第二个
# 只有一个
# 比较大
# 大家分享
# 正在播放
# 大家多多
# 自动播放
# 特来
# 有两个
# 列表中
# lt
# videoHeight
# LinearLayoutManager
# screenHeight
# lastViewLocation
# pre
# class
# lastView
# position
相关文章:
如何在景安服务器上快速搭建个人网站?
建站之星免费版是否永久可用?
建站主机数据库如何配置才能提升网站性能?
建站之星会员如何解锁更多建站功能?
建站之星安装模板失败:服务器环境不兼容?
定制建站流程解析:需求评估与SEO优化功能开发指南
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
如何选择高效可靠的多用户建站源码资源?
c# 服务器GC和工作站GC的区别和设置
宝塔面板如何快速创建新站点?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
建站与域名管理如何高效结合?
如何选择香港主机高效搭建外贸独立站?
Thinkphp 中 distinct 的用法解析
高端云建站费用究竟需要多少预算?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
建站之星如何快速生成多端适配网站?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
宿州网站制作公司兴策,安徽省低保查询网站?
如何在IIS服务器上快速部署高效网站?
C++中引用和指针有什么区别?(代码说明)
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
宁波免费建站如何选择可靠模板与平台?
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
如何用狗爹虚拟主机快速搭建网站?
如何通过二级域名建站提升品牌影响力?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
个人摄影网站制作流程,摄影爱好者都去什么网站?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
定制建站哪家更专业可靠?推荐榜单揭晓
5种Android数据存储方式汇总
建站主机如何安装配置?新手必看操作指南
设计网站制作公司有哪些,制作网页教程?
已有域名和空间,如何快速搭建网站?
php json中文编码为null的解决办法
建站之星IIS配置教程:代码生成技巧与站点搭建指南
如何快速打造个性化非模板自助建站?
建站之星伪静态规则如何正确配置?
如何正确选择百度移动适配建站域名?
香港服务器租用费用高吗?如何避免常见误区?
公司网站制作价格怎么算,公司办个官网需要多少钱?
非常酷的网站设计制作软件,酷培ai教育官方网站?
如何通过山东自助建站平台快速注册域名?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
威客平台建站流程解析:高效搭建教程与设计优化方案
如何快速生成凡客建站的专业级图册?
如何选择建站程序?包含哪些必备功能与类型?
如何在Ubuntu系统下快速搭建WordPress个人网站?
移民网站制作流程,怎么看加拿大移民官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。