欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android仿搜狐视频、微视等列表播放视频功能

程序员文章站 2023-12-10 19:39:34
最近项目中需要是实现在列表中自动播放视频,中间遇到了些问题,终于解决,特来跟大家分享一下: 列表使用的recyclerview 播放视频使用mediaplayer+tex...

最近项目中需要是实现在列表中自动播放视频,中间遇到了些问题,终于解决,特来跟大家分享一下:

列表使用的recyclerview 播放视频使用mediaplayer+textureview。

主要思路:

1、监听recyclerview的滑动,开始滑动时停止正在播放的item。

2、通过linearlayoutmanager 获取当前显示的第一个item及最后一个item

3、recyclerview停止滑动后,选择item进行播放。如果当前界面只有一个item,播放当前。如果item数量大于2个,播放第二个。如当前界面有两个item则判定哪一个显示的区域比较大。播放item并记录当前position。

附上主要实现逻辑:

try { 
      int fristpos = layoutmanager.findfirstvisibleitemposition(); 
      int lastpos = layoutmanager.findlastvisibleitemposition(); 
      viewholder holder = null; 
      if (recyclerview.getchildcount() == 2) { 
        view fristview = recyclerview.getchildat(0); 
        if (fristview != null) { 
          int[] location = new int[2]; 
          fristview.getlocationinwindow(location); 
          if (location[1] > 0) { 
            holder = (viewholder) recyclerview.findviewholderforposition(fristpos); 
            lastplayposition = fristpos; 
          } 
        } 
        if (holder == null) { 
          view lastview = recyclerview.getchildat(1); 
          if (lastview != null) { 
            int[] lastviewlocation = new int[2]; 
            lastview.getlocationinwindow(lastviewlocation); 
            if ((lastviewlocation[1] + videoheight) < screenheight) { 
              holder = (viewholder) recyclerview.findviewholderforposition(lastpos); 
              lastplayposition = lastpos; 
            } 
          } 
 
 
        } 
      } else if (recyclerview.getchildcount() == 1) { 
        holder = (viewholder) recyclerview.findviewholderforposition(fristpos); 
        lastplayposition = fristpos; 
      } else { 
        holder = (viewholder) recyclerview.findviewholderforposition(fristpos + 1); 
        lastplayposition = fristpos + 1; 
      } 
 
 
      if (holder != null) { 
        holder.play(); 
      } 
       
    } catch (exception e) { 
      e.printstacktrace(); 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。