动画转换过快发生动画

时间:2018-01-25 12:06:17

标签: android android-animation android-xml overridependingtransition

修改

问题可以在这里看到:

enter image description here

我有登录屏幕和注册屏幕。

当用户点击注册按钮时 - 我想从登录屏幕滑动到注册屏幕。我的工作还可以。

当用户按下注册屏幕上的后退按钮时,我想滑回登录屏幕。

这似乎有效,但在动画完成之前,旧活动中会加载登录屏幕活动。

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

1 个答案:

答案 0 :(得分:3)

push_right_in.xmlpush_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"