如何在Android的View Pager滑动时停止播放视频?

时间:2019-01-19 14:11:55

标签: android android-viewpager android-pageradapter

我正在使用View Pager显示图像和视频,我能够正确显示图像和视频,但是我遇到问题,当我滑动视频时,正在播放视频,但是我滑动了下一个或上一个,然后仍在播放视频只是下一个或上一个屏幕,但是当我在下一个或上一个屏幕上移动两个幻灯片时,视频正在停止,但为什么不在下一个或上一个幻灯片上显示。

我进行了更多搜索,但没有得到任何解决方案,任何帮助将不胜枚举。预先感谢。

这是我的适配器代码:

rbroggi@arch ~/workspace/project_one (master) $ pwd
/home/rbroggi/workspace/project_one
rbroggi@arch ~/workspace/project_one (master) $ cat .gitignore
ignoredfolder/
rbroggi@arch ~/workspace/project_one (master) $ cd ignoredfolder/
rbroggi@arch ~/workspace/project_one/ignoredfolder (master) $ git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
 (master)
rbroggi@arch ~/workspace/project_one/ignoredfolder (master) $

}

1 个答案:

答案 0 :(得分:0)

之所以发生这种情况,是因为ViewPager在当前项目之前和之后都保留了多个“处于活动状态”(处于“恢复”状态)的片段。默认值是每侧为1。确定该属性的是ViewPager.offScreenPageLimit。这样做是为了方便您在滑动时方便地将下一个/上一个视图滑入。

您可以使用以下类似方法来确定页面何时更改。然后,您需要通知viewModel或服务您的每个分页片段都可以访问,以便他们可以确定是应该暂停还是继续播放媒体:

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener {
    @Override
    public void onPageSelected(int position) {
       // find your player and pause it if it's not in the current view
       // Ideally you notify a viewModel that is shared between your paged
       // fragments here and let each one determine if it needs to pause 
       // its player.
    }
    @Override
    public void onPageScrollStateChanged(int state) { // do nothing }

    @Override
    public void onPageScrolled(int position, float offset, int offsetInPixels) { // do nothing }
})