Android仿搜狐视频、微视等列表播放视频功能
发布时间 - 2026-01-11 02:44:19 点击率:次最近项目中需要是实现在列表中自动播放视频,中间遇到了些问题,终于解决,特来跟大家分享一下:

列表使用的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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
php结合redis实现高并发下的抢购、秒杀功能的实例
如何在景安云服务器上绑定域名并配置虚拟主机?
如何获取上海专业网站定制建站电话?
如何将凡科建站内容保存为本地文件?
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
高端建站三要素:定制模板、企业官网与响应式设计优化
深圳网站制作培训,深圳哪些招聘网站比较好?
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
微信小程序 wx.uploadFile无法上传解决办法
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
Laravel如何处理文件下载请求?(Response示例)
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
LinuxShell函数封装方法_脚本复用设计思路【教程】
使用spring连接及操作mongodb3.0实例
如何快速生成凡客建站的专业级图册?
lovemo网页版地址 lovemo官网手机登录
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
香港网站服务器数量如何影响SEO优化效果?
SQL查询语句优化的实用方法总结
JavaScript如何实现类型判断_typeof和instanceof有什么区别
作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】
JavaScript Ajax实现异步通信
在centOS 7安装mysql 5.7的详细教程
打造顶配客厅影院,这份100寸电视推荐名单请查收
如何在香港免费服务器上快速搭建网站?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
简历在线制作网站免费版,如何创建个人简历?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
Laravel怎么实现模型属性的自动加密
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
java获取注册ip实例
网站制作壁纸教程视频,电脑壁纸网站?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
Laravel如何生成API文档?(Swagger/OpenAPI教程)
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
个人网站制作流程图片大全,个人网站如何注销?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
Android自定义控件实现温度旋转按钮效果
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
网站建设整体流程解析,建站其实很容易!
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
微信小程序 require机制详解及实例代码
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
android nfc常用标签读取总结

