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 快速使用正則表達(dá)式,校驗(yàn)身份證號(hào)的實(shí)例
下面小編就為大家分享一篇Android 快速使用正則表達(dá)式,校驗(yàn)身份證號(hào)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01
Android webview與js交換JSON對(duì)象數(shù)據(jù)示例
js主動(dòng)調(diào)用android的對(duì)象方式,android也無法返回給js一個(gè)jsonobject,需要js做一下轉(zhuǎn)換,具體代碼如下,感興趣的朋友可以參考下哈2013-06-06
Android自定義view實(shí)現(xiàn)有header和footer作為layout使用的滾動(dòng)控件
這篇文章主要介紹了Android自定義view實(shí)現(xiàn)有header和footer的滾動(dòng)控件,可以在XML中當(dāng)Layout使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-11-11
Android使用ViewDragHelper實(shí)現(xiàn)QQ6.X最新版本側(cè)滑界面效果實(shí)例代碼
這篇文章主要介紹了Android程序開發(fā)實(shí)現(xiàn)QQ6.X最新版本側(cè)滑界面效果實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-02-02
Android中DrawerLayout+ViewPager滑動(dòng)沖突的解決方法
這篇文章主要為大家詳細(xì)介紹了Android中DrawerLayout+ViewPager滑動(dòng)沖突的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
Android編程實(shí)現(xiàn)手繪及保存為圖片的方法(附demo源碼下載)
這篇文章主要介紹了Android編程實(shí)現(xiàn)手繪及保存為圖片的方法,涉及Android畫布的使用及圖片的操作技巧,并附帶了demo源碼供讀者下載,需要的朋友可以參考下2015-12-12
Android BroadcastReceiver廣播機(jī)制概述
這篇文章主要為大家詳細(xì)介紹了Android BroadcastReceiver廣播機(jī)制,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08

