4

私は 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 に設定します。」と記載されています。

これは私の問題だと思います。どうすればこれを解決できますか?

4

3 に答える 3

2

使用時に同じ問題が発生していましたがActivityOptionsCompat.makeSceneTransitionAnimation. 、Activiy フラグを削除して解決しましたandroid:launchMode="singleInstance" 。別のタスクが翻訳アニメーションを使用できないことが原因である可能性があります。

于 2016-02-29T13:36:55.970 に答える