0

overridePendingTransition 需要 2 个动画并对整个屏幕进行动画处理。

我将如何在为 2 个单独视图设置动画的 2 个活动之间转换?

基本上,当我按下按钮并在其打开时查看其后面的下一个活动时,我想打开一扇双门。

我可以轻松地将屏幕滑动到下一个屏幕:

overridePendingTransition(R.anim.transition_left_in, R.anim.transition_left_out);

我可以打开双门,但没有像这样的过渡:

public void loginOnClick(View view)
{
    final RelativeLayout leftPanel = (RelativeLayout)findViewById(R.id.RelativeLayoutLeft);
    final RelativeLayout rightPanel = (RelativeLayout)findViewById(R.id.RelativeLayoutRight);

    Animation animLeft = new TranslateAnimation(1, 0, 1, -1, 1, 0, 1, 0);
    animLeft.setDuration(1000);
    animLeft.setFillAfter(true);
    animLeft.setAnimationListener(new Animation.AnimationListener()
    {
        @Override public void onAnimationStart(Animation animation)
        {
        }

        @Override public void onAnimationEnd(Animation animation)
        {
            leftPanel.setVisibility(View.GONE);
            rightPanel.setVisibility(View.GONE);
        }

        @Override public void onAnimationRepeat(Animation animation)
        {
        }
    });
    Animation animRight = new TranslateAnimation(1, 0, 1, 1, 1, 0, 1, 0);
    animRight.setDuration(1000);
    animRight.setFillAfter(true);

    leftPanel.startAnimation(animLeft);
    rightPanel.startAnimation(animRight);
}

我知道我可以在动画之后更改活动,但我想在动画前一个活动时查看下一个活动。

我该怎么做?
任何帮助,将不胜感激。

编辑:

我发现最好的解决方法是include在第一个活动 xml 中使用一个来包含第二个活动的上下文。(在将要打开的门后面)但这并不完全是我想要的,因为 UI 上的某些内容在onCreate()第二种方法之后发生了变化。

4

2 回答 2

2

我可以建议一个解决方法:

通过添加以下内容禁用主题的默认窗口动画:

<item name="android:windowAnimationStyle">@null</item>

现在,就在 Activity_2 必须启动之前,Activity_1 已经double doors出现。不要在 Activity_1 中执行动画,而是在 Activity_2 中启动它onCreate(Bundle)

您将需要放置double doorsActivity_2 的布局。loginOnClick(View view)将调用后的内容setContentView(R.layout.activity_2)放在 Activity_2 中onCreate(Bundle)

因为windowAnimationStyle设置为null,所以从 Activity_1 到 Activity_2 的转换看起来是无缝的。

编辑:刚刚测试了这个,效果很好。

于 2013-09-08T18:38:58.357 回答
0

您可以为其他活动添加动画,以便它以与门打开相同的速度从屏幕中间水平向外向设备两侧增长。这会让人产生看到应用程序大门敞开的错觉。

于 2013-09-15T12:45:00.927 回答