3

ランチャー アクティビティを開いたとき、または前のアクティビティから戻ったときに、ランチャー アクティビティを右から左にスライドさせたいです。現在、別のアクティビティに切り替えると右から左にスライドしますが、開いたり戻るボタンを押したりするとスライドしません。

ランチャー アクティビティに適用されるスタイルに関連する XML は次のとおりです。

スタイル.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 メソッドは、終了トランジションが機能する理由と関係があると思いますが、これをエンター トランジションに適用するにはどうすればよいですか?

4

2 に答える 2

2

アクティビティがAppCompatActivityの場合は、次を試してください。

Intent intent = new Intent(LoginActivity.this, RegisterActivity.class);
Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(LoginActivity.this).toBundle();
ActivityCompat.startActivity(RegisterActivity.this, intent, bundle);
于 2016-12-05T17:19:13.943 に答える
-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>

この方法を使用して、要件に応じてアクティビティをスライドさせることができます。

于 2015-03-30T11:57:24.727 に答える