私は API レベル 21 を使用しており、Nexus 6 でテストしています。
マスターと詳細の 2 つのアクティビティがあり、各ビューにはフラグメントがあります。マスター リストでアイテムを選択すると、詳細ビューに遷移します。
次のように、マスターと詳細の両方でビューの遷移を有効にしました。
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
Transition ts = new Slide(Gravity.RIGHT);
ts.setDuration(2500);
getWindow().setEnterTransition(ts);
getWindow().setExitTransition(ts);
getWindow().setAllowEnterTransitionOverlap(true);
getWindow().setAllowReturnTransitionOverlap(true);
トランジション アニメーションは、1 つのことを除いて期待どおりに機能します。アイテムを選択すると、親アクティビティがトランジション アウトするときに非表示になるため、表示されません。戻ると、詳細ビューがトランジションアウトされ (非表示ではなく)、マスターがトランジションインされます (非表示ではありません)。では、マスター ビューがトランジション アウトし、詳細ビューがトランジション インするときに、マスター ビューが非表示になるのはなぜでしょうか。
Android Studio では、次のようなログ投稿がいくつか表示されます。
changeCanvasOpacity: opaque=true
changeCanvasOpacity: opaque=false
changeCanvasOpacity: opaque=false
changeCanvasOpacity: opaque=false
最初の 2 行は最初の遷移 (マスター => 詳細) 用で、次の 2 行は戻り (詳細 => マスター) です。ご覧のとおり、「opaque = true」は 1 行だけです。マスタービューが非表示になっているときだと思います(移行が開始されるため)。
どうすればこれを防ぐことができますか?
この投稿Content Transitions In-Depth (part 2)の「Content Transitions Under-The-Hood」と項目 1C の下に、「フレームワークは、A のすべての遷移ビューを INVISIBLE に設定します。」と記載されています。
これは私の問題だと思います。どうすればこれを解決できますか?