Android仿微博实现列表滑动播放/暂停视频
本文仿照新浪微博/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仿微博实现列表滑动播放/暂停视频相关推荐
- android微信列表滑动删除,Android仿微信对话列表滑动删除效果
微信对话列表滑动删除效果很不错的,借鉴了github上SwipeListView(项目地址:https://github.com/likebamboo/SwipeListView),在其上进行了一些重 ...
- Android仿微博/QQ空间滑动自动播放视频功能
最近做项目用到了滑动自动播放,下面是原理大家借鉴一下: 关键代码 1.监听滚动事件 首先要给listview添加setOnScrollListener监听,注意这个监听在recyclerView上是a ...
- 【BYM】Android 仿百度搜索列表滑动效果,写的太详细了
| MotionEvent.ACTION_UP | 手势结束时产生,该动作包含最终位置 | | MotionEvent.ACTION_MOVE | 手势移动时经过的位置 | | MotionEvent ...
- 【BYM】Android 仿百度搜索列表滑动效果,flutter环境搭建
相反,我们只想在ViewRootImpl中用适当的dirty rect安排一次遍历. 此方法调用ViewGroup中的快速失效方法,这些方法在层次结构中遍历,并根据需要转换dirty rect. 如果 ...
- 【BYM】Android 仿百度搜索列表滑动效果,又到一年金三银四
视图属性更改(alpha.translationXY等)的快速失效. 我们不想设置任何标志或处理默认失效方法处理的所有情况> 相反,我们只想在ViewRootImpl中用适当的dirty rec ...
- 基于android的高仿抖音,Android仿抖音列表效果
本文实例为大家分享了Android仿抖音列表效果的具体代码,供大家参考,具体内容如下 当下抖音非常火热,是不是也很心动做一个类似的app吗? 那我们就用RecyclerView实现这个功能吧,关于内存 ...
- android仿抖音关注列表,Android仿抖音列表效果
本文实例为大家分享了Android仿抖音列表效果的具体代码,供大家参考,具体内容如下 当下抖音非常火热,是不是也很心动做一个类似的app吗? 那我们就用RecyclerView实现这个功能吧,关于内存 ...
- Android高仿抖音滚动聊天,Android仿抖音列表效果
本文实例为大家分享了Android仿抖音列表效果的具体代码,供大家参考,具体内容如下 当下抖音非常火热,是不是也很心动做一个类似的app吗? 那我们就用RecyclerView实现这个功能吧,关于内存 ...
- android自定义视频列表,Android仿京东天猫列表页播视频看这一篇就足够了
阅读本文解决什么问题? 解决android 滑动列表页自动播视频中的一些技术难点.助力更好的实现类似需求.不涉及到播放器的具体编解码技术,因为各家用的播放器可能都不一样(其实是我不会~) 何时播视频最 ...
最新文章
- Sharding-jdbc教程:Mysql数据库主从搭建
- vux 组件打造手机端项目
- 华大 MCU 之六 SEGGER Embedded Studio 及 Ozone 使用 Jlink 调试
- 摄影光学与镜头pdf_人类光学精华该不该买?萌新小白的第一支镜头!摄影器材指南!...
- 安卓与Linux共存,Android和Linux重新合并成一个操作系统
- [Angularjs]视图和路由(一)
- docker的文件流处理_迁移到微服务与DevOps,微服务和Docker容器的全面实用指南
- matlab 删掉空行,在MATLAB中使用XLSWRITE:如何删除空单元格?
- 控制网页frame vba_V8 bindings 设计isolate,context,world,frame之间的关系(翻译)
- Chrome插件GitZip(下载github项目中的部分文件)
- 【CASS精品教程】CASS快捷键大全吐血整理
- journalctl -xe
- 泛函分析 01.01 距离空间-绪论
- 无线传感网络技术论文笔记
- 一个基于信息论的人生观
- 支持生僻字且自动识别utf-8编码的php汉字转拼音类,PHP汉字转拼音类(支持生僻字且自动识别utf-8编码)...
- 人工智能算法对发明创造的知识产权保护
- Greenplum实战--检查集群状态gpstate
- 拉勾教育《产品经理高薪训练营》课程思维导图
- 三十八、Fluent融化凝固模型参数设置依据