從Transition#getTargets()
:
返回目標的列表視圖,這種轉變本身的限制,以跟蹤和動畫。如果該列表是空或空爲getTargetIds()
,getTargets()
,getTargetNames()
,並getTargetTypes()
那麼這種轉變並不限於特定的意見,並將處理變化的場景變化的層次結構的任何意見。要獲得
轉換API將使用指定的Transition
的getTargets()
爲了找出View
的需要。只要你沒有明確地爲轉換指定一個目標視圖,那麼整個視圖層次就可以獲得更改。因此,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
沒有ID與之相關聯的,這就是爲什麼它是不可能通過xml
做。您可以充氣/獲取Transition
當前窗口,並添加/編程排除目標:
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);
嗨azizbekian,我想在這裏和什麼也沒有發生。我將推遲的呼叫發佈到supportStartPostponedEnterTransition,並且在轉換不開始時,屏幕顯示裝飾視圖背景。 – user2494863
我沒有說,它不會顯示背景。只是它不會參與轉型。你的問題問到如何防止閃爍。閃爍正在發生,因爲淡入淡出轉換正在應用於decorView。你還看到它閃爍? – azizbekian
是的,它顯示了一切的背景。當我刪除帖子延遲時,它會閃爍此背景。 – user2494863