我正在为我的活动创建过渡。我已经设置从转换中排除导航和状态栏:
<targets>
<target android:excludeId="@android:id/statusBarBackground"/>
<target android:excludeId="@android:id/navigationBarBackground"/>
</targets>
我的问题是我使用以下方式设置应用后台:
getWindow().getDecorView().setBackgroundColor(COLOR);
因此,当我的转换开始或结束时,我之前设置的颜色在转换之间在屏幕上闪烁。我怎么能阻止这个?我可以将任何内容放入目标吗?
答案 0 :(得分:0)
返回此转换将自身限制为跟踪和动画的目标视图列表。如果
getTargetIds()
,getTargets()
,getTargetNames()
和getTargetTypes()
的列表为 null 或为空,则此转换为不限于特定视图,并将处理场景更改层次结构中任何视图的更改。
Transitions API将使用指定getTargets()
的{{1}},以找出需要获取的Transition
。只要您没有明确指定转换的目标视图,就会获得整个视图层次结构以进行更改。因此,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
进行操作的原因。您可以为当前窗口充气/获取xml
并以编程方式添加/排除目标:
Transition