最近做项目用到了滑动自动播放,下面是原理大家借鉴一下:

关键代码
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 时,代表本次滑动完毕并停止滚动。

**SCROLL_STATE_TOUCH_SCROLL 手指触屏拉动准备滚动,只触发一次
SCROLL_STATE_FLING 持续滚动开始,只触发一次
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类获取视图在屏幕坐标中的可视区域。

Android仿微博/QQ空间滑动自动播放视频功能相关推荐

  1. Android仿微博实现列表滑动播放/暂停视频

    本文仿照新浪微博/QQ空间实现了滑动自动播放视频的功能. 本文来自个人博客:http://www.zhangliwei.date 如有疑问欢迎讨论,感谢您的关注. 先上效果图 关键代码 1.监听滚动事 ...

  2. Android仿手机QQ空间动态评论,自动定位到输入框

    手机QQ空间浏览好友动态时,可以直接对动态评论,点击某条评论,动态列表自动滚动,使输入框刚好在该评论下面,而不会覆盖住评论内容.如下图所示, 首先要实现输入框刚好在输入面板上面,且动态列表不会被挤上去 ...

  3. android 滑动自动播放,Android仿新浪微博滑动播放视频

    最近突发奇想,想实现下 类似新浪微博 或者 qq空间,播放视频,所以就在git上边找了一下,若有侵权,请及时联系我,立马删除,谢谢 本文仿照新浪微博/QQ空间实现了滑动自动播放视频的功能.

  4. 树莓派USB存储设备自动挂载并通过脚本实现自动拷贝,自动播放视频,脚本自动升级等功能...

    需求: 首先需要树莓派自动挂载USB设备,然后扫描USB指定目录下文件,将相关文件拷贝至树莓派指定目录,然后通过omxplayer循环播放新拷贝文件视频 1. 树莓派实现USB存储设备自动挂载 树莓派 ...

  5. 仿网易/QQ空间视频列表滚动连播炫酷效果

    代码地址如下: http://www.demodashi.com/demo/11201.html 一.准备工作 AndroidStudio 开发环境 需要下载七牛的开源播放器SDK 本例子实现了仿网易 ...

  6. 【Android 进阶】仿抖音系列之列表播放视频(二)

    上一篇中,我们实现了仿抖音上下翻页切换视频的效果,详见[Android 进阶]仿抖音系列之翻页上下滑切换视频(一),这一篇,我们来实现抖音列表播放视频. [Android 进阶]仿抖音系列之翻页上下滑 ...

  7. Android仿苹果版QQ下拉刷新实现(二) ——贝塞尔曲线开发鼻涕下拉粘连效果

    前言 接着上一期 Android仿苹果版QQ下拉刷新实现(一) --打造简单平滑的通用下拉刷新控件 的博客开始,同样,在开始前我们先来看一下目标效果: 下面上一下本章需要实现的效果图: 大家看到这个效 ...

  8. Android 基于GSYVideoPlayer实现短视频软件上下滑自动播放视频

    先放效果图 两个视频的地址: private final String mp4_a = "http://vfx.mtime.cn/Video/2019/03/19/mp4/190319212 ...

  9. Android仿苹果版QQ下拉刷新实现(三)

    前言 第三篇下拉刷新的博客来的稍微有点晚,因为前两篇的博客访问量一直不是很高,所以博主花了点时间修改了整体的Demo效果,处理了很多极端下拉情况下的显示问题,给大家呈现一个完美的下拉刷新控件.因为本文 ...

最新文章

  1. C/C++ 语言获取文件大小
  2. python怎么画波浪_python 实现波浪滤镜特效
  3. java integer最大值_五分钟学会java中的基础类型封装类
  4. 论文浅尝 | 从树结构的长短期记忆网络改进语义表示
  5. 论文学习14-End-to-End Relation Extraction using LSTMs on Sequences and Tree Structures(端到端实体关系抽取)
  6. 《软件需求分析(第二版)》第 1 章——软件需求基础知识 重点部分总结
  7. 关于APKsmail中加入代码报错All register args must fit in 4 bits
  8. 导出csv文件,导出axlsx文件。gem 'Axlsx-Rails' (470);导入csv文件。
  9. 微信小程序项目源代码SSM校园生活小助手+后台
  10. excel文件下载下来损坏 js_js文件操作之——导出Excel (js-xlsx)
  11. OA课程--word2013实用技巧大全-目录
  12. 标准的镜头质量评测方法——MTF(Modulation Transfer Function)
  13. 数学建模,8月学习感想
  14. 微信小程序消息从公众号推送
  15. 框架成为新的编程语言的7种理由
  16. html图片自适应上下左右居中显示,图片大小自适应垂直居中的方法
  17. springboot在项目启动时加载字典表数据进map内存,真实测试通过。
  18. 头歌Educoder实验:C++ 面向对象 - 类的继承与派生
  19. 城乡供水一体化信息化系统-城乡供水一体化
  20. Carthage安装使用

热门文章

  1. Revit二次开发-根据两个点创建剖面视图
  2. EditPlus下载安装及使用
  3. 米花APP是骗人的吗?具体该如何使用米花APP
  4. 如何去掉德国Kilu免费空间的广告
  5. matlab设计走马灯,移动端UI样式-走马灯
  6. PCI e 转 PXI 远程 转接 套件 PCI e / PXI 远程控制 器 模块 板卡
  7. 强化学习 Reinforcement Learning(三)——是时候用 PARL 框架玩会儿 DOOM 了!!!(下)
  8. python修改图片大小为30kb_Python的Tornado框架实现图片上传及图片大小修改
  9. 如何使用搜索技巧来成为一名高效的程序员(很好的总结)
  10. 对k8s的背景知识汇总