活动转换发生得太快,无法进行动画。

3

编辑

问题可以在这里看到:

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显示第二个活动太快


能否请投反对票的人解释一下他的理由? - TomSelleck
当用户返回时,动画应该是什么? - dazza5000
当用户在第一个屏幕上点击“创建帐户”时,注册活动应该从右向左拉出。当用户点击返回时,登录屏幕应该从左向右拉出,与第一个动画相反。 - TomSelleck
1个回答

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"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接