Android仿微博/QQ空间滑动自动播放视频功能
最近做项目用到了滑动自动播放,下面是原理大家借鉴一下:
关键代码
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空间滑动自动播放视频功能相关推荐
- Android仿微博实现列表滑动播放/暂停视频
本文仿照新浪微博/QQ空间实现了滑动自动播放视频的功能. 本文来自个人博客:http://www.zhangliwei.date 如有疑问欢迎讨论,感谢您的关注. 先上效果图 关键代码 1.监听滚动事 ...
- Android仿手机QQ空间动态评论,自动定位到输入框
手机QQ空间浏览好友动态时,可以直接对动态评论,点击某条评论,动态列表自动滚动,使输入框刚好在该评论下面,而不会覆盖住评论内容.如下图所示, 首先要实现输入框刚好在输入面板上面,且动态列表不会被挤上去 ...
- android 滑动自动播放,Android仿新浪微博滑动播放视频
最近突发奇想,想实现下 类似新浪微博 或者 qq空间,播放视频,所以就在git上边找了一下,若有侵权,请及时联系我,立马删除,谢谢 本文仿照新浪微博/QQ空间实现了滑动自动播放视频的功能.
- 树莓派USB存储设备自动挂载并通过脚本实现自动拷贝,自动播放视频,脚本自动升级等功能...
需求: 首先需要树莓派自动挂载USB设备,然后扫描USB指定目录下文件,将相关文件拷贝至树莓派指定目录,然后通过omxplayer循环播放新拷贝文件视频 1. 树莓派实现USB存储设备自动挂载 树莓派 ...
- 仿网易/QQ空间视频列表滚动连播炫酷效果
代码地址如下: http://www.demodashi.com/demo/11201.html 一.准备工作 AndroidStudio 开发环境 需要下载七牛的开源播放器SDK 本例子实现了仿网易 ...
- 【Android 进阶】仿抖音系列之列表播放视频(二)
上一篇中,我们实现了仿抖音上下翻页切换视频的效果,详见[Android 进阶]仿抖音系列之翻页上下滑切换视频(一),这一篇,我们来实现抖音列表播放视频. [Android 进阶]仿抖音系列之翻页上下滑 ...
- Android仿苹果版QQ下拉刷新实现(二) ——贝塞尔曲线开发鼻涕下拉粘连效果
前言 接着上一期 Android仿苹果版QQ下拉刷新实现(一) --打造简单平滑的通用下拉刷新控件 的博客开始,同样,在开始前我们先来看一下目标效果: 下面上一下本章需要实现的效果图: 大家看到这个效 ...
- Android 基于GSYVideoPlayer实现短视频软件上下滑自动播放视频
先放效果图 两个视频的地址: private final String mp4_a = "http://vfx.mtime.cn/Video/2019/03/19/mp4/190319212 ...
- Android仿苹果版QQ下拉刷新实现(三)
前言 第三篇下拉刷新的博客来的稍微有点晚,因为前两篇的博客访问量一直不是很高,所以博主花了点时间修改了整体的Demo效果,处理了很多极端下拉情况下的显示问题,给大家呈现一个完美的下拉刷新控件.因为本文 ...
最新文章
- C/C++ 语言获取文件大小
- python怎么画波浪_python 实现波浪滤镜特效
- java integer最大值_五分钟学会java中的基础类型封装类
- 论文浅尝 | 从树结构的长短期记忆网络改进语义表示
- 论文学习14-End-to-End Relation Extraction using LSTMs on Sequences and Tree Structures(端到端实体关系抽取)
- 《软件需求分析(第二版)》第 1 章——软件需求基础知识 重点部分总结
- 关于APKsmail中加入代码报错All register args must fit in 4 bits
- 导出csv文件,导出axlsx文件。gem 'Axlsx-Rails' (470);导入csv文件。
- 微信小程序项目源代码SSM校园生活小助手+后台
- excel文件下载下来损坏 js_js文件操作之——导出Excel (js-xlsx)
- OA课程--word2013实用技巧大全-目录
- 标准的镜头质量评测方法——MTF(Modulation Transfer Function)
- 数学建模,8月学习感想
- 微信小程序消息从公众号推送
- 框架成为新的编程语言的7种理由
- html图片自适应上下左右居中显示,图片大小自适应垂直居中的方法
- springboot在项目启动时加载字典表数据进map内存,真实测试通过。
- 头歌Educoder实验:C++ 面向对象 - 类的继承与派生
- 城乡供水一体化信息化系统-城乡供水一体化
- Carthage安装使用
热门文章
- Revit二次开发-根据两个点创建剖面视图
- EditPlus下载安装及使用
- 米花APP是骗人的吗?具体该如何使用米花APP
- 如何去掉德国Kilu免费空间的广告
- matlab设计走马灯,移动端UI样式-走马灯
- PCI e 转 PXI 远程 转接 套件 PCI e / PXI 远程控制 器 模块 板卡
- 强化学习 Reinforcement Learning(三)——是时候用 PARL 框架玩会儿 DOOM 了!!!(下)
- python修改图片大小为30kb_Python的Tornado框架实现图片上传及图片大小修改
- 如何使用搜索技巧来成为一名高效的程序员(很好的总结)
- 对k8s的背景知识汇总