因此,我正在尝试在我的 Android 应用程序中的两个 Activity 之间建立一个转换,这看起来类似于 iOS 应用程序中的转换。我的“Going in Transition”工作得非常好,按照我希望的方式工作,新布局滑过旧布局,而旧布局向左移动一点。但现在我坚持使用反向过渡,回到我的第一个布局,因为我希望它看起来完全像第一个过渡,但只是反向,这是我无法实现的,导致 Android 自动分层移动移出过渡之上的过渡,如您在随附的 gif 中所见。
所以我有两个想法来解决这个问题。是否有可能更改过渡层?如果没有,也可以为移动蒙版制作动画,好吧,我在过渡中移动。但是对于这两种可能性,我都知道如何实现它们。
我当前的代码:
我只是在我的两个 Activity 的 OnCreate 上调用动画:
我的主菜单的 OnCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.slide_in_left,R.anim.slide_out_left);
setContentView(R.layout.activity_main);
}
在创建我的设置时:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_right);
setContentView(R.layout.activity_settings);
}
还有我的 xml 文件: slide_in_left.xml
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="-30%p"
android:toXDelta="0"
android:duration="@android:integer/config_longAnimTime" />
滑出-left.xml
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="100%p"
android:duration="@android:integer/config_longAnimTime" />
slide_in_right.xml
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="@android:integer/config_longAnimTime" />
slide_out_right.xml
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="-30%p"
android:duration="@android:integer/config_longAnimTime" />
最佳答案
在您的 MainActivity 中
private boolean isReverseAnimation = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
isReverseAnimation = false;
overridePendingTransition(R.anim.anim_slide_in_left,R.anim.anim_slide_out_left);
//your other code
}
@Override
protected void onStart() {
super.onStart();
if (isReverseAnimation) {
this.overridePendingTransition(R.anim.anim_slide_in_right,
R.anim.anim_slide_out_right);
}else{
isReverseAnimation = true;
}
}
并按原样设置 Activity 。
尝试让我知道是否有任何问题。
快乐编码:)
关于java - 在 Activity 更改时构建类似 iOS 的 Transition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47528161/