首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ViewFlipper对片段

ViewFlipper对片段
EN

Stack Overflow用户
提问于 2012-01-25 19:33:55
回答 2查看 9.1K关注 0票数 10

我有一个带有ViewFlipper的活动,它可以在一堆视图(页面)与我的数据之间切换。

我正在考虑使用片段API在我的视图之间切换。这样做有什么好处?

我是否可以通过使用片段看到性能的提高,因为ViewFlipper实际上是在添加/删除视图层次结构时切换可见标志和片段来替换它们吗?

有人能给我们更多的洞察力吗?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2012-01-30 04:10:24

编辑:,我说的是ViewPager,而不是ViewFlipper。

使用ViewPager的好处是使用起来非常简单。您只需创建一个FragmentPagerAdapter并填写几个简单的字段。下面是我编写的一个示例,用于显示从父类传递的项。

代码语言:javascript
复制
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;
    }
}

设置它非常简单:

代码语言:javascript
复制
    final DashboardPagerAdapter adapter = new DashboardPagerAdapter(
            getFragmentManager(), mAllButtons);

与@se浸123相反,您可以在Android和更高版本的支持库中使用片段;有关详细信息,请参阅v4,但实际上只需要将jar文件放在/libs目录中。

顺便说一句,注意使用ViewPager,每个“页面”本身就是一个片段。

至于是否有性能改进,这取决于您要比较的是什么。我强烈建议您在担心性能问题之后尝试ViewPager。正如唐纳德·克努斯( Donald )所言,“我们应该忘记小效率,大约97%的时间说:过早的优化是万恶之源。”

在任何情况下,如果您有大量的页面,请参阅http://developer.android.com/reference/android/support/v4/app/FragmentStatePagerAdapter.html以获得更合适的适配器。

票数 3
EN

Stack Overflow用户

发布于 2021-11-22 12:59:15

片段Activity中用户界面的行为或部分。

您可以将多个片段组合在一个操作中,以便创建多层次的用户界面重用,在多个操作中创建一个片段。您可以将该片段想象为一个模块化活动部分,有自己的生命周期,它接收自己的输入事件,您可以在工作期间添加或删除这些事件(类似于辅助活动,您可以在不同的操作中重用它)。

片段必须始终嵌入到动作中,片段生命周期直接取决于宿主生命周期。例如,当一个动作被暂停时,也就是说,它中的所有片段,以及该动作被销毁时,以及所有碎片。但是,在执行操作时(处于恢复生命周期的状态),您可以独立地控制每个片段,例如添加或删除它们。在执行这样的片段事务时,还可以将其添加到由活动控制的后台堆栈中--活动中的前一个堆栈中的每个条目都是所发生的片段事务的记录。back堆栈允许用户通过按后退按钮取消片段事务(向后移动)。

但是ViewFlipper只在一个动作中工作。所以,,它只是一个ViewGroup。一个简单的ViewAnimator,它将在添加到其中的两个或多个视图之间运行。一次只显示一个孩子。如果需要的话,您可以定期在每个孩子之间自动切换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9009071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档