Android - 如何正确地实现带有步骤间动画的向导?

6
我正在开发一个Android应用程序,需要按照向导的步骤进行操作。
目前的结构如下:我使用一个活动(activity),每个步骤都有一个单独的views.xml文件,然后我使用setContentView(activeStep)来显示当前步骤。
当我尝试在步骤之间添加动画效果时,遇到了一些困难。我使用了以下代码:
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(activeStep, null, false);
view.startAnimation(AnimationUtils.loadAnimation(activity, R.anim.slide_in));
setContentView(view);

结果:第一个视图消失了,新的视图有动画效果,但转换不够流畅。

我的目标是同时为两个视图添加动画效果,一个滑出去,另一个滑进来。

问题:我当前的结构(提醒:一个活动,多个视图)是否可以实现这一目标,还是应该将每个步骤视为单独的活动?


1
你有没有考虑使用ViewSwitcher呢?可以看一下这个链接http://www.youtube.com/watch?v=mGwG8-chUEM,还可以参考这个链接http://www.ctctlabs.com/index.php/blog/detail/android_dont_overlook_viewswitcher/获取帮助。 - TryTryAgain
谢谢回复,我会尝试并告诉你。 - Shlomi Schwartz
2个回答

3

我想实现具有动画效果的步进进度条可能有多种方法,以下是我实现的方式:

private static ViewAnimator viewAnimator;

 public void onCreate(Bundle savedInstanceState) {
        viewAnimator = new ViewAnimator(this);
        View step1 = View.inflate(activity, R.layout.step_1, null);
        View step2 = View.inflate(activity, R.layout.step_2, null);
        View step3 = View.inflate(activity, R.layout.step_3, null);
        viewAnimator.addView(step1);
        viewAnimator.addView(step2);
        viewAnimator.addView(step3);
        viewAnimator.setInAnimation(activity, R.anim.slide_in);
        viewAnimator.setOutAnimation(activity, R.anim.slide_out);
        setContentView(viewAnimator);
    }

然后点击一个按钮我调用viewAnimator.showNext()viewAnimator.showPrevious()。ViewSwitcher不适合我的需求,因为它一次只能容纳两个视图


0

如果每个步骤都相关,最好使用一个Activity和几个不同的View结构。

您可能不应该在每个步骤中使用setContentView来更改视图。相反,可能需要hideunhide每个项目,或将其移出屏幕。


我想我会采用ViewSwitcher的想法,但还是谢谢你的回复。 - Shlomi Schwartz

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