EDIT:我这里说的是ViewPager,而不是ViewFlipper。
使用 ViewPager 的好处是使用起来非常简单。您只需创建一个 FragmentPagerAdapter 并填写几个简单的字段即可。下面是我编写的一个示例,用于显示从父类传递的项目。
public static class DashboardPagerAdapter extends FragmentPagerAdapter {
private static final int NUM_ITEMS_PER_SCREEN = 12;
private List<View> mAllItems;
private int mNumScreens;
public DashboardPagerAdapter(FragmentManager fm, List<View> allItems) {
super(fm);
mAllItems = allItems;
mNumScreens = (int) Math.ceil(mAllItems.size()
/ (float) NUM_ITEMS_PER_SCREEN);
Log.d(TAG, "num screens: " + mNumScreens);
}
@Override
public int getCount() {
return mNumScreens;
}
@Override
public Fragment getItem(int position) {
DashboardScreenFragment screen = DashboardScreenFragment
.newInstance();
for (int i = position * NUM_ITEMS_PER_SCREEN; i < (position + 1)
* NUM_ITEMS_PER_SCREEN; i++) {
if (i >= mAllItems.size()) {
break;
}
screen.addChild(mAllItems.get(i));
}
return screen;
}
}
设置非常简单:
final DashboardPagerAdapter adapter = new DashboardPagerAdapter(
getFragmentManager(), mAllButtons);
与 @sebap123 所说的相反,您可以通过支持库将 Fragments 与 Android v4 及更高版本一起使用;看http://developer.android.com/sdk/compatibility-library.html有关详细信息,但它实际上只涉及将 jar 文件放入 /libs 目录中。
顺便说一句,请注意,对于 ViewPager,每个“页面”本身就是一个 Fragment。
至于性能是否有提升,那就要看你对比的是什么了。我强烈建议您在担心性能问题之后尝试 ViewPager。正如 Donald Knuth 所说,“我们应该忘记小效率,大约 97% 的情况下:过早的优化是万恶之源。”
无论如何,如果您有大量页面,请参阅http://developer.android.com/reference/android/support/v4/app/FragmentStatePagerAdapter.html以获得更合适的适配器。