gpt4 book ai didi

android - ViewFlipper 与 fragment

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:41:04 33 4
gpt4 key购买 nike

我有一个带有 ViewFlipper 的 Activity,它使用我的数据在一堆 View (页面)之间翻转。

我正在考虑使用 fragment API 在我的 View 之间切换。这样做有什么好处?

我是否可以通过使用 fragment 看到性能提升,因为 ViewFlipper 实质上会切换可见性标志,而 fragment 实际上会在您添加/删除它们时替换 View 层次结构?

有人可以就此给我们更多见解吗?

谢谢!

最佳答案

编辑:我在这里谈论的是 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以获得更合适的适配器。

关于android - ViewFlipper 与 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9009071/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com