我正在重复使用相同的片段来显示带动画的图像。我面临的问题是片段视图在滑动之前对用户可见之前加载了动画。以下是我的PagerAdapter
public class PollsAdapter extends FragmentStatePagerAdapter {
/** Constructor of the class */
int clickPosition = 0;
ArrayList<Polls> pollsList = new ArrayList<Polls>();
public PollsAdapter(FragmentManager fm,ArrayList<Polls> pollsList) {
super(fm);
this.pollsList=pollsList;
}
/** This method will be invoked when a page is requested to create */
@Override
public Fragment getItem(int arg0) {
PollsFragment myFragment = new PollsFragment();
Bundle data = new Bundle();
data.putSerializable("poll", pollsList.get(arg0));
data.putInt("position", arg0);
myFragment.setArguments(data);
return myFragment;
}
/** Returns the number of pages */
@Override
public int getCount() {
return pollsList.size();
}
public int getItemPosition(Object item) {
return POSITION_NONE;
}
}
这就是我设置viewPager的方式
pollsAdapter = new PollsAdapter(fm, pollsList);
viewPager = (ViewPager) _rootView.findViewById(R.id.pager);
viewPager.setAdapter(pollsAdapter);
我尝试使用viewPager.setOffscreenPageLimit(1);但这不起作用。我确定我错过了什么。请帮我解决这个问题。
答案 0 :(得分:1)
这是 - 不幸的是 - 不可能。要显示翻转动画,ViewPager
必须至少预先加载当前显示片段左/右的片段。
因此,ViewPager.setOffscreenPageLimit()
的最小可能值为1
,因为至少需要提供直接邻居。
在你的情况下,问题是你的片段似乎是在创建时立即开始动画。
在这种情况下,您需要更改动画的起始逻辑。一旦滚动到ViewPager
,您的片段就会得到通知(请参阅ViewPager.OnPageChangeListener
)了解该机制)。请注意,恢复活动时不会调用OnPageListener
,因此您还需要处理此案例。
How to determine when Fragment becomes visible in ViewPager有关于该主题的更多信息。