Android仿微博实现列表滑动播放/暂停视频
来源:互联网 发布:法律英语软件 编辑:程序博客网 时间:2024/05/21 09:19
本文仿照新浪微博/QQ空间实现了滑动自动播放视频的功能。
本文来自个人博客:http://www.zhangliwei.date
如有疑问欢迎讨论,感谢您的关注。
先上效果图
关键代码
1.监听滚动事件
首先要给listview添加setOnScrollListener监听,注意这个监听在recyclerView上是addOnScrollListener,也就是说下面代码同时支持recyclerView。
public int firstVisible=0,visibleCount=0, totalCount=0; videoList.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public 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; } } @Override public 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'
喜欢请给个赞⬇️⬇️
3 0
- Android仿微博实现列表滑动播放/暂停视频
- MFC控件实现视频“暂停” “播放”循环
- ijkPlayer 实现视频播放,暂停,功能
- android 仿微信滑动播放视频
- opencv +MFC实现视频播放、暂停、视频标注、跟踪
- Android视频播放器中的播放与暂停
- 列表播放视频简单实现
- Android列表嵌入视频播放
- 在可滑动列表(ListView & RecyclerView)中实现视频播放
- Android仿微博/QQ空间滑动自动播放视频功能
- 简单实现Aandroid视频中播放暂停按钮的效果
- html5实现视频(放大缩小播放暂停)
- Fragment的setUserVisibleHint方法实现视频音频播放暂停
- SurfaceView+MediaPlayer视频播放并用SharedPreferences实现暂停功能
- html5实现视频(放大缩小播放暂停)
- 实现类似微博视频滚动自动播放与暂停
- Android VR Player(全景视频播放器) [6]:视频列表的实现-本地视频
- Android VR Player(全景视频播放器) [7]:视频列表的实现-网络视频
- sql 中 not in 或者 not exists 查不出数据
- Struts2的工作流程
- PHP命名空间(Namespace)的使用详解
- Eigen:矩阵计算简单用法(二)
- android AlertDialog用作底部弹出菜单
- Android仿微博实现列表滑动播放/暂停视频
- fdisk
- 从gff3文件获取fasta序列
- 【Spring】——事务实现过程及原理
- 京东幸运数2
- Logcat命令详解 和 adb 常用命令
- Lifeary 6.2 不能创建 Theme 和 Layout 工程
- iOS 获取设备唯一标识
- PHP微信支付开发实例