【问题标题】:Change the z-order of activity animations on Android在 Android 上更改活动动画的 z 顺序
【发布时间】:2013-10-28 08:59:05
【问题描述】:

有没有办法反转活动动画的 z 顺序?基本上,当您启动新活动时,它会添加到后台堆栈中,并且它的窗口会添加到前一个活动的窗口上。有时稍后返回时,从后台堆栈中获取的活动会在顶部活动下方显示其窗口。大多数情况下它是完全有道理的,但我对这种行为有以下问题。

我有一个小部件,它指向应用程序结构的深处。因此,当用户单击操作栏中的向上按钮时,我必须手动创建后退堆栈。但后来我实际上调用 startActivity ,新的意图指向一个新的活动,并附有后堆栈..在这里我们解决问题..活动实际上是从顶部动画,而不是像往常一样从后堆栈弹出动画标准方式。

您可以在下图中看到流程

这是我如何重新创建任务返回堆栈并将用户导航到父活动的代码 sn-p。同样在下方,您可以看到动画的屏幕截图。基本上,顶部的窗口应该在底部(在应用程序层次结构中较高)。仅供参考,所有这些动画都是通过标准 XML 窗口动画完成的,并通过 overridePendingTransition 调用触发。我试图在这些动画中修改 z 调整,但它似乎只影响一个特定动画中的各个层..

if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
       NavUtils.navigateUpTo(this, upIntent);
} else {
      TaskStackBuilder.create(this)
                        .addNextIntentWithParentStack(upIntent)
                        .startActivities();

}

【问题讨论】:

    标签: android android-intent navigation back-stack


    【解决方案1】:

    老问题,但我遇到了同样的问题。解决方案是在我们的动画定义中添加属性android:zAdjustment="top"android:zAdjustment="bottom"。示例:

    nothing_background.xml

    <?xml version="1.0" encoding="utf-8"?>
      <translate
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:zAdjustment="bottom"
        android:duration="400"
        android:fromXDelta="0%p"
        android:toXDelta="0%p" >
      </translate>
    

    fade_in_foreground.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
         android:zAdjustment="top">
        <alpha
            android:fromAlpha="0.0"
            android:toAlpha="1.0"
            android:interpolator="@android:anim/accelerate_interpolator"
            android:duration="400" />
    </set>
    

    在您触发转换的代码中:

    Intent intent = new Intent(FromActivity.this, ToActivity.class);
    Bundle animate = ActivityOptions.makeCustomAnimation(getApplicationContext(),
      R.anim.nothing_background, R.anim.fade_in_foreground).toBundle();
    startActivity(intent, animate);
    

    【讨论】:

      猜你喜欢
      • 2012-08-09
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      相关资源
      最近更新 更多