我有一个应用场景,其中我通常会通过转换开始活动,但从导航抽屉中打开时情况并非如此。
为了保持转换平滑,我使用Transition.TransitionListener
,当转换完成时,我会触发一些UI更新。
所以我的代码类似于:
public class SomeActivity extends Activity {
public void onCreate(Bundle savedInstanceState){
// ...
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
Transition sharedElementEnterTransition = getWindow().getSharedElementEnterTransition();
sharedElementEnterTransition.addListener(new Transition.TransitionListener() {
// ...
@Override
public void onTransitionEnd(Transition transition) {
doSomeUiUpdating();
}
});
} else { // Pre-Lollipop
doSomeUiUpdating();
}
}
}
如果使用动画启动Activity,这个方法很有效,但如何知道Activity是没有转换效果而启动的,以便我可以调用doSomeUiUpdating()
?
我相信在Activity
、Window
、Transition
或其他地方肯定有一个简单的方法,但我可能已经忽略了它。我不想依赖于调用Activity来设置一些指示是否显示动画的捆绑包。
Transition
的getTargets()
方法(sharedElementEnterTransition.getTargets().isEmpty()
),看它是否为空?无论如何它都不是null,而TargetViews的数量可能是解决方案。 - Konstantin Loginov