本文仿照新浪微博/QQ空间实现了滑动自动播放视频的功能。

本文来自个人博客:http://www.zhangliwei.date

如有疑问欢迎讨论,感谢您的关注。

先上效果图



关键代码

1.监听滚动事件

首先要给listview添加setOnScrollListener监听,注意这个监听在recyclerView上是addOnScrollListener,也就是说下面代码同时支持recyclerView。

public int firstVisible=0,visibleCount=0, totalCount=0;videoList.setOnScrollListener(new AbsListView.OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {switch (scrollState) {case AbsListView.OnScrollListener.SCROLL_STATE_FLING:Log.e("videoTest", "SCROLL_STATE_FLING");break;case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:Log.e("videoTest", "SCROLL_STATE_IDLE");autoPlayVideo(view);break;case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:Log.e("videoTest", "SCROLL_STATE_TOUCH_SCROLL");break;default:break;}}   @Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {// firstVisibleItem   当前第一个可见的item// visibleItemCount   当前可见的item个数if (firstVisible == firstVisibleItem) {return;}firstVisible = firstVisibleItem;visibleCount = visibleItemCount;totalCount = totalItemCount;}});

监听里会有两个方法,我们用onScroll方法记录 当前第一个可见Item,以及可见Item总数,用onScrollStateChanged来监听手滑动屏幕的整个过程。 当onScrollStateChanged 中的scrollState字段值等于SCROLL_STATE_IDLE 时,代表本次滑动完毕并停止滚动��感兴趣的朋友可以自行百度另外两个参数的意思,没准对你的需求有帮助��。

#### 2.处理视频逻辑

  void autoPlayVideo(AbsListView view){Log.e("videoTest", "firstVisiblePos  =  " + firstVisible + "visibleItemCount =  " + visibleCount);for (int i = 0; i < visibleCount; i++) {if (view!=null&&view.getChildAt(i)!=null&&view.getChildAt(i).findViewById(R.id.videoplayer) != null) {JCVideoPlayerStandard videoPlayerStandard1 = (JCVideoPlayerStandard) view.getChildAt(i).findViewById(R.id.videoplayer);Rect rect = new Rect();videoPlayerStandard1.getLocalVisibleRect(rect);int videoheight3 = videoPlayerStandard1.getHeight();Log.e("videoTest","i="+i+"==="+"videoheight3:"+videoheight3+"==="+"rect.top:"+rect.top+"==="+"rect.bottom:"+rect.bottom);if (rect.top==0&&rect.bottom==videoheight3){if (videoPlayerStandard1.currentState == JCVideoPlayer.CURRENT_STATE_NORMAL || videoPlayerStandard1.currentState == JCVideoPlayer.CURRENT_STATE_ERROR) {Log.e("videoTest", videoPlayerStandard1.currentState + "======================performClick======================");videoPlayerStandard1.startButton.performClick();VPApplication.instance.VideoPlaying=videoPlayerStandard1;}return;}}}Log.e("videoTest", "======================releaseAllVideos=====================");JCVideoPlayer.releaseAllVideos();VPApplication.instance.VideoPlaying=null;
}

首先是根据总数循环判断 Item 是否有视频,如果有再利用Rect类获取每个Item视图在屏幕坐标中的可视区域,再根据Item显示尺寸觉得播放或停止视频。基本核心代码就这些,是不是非常简单,剩下的就去源码看看吧⬇️⬇️?


项目源码 autovideoplay

技术博客 Wells’Note

视频播放器

   //一个没怎么有节操的开源播放器��。
compile 'fm.jiecao:jiecaovideoplayer:4.6.3'

喜欢请给个赞⬇️⬇️

Android仿微博实现列表滑动播放/暂停视频相关推荐

  1. android微信列表滑动删除,Android仿微信对话列表滑动删除效果

    微信对话列表滑动删除效果很不错的,借鉴了github上SwipeListView(项目地址:https://github.com/likebamboo/SwipeListView),在其上进行了一些重 ...

  2. Android仿微博/QQ空间滑动自动播放视频功能

    最近做项目用到了滑动自动播放,下面是原理大家借鉴一下: 关键代码 1.监听滚动事件 首先要给listview添加setOnScrollListener监听,注意这个监听在recyclerView上是a ...

  3. 【BYM】Android 仿百度搜索列表滑动效果,写的太详细了

    | MotionEvent.ACTION_UP | 手势结束时产生,该动作包含最终位置 | | MotionEvent.ACTION_MOVE | 手势移动时经过的位置 | | MotionEvent ...

  4. 【BYM】Android 仿百度搜索列表滑动效果,flutter环境搭建

    相反,我们只想在ViewRootImpl中用适当的dirty rect安排一次遍历. 此方法调用ViewGroup中的快速失效方法,这些方法在层次结构中遍历,并根据需要转换dirty rect. 如果 ...

  5. 【BYM】Android 仿百度搜索列表滑动效果,又到一年金三银四

    视图属性更改(alpha.translationXY等)的快速失效. 我们不想设置任何标志或处理默认失效方法处理的所有情况> 相反,我们只想在ViewRootImpl中用适当的dirty rec ...

  6. 基于android的高仿抖音,Android仿抖音列表效果

    本文实例为大家分享了Android仿抖音列表效果的具体代码,供大家参考,具体内容如下 当下抖音非常火热,是不是也很心动做一个类似的app吗? 那我们就用RecyclerView实现这个功能吧,关于内存 ...

  7. android仿抖音关注列表,Android仿抖音列表效果

    本文实例为大家分享了Android仿抖音列表效果的具体代码,供大家参考,具体内容如下 当下抖音非常火热,是不是也很心动做一个类似的app吗? 那我们就用RecyclerView实现这个功能吧,关于内存 ...

  8. Android高仿抖音滚动聊天,Android仿抖音列表效果

    本文实例为大家分享了Android仿抖音列表效果的具体代码,供大家参考,具体内容如下 当下抖音非常火热,是不是也很心动做一个类似的app吗? 那我们就用RecyclerView实现这个功能吧,关于内存 ...

  9. android自定义视频列表,Android仿京东天猫列表页播视频看这一篇就足够了

    阅读本文解决什么问题? 解决android 滑动列表页自动播视频中的一些技术难点.助力更好的实现类似需求.不涉及到播放器的具体编解码技术,因为各家用的播放器可能都不一样(其实是我不会~) 何时播视频最 ...

最新文章

  1. Sharding-jdbc教程:Mysql数据库主从搭建
  2. vux 组件打造手机端项目
  3. 华大 MCU 之六 SEGGER Embedded Studio 及 Ozone 使用 Jlink 调试
  4. 摄影光学与镜头pdf_人类光学精华该不该买?萌新小白的第一支镜头!摄影器材指南!...
  5. 安卓与Linux共存,Android和Linux重新合并成一个操作系统
  6. [Angularjs]视图和路由(一)
  7. docker的文件流处理_迁移到微服务与DevOps,微服务和Docker容器的全面实用指南
  8. matlab 删掉空行,在MATLAB中使用XLSWRITE:如何删除空单元格?
  9. 控制网页frame vba_V8 bindings 设计isolate,context,world,frame之间的关系(翻译)
  10. Chrome插件GitZip(下载github项目中的部分文件)
  11. 【CASS精品教程】CASS快捷键大全吐血整理
  12. journalctl -xe
  13. 泛函分析 01.01 距离空间-绪论
  14. 无线传感网络技术论文笔记
  15. 一个基于信息论的人生观
  16. 支持生僻字且自动识别utf-8编码的php汉字转拼音类,PHP汉字转拼音类(支持生僻字且自动识别utf-8编码)...
  17. 人工智能算法对发明创造的知识产权保护
  18. Greenplum实战--检查集群状态gpstate
  19. 拉勾教育《产品经理高薪训练营》课程思维导图
  20. 三十八、Fluent融化凝固模型参数设置依据

热门文章

  1. 从ERP到BI 中国企业信息化步入新时代(转)
  2. [C++]责任链模式
  3. CSS边框、边距的设置
  4. 树莓派2安装centos
  5. BigDecimal中的ArithmeticException异常
  6. PyQt5-输入对话框
  7. 差分电路与Multisim仿真学习笔记
  8. 烤仔星选创作计划 | Conflux X Odaily 星球君,让每一颗星星都闪亮
  9. docker mysql 蜂巢_在网易蜂巢中创建和管理Docker容器的教程
  10. cineam 4d 影视特效制作入门-对象的创建