大佬教程收集整理的这篇文章主要介绍了Android仿新浪微博/QQ空间滑动自动播放视频功能,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
先来看看效果图
关键代码
1.监听滚动事件
首先要给listview
添加setOnScrollListener
监听,注意这个监听在recyclerView
上是addOnScrollListener
,也就是说下面代码同时支持recyclerView
。
public int firstVisible=0,visibleCount=0,@R_689_10586@lCount=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 @R_689_10586@lItemCount) { // firstVisibleItem 当前第一个可见的item // visibleItemCount 当前可见的item个数 if (firstVisible == firstVisibleItem) { return; } firstVisible = firstVisibleItem; visibleCount = visibleItemCount; @R_689_10586@lCount = @R_689_10586@lItemCount; } });
监听里会有两个方法,我们用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
类获取视图在屏幕坐标中的可视区域。
小结
好了,基本核心代码就是以上的这些,是不是很简单呢?感兴趣的大家快快自己动手操作起来吧,希望这篇文章对大家能有所帮助,如果有疑问大家可以留言交流。
以上是大佬教程为你收集整理的Android仿新浪微博/QQ空间滑动自动播放视频功能全部内容,希望文章能够帮你解决Android仿新浪微博/QQ空间滑动自动播放视频功能所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。