Activity 动画转换发生得太快
Activity transition happening too quickly for animation
编辑
问题可以看这里:
我有一个登录屏幕和一个注册屏幕。
当用户单击注册按钮时 - 我想从登录屏幕滑动到注册屏幕。我有这个工作正常。
当用户在注册界面按下后退按钮时,我想滑回登录界面。
这似乎有效,但登录屏幕 activity 在动画完成之前加载到旧的 activity。
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>
备注
我已经尝试了以下两种解决方案,但都不适用于我的情况。
overridePendingTransition shows second activity too quickly
push_right_in.xml
和 push_right_out.xml
好像混淆了。
push_right_in.xml
应该在屏幕外开始:android:fromXDelta="-100%p"
并在屏幕上结束:android:toXDelta="0"
push_right_out.xml
应该在屏幕上开始:android:fromXDelta="0"
并在屏幕外结束:android:toXDelta="100%p"
.
编辑
问题可以看这里:
我有一个登录屏幕和一个注册屏幕。
当用户单击注册按钮时 - 我想从登录屏幕滑动到注册屏幕。我有这个工作正常。
当用户在注册界面按下后退按钮时,我想滑回登录界面。
这似乎有效,但登录屏幕 activity 在动画完成之前加载到旧的 activity。
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>
备注
我已经尝试了以下两种解决方案,但都不适用于我的情况。
overridePendingTransition shows second activity too quickly
push_right_in.xml
和 push_right_out.xml
好像混淆了。
push_right_in.xml
应该在屏幕外开始:android:fromXDelta="-100%p"
并在屏幕上结束:android:toXDelta="0"
push_right_out.xml
应该在屏幕上开始:android:fromXDelta="0"
并在屏幕外结束:android:toXDelta="100%p"
.