gpt4 book ai didi

animation - Activity 之间的插入/推出动画

转载 作者:行者123 更新时间:2023-12-02 06:03:02 25 4
gpt4 key购买 nike

我正在开发一个包含许多代表阶段的 Activity 的应用程序。因此有 Stage1Activity、Stage2Activity、Stage3Activity 等。每个 Activity 都有一个按钮(或多个按钮),一旦单击这些按钮,用户就会转到下一个 Activity 。我想做的是让这些 Activity 之间的过渡充满活力。

我在 res/anim 文件夹中添加了两个 XML 文件。 push_left_in.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="300"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
</set>

还有 push_left_out.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="300"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" />
</set>

在主 Activity Stage1Activity 中,我有:

public class Stage1Activity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_stage1);
overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
if (keyCode == KeyEvent.KEYCODE_BACK){
finish();
overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
return true;
}
return super.onKeyDown(keyCode, event);
}
}

现在,当我在 Activity 中移动时,过渡会正常进行。新 Activity 将旧 Activity 从右向左推到视野之外。当用户按下他们设备上的后退按钮时,我想要一个反向效果,但是会播放相同的过渡动画。我玩过 android:fromXDelta 标签并取得了一些非常奇怪的结果,但我只是不知道如何设置它,以便在按下设备上的后退按钮时,新 Activity (实际上是新调用的旧 Activity ) ) 从左向右推出旧的。

基本上,我想让它看起来像是您在通过各个阶段时向右移动,但是当您向后按时,它应该看起来像是您返回(向左)。抱歉,这是一个愚蠢的问题,但我真的很困惑,我需要帮助:/

最佳答案

我想回答我自己的问题有点笨……但我想我自己收拾烂摊子才合适。我做了一些更广泛的研究并尝试了代码,我很自豪地说我已经解决了这个问题。以下是解决方案,供可能需要它的任何人引用。

此应用程序需要四个动画。首先,单击 Stage1Activity 上的按钮后,我想向左滑动并淡出该 Activity ,同时从右向左滑动 Stage2Activity。这需要两个 XML 文件:

push_left_in.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%" android:toXDelta="0" android:duration="500"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="500" />
</set>

push_left_out.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-100%" android:duration="500"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="500" />
</set>

这两个文件在 overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out); 命令中调用,位于 onCreate 中,就在 下方设置内容 View 。一个将旧 Activity 推出,另一个将新 Activity 推出。现在我只需要在设备上按下“后退”按钮时产生相反的效果。这需要一个全新的动画(我没有马上得到的东西)。

所以我又添加了两个 XML 文件:

push_right_in.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="100%" android:duration="500"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="500" />
</set>

push_right_out.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%" android:toXDelta="0" android:duration="500"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="500" />
</set>

这两个文件在 overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out); 中调用,放置在 onKeyDown 方法中用于后退按钮响应.一个将旧 Activity 滑出,另一个将新 Activity 滑入 - 但与前一个动画相比方向相反。也不要忘记更改 alpha 值,因为这发生在我身上,哈哈

无论如何,这个问题现在已经结束了。抱歉,添麻烦了!或者不是,因为我至少为此获得了 Tumbleweed 成就 XD

关于animation - Activity 之间的插入/推出动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17012996/

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