Android仿新浪微博/QQ空間滑動(dòng)自動(dòng)播放視頻功能
先來看看效果圖
關(guān)鍵代碼
1.監(jiān)聽滾動(dòng)事件
首先要給listview
添加setOnScrollListener
監(jiān)聽,注意這個(gè)監(jiān)聽在recyclerView
上是addOnScrollListener
,也就是說下面代碼同時(shí)支持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 當(dāng)前第一個(gè)可見的item // visibleItemCount 當(dāng)前可見的item個(gè)數(shù) if (firstVisible == firstVisibleItem) { return; } firstVisible = firstVisibleItem; visibleCount = visibleItemCount; totalCount = totalItemCount; } });
監(jiān)聽里會(huì)有兩個(gè)方法,我們用onScroll
方法記錄 當(dāng)前第一個(gè)可見Item
,以及可見Item
總數(shù),用onScrollStateChanged
來監(jiān)聽手滑動(dòng)屏幕的整個(gè)過程。 當(dāng)onScrollStateChanged
中的scrollState
字段值等于SCROLL_STATE_IDLE
時(shí),代表本次滑動(dòng)完畢并停止?jié)L動(dòng)🙄感興趣的朋友可以自行百度另外兩個(gè)參數(shù)的意思,沒準(zhǔn)對(duì)你的需求有幫助🙄。
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; }
首先是根據(jù)總數(shù)循環(huán)判斷 Item
是否有視頻,如果有再利用Rect
類獲取視圖在屏幕坐標(biāo)中的可視區(qū)域。
小結(jié)
好了,基本核心代碼就是以上的這些,是不是很簡單呢?感興趣的大家快快自己動(dòng)手操作起來吧,希望這篇文章對(duì)大家能有所幫助,如果有疑問大家可以留言交流。
- android使用surfaceview+MediaPlayer播放視頻
- Android ViewPager中顯示圖片與播放視頻的填坑記錄
- Android中使用TextureView播放視頻
- Android編程實(shí)現(xiàn)播放視頻時(shí)切換全屏并隱藏狀態(tài)欄的方法
- Android仿搜狐視頻、微視等列表播放視頻功能
- Android編程實(shí)現(xiàn)播放視頻的方法示例
- Android多媒體教程之播放視頻的四種方法
- Android 播放視頻常見問題小結(jié)
- Android DragVideo實(shí)現(xiàn)播放視頻時(shí)任意拖拽的方法
- android surfaceView實(shí)現(xiàn)播放視頻功能
相關(guān)文章
Android listview動(dòng)態(tài)加載列表項(xiàng)實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了Android listview動(dòng)態(tài)加載列表項(xiàng)實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06Android實(shí)現(xiàn)九宮格(GridView中各項(xiàng)平分空間)的方法
這篇文章主要介紹了Android實(shí)現(xiàn)九宮格(GridView中各項(xiàng)平分空間)的方法,涉及Android針對(duì)GridView操作的相關(guān)技巧,需要的朋友可以參考下2015-06-06Android 將網(wǎng)絡(luò)的Url資源轉(zhuǎn)換為Drawable資源方式
這篇文章主要介紹了Android 將網(wǎng)絡(luò)的Url資源轉(zhuǎn)換為Drawable資源方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03Android中實(shí)現(xiàn)OkHttp上傳文件到服務(wù)器并帶進(jìn)度
本篇文章主要介紹了Android中實(shí)現(xiàn)OkHttp上傳文件到服務(wù)器并帶進(jìn)度,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Android開發(fā)之底圖局部加載移動(dòng)的方法示例
這篇文章主要介紹了Android開發(fā)之底圖局部加載移動(dòng)的方法,涉及Android針對(duì)圖片與屏幕屬性的讀取、計(jì)算、設(shè)置等相關(guān)操作技巧,需要的朋友可以參考下2017-08-08Android應(yīng)用中使用ListView來分頁顯示刷新的內(nèi)容
這篇文章主要介紹了Android應(yīng)用中使用ListView來分頁顯示刷新的內(nèi)容的方法,展示了一個(gè)點(diǎn)擊按鈕進(jìn)行刷新的實(shí)例以及下拉刷新分頁顯示的要點(diǎn)解析,需要的朋友可以參考下2016-04-04