1

在我的應用程序中,我有viewPager,進入這viewPager我顯示視頻,我將此視頻設置爲ViewPagerAdaper
我想要在右側向左滑動時停止視頻!
我怎樣才能知道在Android中滑動viewPager

我下面寫代碼在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

我該怎麼辦?

回答

0

你可以嘗試創建適配器站和星的方法,例如

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); 
      } 
     }); 
    } 

希望這會有所幫助。

對不起,我的英語。

+0

謝謝我的朋友,我想嘗試你的代碼,但我不能!因爲我應該將** VideoView **初始化爲'instantiateItem',比如:'VideoView'comingSoonVideoPlayer =(VideoView)view.findViewById(R.id.coming_pay_videoPlayer);'。當初始化** VideoView **全球使用其他方面,不工作我videoView到我的應用程序!我該如何解決它?爲了使用您的代碼,我應該初始化** VideoView **全局,但我無法在全局初始化這個!爲什麼? –

+0

請在郵編#1中查看我的代碼以瞭解我的意思。請幫助我的朋友,請 –

+0

當您嘗試將'comingSoonVideoPlayer'作爲班級字段時,出現什麼錯誤? – Cochi

1

我覺得這個聽衆可以HALP你

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

+0

我應該把你的代碼寫入我的片段,但我把視頻控制到適配器中!我怎麼能把它放入你的代碼?你能幫我,給我發代碼嗎?請 –

+0

Somethins like this onPageSelected {mAdapter.stopOtherPages(position);} –

+0

找不到'stopOtherPages'。請給我這個代碼。我想當ssipe viewPager,停止視頻 –