编辑
问题可以在这里看到:
我有一个登录界面和一个注册界面。
当用户点击注册按钮时,我希望从登录界面滑动到注册界面。我已经做到了。
当用户在注册界面按下返回按钮时,我希望滑动回到登录界面。
这似乎是有效的,但是登录界面活动在动画完成之前加载旧活动。
LoginActivity.java
public void createAccount(View view) {
Log.d(TAG, "Create Account clicked");
Intent intent = new Intent(getApplicationContext(), SignupActivity.class);
startActivityForResult(intent, REQUEST_SIGNUP);
overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
}
RegisterActivity.java
@Override
public void onBackPressed() {
super.onBackPressed();
Log.d(TAG, "Back clicked - return to login");
finish();
overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out);
}
push_left_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromXDelta="100%p"
android:toXDelta="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
</set>
push_left_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromXDelta="0"
android:toXDelta="-100%p"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
</set>
push_right_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromXDelta="0"
android:toXDelta="100%p"
android:interpolator="@android:anim/accelerate_decelerate_interpolator" />
</set>
push_right_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromXDelta="-100%p"
android:toXDelta="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator" />
</set>
注意
我已经尝试了下面的两种解决方案,但在我的情况下都不起作用。