gpt4 book ai didi

android - 更改 Android 上 Activity 动画的 z 顺序

转载 作者:太空宇宙 更新时间:2023-11-03 11:14:07 26 4
gpt4 key购买 nike

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

我有一个小部件,它指向应用程序结构深处的某处。因此,当用户单击操作栏中的向上按钮时,我必须手动创建返回堆栈。但是后来我实际上用新的 Intent 调用 startActivity 指向一个附加了返回堆栈的新 Activity ..在这里我们开始讨论这个问题..actvity 实际上从顶部开始动画,而不是像往常一样从返回堆栈弹出时动画标准方式。

你可以在下图看到流程 enter image description here

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

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

enter image description here

最佳答案

老问题,但我也遇到过同样的问题。解决方案是在我们的动画定义中添加属性 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);

关于android - 更改 Android 上 Activity 动画的 z 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19630576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com