Android: 使用左右滑动分页查看视图

3

我在目前的应用程序中遇到了一个问题,无法实现特定的效果。场景如下:

在我的第一个活动中,我显示一个列表,一旦点击了一个项目,就会显示一个新的活动,其中包含有关该项目的更多详细信息。

现在,我想在详细页面上实现分页,以便用户可以向左或向右滑动,并获取下一个或先前显示的项目,而无需返回到列表并选择。

我已经为项目获得了适配器,因此获取显示的项目信息和“兄弟姐妹”信息很容易。

我一直在尝试使用ViewFlipper,但据我所见,它需要在ViewFlipper的stumic中呈现“视图”,我不敢在onCreate中呈现300个项目。有没有关于使用3个视图并在onCreate中填充它们的提示?

我调用了相同的带有动画的活动,因此它会滑动并告诉要显示的数据,但这肯定会影响性能。

有什么好的想法吗?

如果您想查看我想要的动画/功能,请查看Google Latitude页面上的朋友详细页面。

//提前致谢

2个回答

5

我使用ViewFlipper来实现了相同的行为,并在需要时加载视图。

这是我所做的一些快照,虽然不完全符合您的要求,但您可以遵循相同的方法。

/**
     * starts a new activity.
     * @param activityToStart the activity class.
     */
    public static void startActivity(Class<?> activityToStart) {
        String name = activityToStart.getName();
        while (history.contains(name)) {
            name += "1";
        }

        View view = activity.getLocalActivityManager().startActivity(name,
                new Intent(activity, activityToStart)).getDecorView();

        history.add(name);
        addView(view, name);
    }

     public void addView(View newView, String name) {
    // add its name to the history.
    history.add(name);
    // change the view.
    flipper.addView(newView);
    if(history.size() != 1) {
        flipper.setInAnimation(inFromUpAnimation());

        View oldView = getActivityAt(history.size() - 2);
        flipper.setOutAnimation(outFromBottomAnimation());
        flipper.showNext();
    }
}

private void back() {
   if(history.size() > 1) {
       View oldView = getActivityAt(history.size() - 1);
       flipper.setInAnimation(inFromBottomAnimation());
       setRemoveAnimation(oldView, outToUpAnimation(), history.remove(history.size() - 1));
       flipper.showPrevious();
   } else {
       finish();
   }
}

这里有三个函数(在您的情况下,如果您希望启动一个新的活动,则可以将其更改为膨胀视图,第二个函数添加视图,第三个函数在用户点击返回时删除视图)。

希望这可以帮助您!


太棒了,这正是我所希望的,按需填充ViewFlipper。你有更多的代码关于如何填充新视图和你的XML标记是什么样子的吗? - pumpin
好的,我会编辑帖子给你更多的代码。顺便说一下,我当时使用了LocalActivityManager,每个视图实际上都是一个单独的活动。对于你的情况,你可以只使用一个带有不同参数的活动。 - mohamede1945
1
好的伙计,我会试一下。并且会保持这篇帖子的更新,提前感谢。 - pumpin
请不要忘记将其标记为答案,如果这正是您想要的 :) - mohamede1945
抱歉回复晚了,度假耽误了 :) 讨厌那么多的空闲时间。 - pumpin

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接