欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android仿新浪微博/QQ空間滑動(dòng)自動(dòng)播放視頻功能

 更新時(shí)間:2016年09月06日 10:37:11   投稿:daisy  
相信用過新浪微博或者QQ空間的朋友都看到過滑動(dòng)自動(dòng)播放視頻的效果,那么這篇文章跟大家分享下如何利用Android實(shí)現(xiàn)這一個(gè)功能,有需要的朋友們可以參考借鑒。

先來看看效果圖


關(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ì)大家能有所幫助,如果有疑問大家可以留言交流。

相關(guān)文章

最新評(píng)論