autovideoplayer
项目地址:
autovideoplayer
简介:仿照新浪微博列表滑动自动播放暂停视频
本文仿照新浪微博/QQ 空间实现了滑动自动播放视频的功能。
关键代码
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 时,代表本次滑动完毕并停止滚动