我有一个工作的viewpager示例,使用从教程中获得的代码。该教程由Lauren Darcey和Shane Conder编写,他们显然是专家(我是Android新手)。代码粘贴在下面。当用户水平滑动时,此代码正在做的是膨胀(前进)和销毁(后面)。只有5页。似乎将它们全部膨胀会更聪明,然后让用户进行所有刷卡而不进行充气/破坏。就像它是一个很大的页面(例如Windows Phone 7中的Panarama和Pivot控件)。
此外,如果其中一个网页上有谷歌地图,则此代码会爆炸。它吹响了第二次通货膨胀(不知道为什么),如果它们只是一次充气就不会发生。
是否有必要以这种方式完成的原因?按照我建议的方式有没有可用的例子? 谢谢, 加里布莱克利
private class MyPagerAdapter extends PagerAdapter {
public int getCount() {
return 5;
}
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
switch (position) {
case 0:
resId = R.layout.farleft;
break;
case 1:
resId = R.layout.left;
break;
case 2:
resId = R.layout.middle;
break;
case 3:
resId = R.layout.right;
break;
case 4:
resId = R.layout.farright;
break;
}
View view = inflater.inflate(resId, null);
((ViewPager) collection).addView(view, 0);
return view;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
答案 0 :(得分:9)
您可以使用ViewPager.setOffscreenPageLimit(int)
加载所有屏幕外标签。只需将4
或((ViewPager) collection).setOffscreenPageLimit(4);
设置为((ViewPager) collection).setOffscreenPageLimit(getCount() - 1);
(总共5个,减去1个可见)。
请记住这对内存的影响;如果你不小心的话,加载所有东西都会耗尽设备的RAM。