(仿头条App项目)9.视频列表页面实现
生活随笔
收集整理的這篇文章主要介紹了
(仿头条App项目)9.视频列表页面实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 視頻列表頁面實現
- 效果圖
- 相關布局
- 功能實現
- 引入第三方視頻庫插件
- 從服務端獲取數據
- 顯示
- 滾動播放功能實現
視頻列表頁面實現
效果圖
相關布局
視頻VideoFragment頁面放一個ListView存放視頻列表
每條列表布局
功能實現
引入第三方視頻庫插件
引入三個依賴,分別是視頻管理器,視頻列表,因為依賴用到了recyclerview,所以雖然用不到,但是也要導入,否則會報錯。
從服務端獲取數據
根據服務端的數據進行解析json,用Gson插件直接快速創建存放視頻bean文件VideoData。
在MyApi中添加獲取視頻數據地址的方法getVideoData()。
請求數據
顯示
編寫setDataToListView方法顯示視頻列表
//3:顯示private void setDataToListView(VideoData.VideoBean data) {if(listView!=null){//做一個數據的轉換 VlistBean->MyVideoItemfor(VideoData.VideoBean.VlistBean video: data.vlist){list.add(new MyVideoItem(getContext(),getVideoManager(),video));}//創建適配器//#視頻列表:1:添加適配器//參1:播放管理者 參2:上下文VideoListViewAdapter adapter=new VideoListViewAdapter(getVideoManager(),getContext(),list);//設置適配器listView.setAdapter(adapter);}}這時顯示的還只是文字和覆蓋的圖片,還沒有播放功能,下面是滾動播放功能。
滾動播放功能實現
初始化列表索引
@Overridepublic void onResume() {super.onResume();System.out.println("VideoFragment onResume");initIndex();}private void initIndex() {if(!list.isEmpty()){listView.post(new Runnable() {@Overridepublic void run() {//由坐標得到item的位置positionmListItemVisibilityCalculator.onScrollStateIdle(mItemsPositionGetter,listView.getFirstVisiblePosition(),listView.getLastVisiblePosition());}});}}計算處于列表中間的條目是哪個
private ListItemsVisibilityCalculator mListItemVisibilityCalculator;//# 2:Getter可以獲取視頻的positionprivate ItemsPositionGetter mItemsPositionGetter;/*# 3:將坐標轉成position記錄列表滾動的狀態SCROLL_STATE_IDLE:列表停住*/private int mScrollState = AbsListView.OnScrollListener.SCROLL_STATE_IDLE;private void initCalculator() {/*** 5:用于計算處于列表中間的條目是哪個。* 暫停其他視頻,播放當前視頻*/mListItemVisibilityCalculator =new SingleListViewItemActiveCalculator(new DefaultSingleItemCalculatorCallback(), list);mItemsPositionGetter = new ListViewItemPositionGetter(listView);}滾動播放
private void onListViewScroll() {listView.setOnScrollListener(new AbsListView.OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {// # 6 :記錄狀態mScrollState = scrollState;if (scrollState == SCROLL_STATE_IDLE && !list.isEmpty()) { //停止mListItemVisibilityCalculator.onScrollStateIdle(mItemsPositionGetter, view.getFirstVisiblePosition(), view.getLastVisiblePosition());}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {if (!list.isEmpty()) {//計算可見item的坐標System.out.println("mListItemVisibilityCalculator="+mListItemVisibilityCalculator);System.out.println("mItemsPositionGetter="+mItemsPositionGetter);mListItemVisibilityCalculator.onScroll(mItemsPositionGetter, firstVisibleItem, visibleItemCount, mScrollState);}}});}當頁面處于后臺時,那么停止播放
@Overridepublic void onStop() {super.onStop();// 如果頁面處于后臺,那么停止播放playerManager.resetMediaPlayer();}總結
以上是生活随笔為你收集整理的(仿头条App项目)9.视频列表页面实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (Java多线程)线程状态
- 下一篇: (网络编程)TCP实现文件上传