4

アクティビティ アニメーションの z オーダーを反転する方法はありますか? 基本的に、新しいアクティビティを開始すると、バックスタックに追加され、そのウィンドウが前のアクティビティのウィンドウの上に追加されます。後で戻ると、バックスタックから取得されたアクティビティが一番上のアクティビティの下にウィンドウを表示します。ほとんどの場合、それは完全に理にかなっていますが、その動作には次の問題があります。

アプリ構造のどこかを指すウィジェットがあります。そのため、ユーザーがアクション バーのアップ ボタンをクリックしたときに、バック スタックを手動で作成する必要があります。しかし、実際には、バックスタックが接続された新しいアクティビティを指す新しいインテントで startActivity を呼び出します..そして、ここで問題に進みます..バックスタックからポップするときに通常どおりアニメーション化されるのではなく、アクティビティは実際に上からアニメーション化されます標準的な方法。

次の図で流れを見ることができます ここに画像の説明を入力

これは、タスク バック スタックを再作成し、ユーザーを親アクティビティに移動する方法のコード スニペットです。また、アニメーションのスクリーンショットを見ることができます..基本的に、上部にあるウィンドウは下部にある必要があります(アプリ階層の上位にあります)。参考までに、これらのアニメーションはすべて、標準の XML ウィンドウ アニメーションを介して行われ、overridePendingTransition 呼び出しで起動されます。これらのアニメーション内で z 調整を変更しようとしましたが、特定の 1 つのアニメーションのさまざまなレイヤーにのみ影響するようです..

if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
       NavUtils.navigateUpTo(this, upIntent);
} else {
      TaskStackBuilder.create(this)
                        .addNextIntentWithParentStack(upIntent)
                        .startActivities();

}

ここに画像の説明を入力

4

1 に答える 1

1

古い質問ですが、同じ問題がありました。解決策は、属性を追加するandroid:zAdjustment="top"android:zAdjustment="bottom"、アニメーション定義に追加することです。例:

Nothing_background.xml

<?xml version="1.0" encoding="utf-8"?>
  <translate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:zAdjustment="bottom"
    android:duration="400"
    android:fromXDelta="0%p"
    android:toXDelta="0%p" >
  </translate>

fade_in_foreground.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:zAdjustment="top">
    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:duration="400" />
</set>

遷移をトリガーするコードでは:

Intent intent = new Intent(FromActivity.this, ToActivity.class);
Bundle animate = ActivityOptions.makeCustomAnimation(getApplicationContext(),
  R.anim.nothing_background, R.anim.fade_in_foreground).toBundle();
startActivity(intent, animate);
于 2017-04-22T12:59:47.843 に答える