Android 5.0 windowEnterTransition不影响转换

时间:2015-01-17 17:30:45

标签: android android-transitions

我希望我的启动器活动在打开或从之前的活动返回时从右向左滑入。当它切换到另一个活动时,它当前从右向左滑动,但是当它打开或按下后退按钮时,它不会滑动。

以下是应用于我的启动器活动的样式的相关XML:

styles.xml

    <item name="android:windowContentTransitions">true</item>
    <item name="android:windowEnterTransition">@android:transition/slide_left</item>
    <item name="android:windowExitTransition">@android:transition/slide_left</item>
    <item name="android:windowReenterTransition">@android:transition/slide_right</item>
    <item name="android:windowReturnTransition">@android:transition/slide_left</item>

单击按钮时,我的活动将移至下一个活动。这是我的onClickListener:

Button register = (Button)findViewById(R.id.registerBtn);
        register.setOnClickListener(new Button.OnClickListener(){
            public void onClick(View v) {
                Intent i = new Intent(LoginActivity.this, RegisterActivity.class);
                startActivity(i, ActivityOptions.makeSceneTransitionAnimation(LoginActivity.this).toBundle());
            }
        });

我认为ActivityOptions.makeSceneTransitionAnimation方法可能与退出转换的工作原理有关,但如何将其应用于输入转换呢?

2 个答案:

答案 0 :(得分:2)

如果您的活动是 AppCompatActivity ,请尝试以下操作:

Intent intent = new Intent(LoginActivity.this, RegisterActivity.class);
Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(LoginActivity.this).toBundle();
ActivityCompat.startActivity(RegisterActivity.this, intent, bundle);

答案 1 :(得分:-2)

您可以使用它来启动带有转换的新活动

startActivity(new Intent(this, NewActivity.class));
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);

创建文件res / anim / slide_in_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:shareInterpolator="false" >
     <translate android:duration="1000" android:fromXDelta="100%" android:toXDelta="0%" />
     <alpha android:duration="1000" android:fromAlpha="0.0" android:toAlpha="1.0" />
</set>

创建文件res / anim / slide_out_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
      android:shareInterpolator="false" >
      <translate android:duration="2000" android:fromXDelta="0%" android:toXDelta="-100%"/>
      <alpha android:duration="2000" android:fromAlpha="1.0" android:toAlpha="0.0" />
</set>

您可以使用此方法根据要求相应地滑动您的活动。