Geo*_*adu 5 android android-fragments android-mediaplayer android-viewpager
上下文: 我有一个活动、4 个片段和一个 viewPager(每个页面由一个片段组成)。每个片段包含一个简短的声音列表(每个最多 5 秒)。预期的行为是:如果用户在某个页面上点击了一个声音并且声音没有播放完,如果用户滑动到另一个页面,媒体播放器将被释放,因此声音将停止播放。
问题: 当向左或向右滑动时,方法 onPause 或 onStop 不会被调用(因为 viewPager 根据定义加载当前页面、上一页和下一页),因此播放最后一页的声音的媒体播放器不会在滑动时停止.
研究:
我搜索过多个职位,涉及到了很多onPageChangeListener,setOffScreenPageLimit,集MediaPlayer的不是片段,但在活动(在我的情况不可能的,因为我的声音列表和适配器)。这里有一些链接,我研究,但并没有解决我的问题:ViewPager刷卡以前的声音,多个视频播放器在Android的viewpager,Android的MediaPlayer的上ViewPager阻塞UI转换并没有回调的初始页面加载,如何处理片段内MediaPlayer对象内部视图寻呼机,将 Viewpager 与 MediaPlayer 一起使用
建议?: 如果您对如何解决此问题有任何建议,将不胜感激!谢谢!
考虑将片段本身制作为OnPageChangeListener. 然后您可以在附加页面时设置监听器。这将允许您将页面更改信息传递给片段。您可以拥有多个OnPageChangeListener。希望有帮助。
编辑:
考虑这样的事情。
public class PageFragment extends Fragment implements ViewPager.OnPageChangeListener {
ViewPager pager;
public void onPageScrollStateChanged (int state){
// reset the player if needed. you can do this since player object is in this class
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
....
pager = (ViewPager) getActivity().findViewById(ViewPagerId);
pager.addOnPageChangeListener(this);
....
}
@Override
public void onDestroyView (){
....
pager.removeOnPageChangeListener(this);
....
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2000 次 |
| 最近记录: |