全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android仿搜狐视频、微视等列表播放视频功能

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

列表使用的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小时内与您取得联系。