我怎么知道在android中刷卡viewPager

时间:2017-06-01 14:27:49

标签: android android-fragments android-viewpager android-adapter

在我的应用程序中,我有viewPager并在此viewPager我展示了视频,我将此视频设置为ViewPagerAdaper
我想要向右滑动左边,停止视频!

我在adapter中为节目视频写下以下代码:

@Override
public Object instantiateItem(ViewGroup container, final int position) {
    View view = this.inflater.inflate(R.layout.row_coming_soon, container, false);
    ButterKnife.bind(this, view);
    final ImageView comingSoonCover = (ImageView) view.findViewById(R.id.row_comingSoonCoverImg);
    final ImageView comingSoonPlayBtn = (ImageView) view.findViewById(R.id.row_comingSoonPlayBtn);
    final VideoView comingSoonVideoPlayer = (VideoView) view.findViewById(R.id.row_comingSoon_videoPlayer);
    final RelativeLayout comingSoonImagesLay = (RelativeLayout) view.findViewById(R.id.row_comingSoonImagesLay);

    comingSoonPlayBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            comingSoonVideoPlayer.setVideoURI(Uri.parse(model.get(position).getTrailerDirectLink()));
            comingSoonVideoPlayer.start();
            comingSoonImagesLay.setVisibility(View.GONE);
        }
    });

我想要在滑动viewPager时,如果comingSoonVideoPlayer.isPlaying();停止并轻扫viewPager

我怎么能?

2 个答案:

答案 0 :(得分:1)

我认为这个听众可以哄骗你

  mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

现在它被弃用了。必须使用addOnPageChangeListener / removeOnPageChangeListener

答案 1 :(得分:0)

您可以尝试在适配器中创建stop和star方法,例如

private void start(int position) {
    if(comingSoonVideoPlayer != null {
        comingSoonVideoPlayer.setVideoURI(Uri.parse(model.get(position).getTrailerDirectLink()));
        comingSoonVideoPlayer.start();
    }
}

private void stop() { 
    if(comingSoonVideoPlayer != null) {
        comingSoonVideoPlayer.stop();
    }
}

然后在你的片段中

 mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
           mViewPager.getAdapter().stop();
           mViewPager.getAdapter().start(position);                
        }

        @Override
        public void onPageSelected(int position) {
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
 });

编辑:

comingSoonVideoPlayer作为类字段:

    final VideoView comingSoonVideoPlayer;


    @Override
    public Object instantiateItem(ViewGroup container, final int position) {
        View view = this.inflater.inflate(R.layout.row_coming_soon, container, false);
        ButterKnife.bind(this, view);
        final ImageView comingSoonCover = (ImageView) view.findViewById(R.id.row_comingSoonCoverImg);
        final ImageView comingSoonPlayBtn = (ImageView) view.findViewById(R.id.row_comingSoonPlayBtn);
        comingSoonVideoPlayer = (VideoView) view.findViewById(R.id.row_comingSoon_videoPlayer);
        final RelativeLayout comingSoonImagesLay = (RelativeLayout) view.findViewById(R.id.row_comingSoonImagesLay);

        comingSoonPlayBtn.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
                comingSoonVideoPlayer.setVideoURI(Uri.parse(model.get(position).getTrailerDirectLink()));
                comingSoonVideoPlayer.start();
                comingSoonImagesLay.setVisibility(View.GONE);
            }
        });
    }

希望这有帮助。

抱歉我的英文。