2017-06-02 6 views
0

自分のアクティビティの遷移を作成しています。私はすでに移行からナビゲーションとステータスバーを除外するように設定します。遷移中にdecorViewの背景が点滅しないようにする

getWindow().getDecorView().setBackgroundColor(COLOR); 

そして、そのため、私の移行が開始または終了すると、これを:

<targets> 
     <target android:excludeId="@android:id/statusBarBackground"/> 
     <target android:excludeId="@android:id/navigationBarBackground"/> 
    </targets> 

私の問題は、私が使用してアプリの背景を設定することです前に設定した色、トランジション間で画面上で点滅します。どうすればそれを防ぐことができますか?私はターゲットの中に入れることができるidがありますか? Transition#getTargets()から

答えて

0

は、ターゲットのリストを追跡し、アニメーションへの移行が制限そのものを見ていることを返します。リストには、ヌルまたはgetTargetIds()ため、getTargets()getTargetNames()、およびgetTargetTypes()であれば、この移行は、特定のビューに限定されるものではなく、シーンチェンジの階層内の任意のビューへの変更を処理します。

移行APIを取得する必要があるView Sを見つけるために、指定されたTransitiongetTargets()を使用します。また、移行のターゲットビューを明示的に指定していない限り、変更のためにビュー階層全体が取得されます。したがって、decorViewも移行に参加します。代わりに、あなたは、このように推移からdecorViewを排除し、ターゲットとしてビュー階層のルートを指定することができます。

<fade xmlns:android="http://schemas.android.com/apk/res/android"> 

    <targets> 
    <target android:excludeId="@android:id/statusBarBackground"/> 
    <target android:excludeId="@android:id/navigationBarBackground"/> 
    <target android:targetId="@id/root"/> 
    </targets> 

</fade> 

私は、ターゲットの内側に置くことができる任意のIDがありますか?

decorViewそれはxml経由で行うことはできません理由です、それに関連付けられたIDを持っていません。私は両方ここにしようと、何も起こりません、

 

    Transition t = new Fade(); 

    // Inflating a transition from /transition/my_transition.xml 
    // t = TransitionInflater.from(this).inflateTransition(R.transition.my_transition); 

    // If transition is set through theme via `android:windowExitTransition` 
    // t = getWindow().getExitTransition(); 

    // Adding a target 
    // t.addTarget(rootView); 

    // Excluding decorView, which will exclude all children too 
    t.excludeTarget(getWindow().getDecorView(), true); 
    t.excludeTarget(android.R.id.statusBarBackground, true); 
    t.excludeTarget(android.R.id.navigationBarBackground, true); 

    getWindow().setExitTransition(t); 
 
+0

こんにちはazizbekianを:あなたは、現在のウィンドウのためのTransitionを取得/膨らませると追加/プログラム的目標を除外することができます。私はsupportStartPostponedEnterTransitionの呼び出しを延期し、移行が開始されない間に、画面に装飾ビューの背景が表示されます。 – user2494863

+0

私はそれがバックグラウンドを表示しないと言っていませんでした。移行に参加しないことだけです。あなたの質問は点滅を防ぐ方法を尋ねました。点滅が起こっていたのは、フェード遷移がdecorViewに適用されていたためです。あなたはまだそれが点滅して見ていますか? – azizbekian

+0

はい、すべての上に背景を表示しています。ポストディレイを削除すると、この背景が点滅します。 – user2494863

関連する問題