如何知道一项活动是否在没有过渡的情况下开始? [英] How can one know if an activity is started without a transition?
问题描述
我有一个用例,其中我通常以过渡开始活动,但是从导航抽屉中打开活动时并非如此.
I have a use case where I mostly start an activity with a transition, but that's not the case when opening it from the navigation drawer.
为了保持过渡的顺利进行,我有一个Transition.TransitionListener
,当过渡完成时,我会在其中触发一些UI更新.
To keep the transition smooth I have a Transition.TransitionListener
in which I trigger some UI updating when the transition is done.
所以我有这样的东西:
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();
}
}
}
使用动画启动活动"时效果很好,但是如何知道活动是否在没有过渡的情况下启动,以便我可以调用doSomeUiUpdating()
?
This works well when starting the Activity with the animation, but how can I know if the Activity was started without a transition so that I can call doSomeUiUpdating()
?
我确定在Activity
,Window
,Transition
或我忽略的某个地方必须有一个简单的方法.我不想继续在调用Activity上设置一些捆绑,以告知动画是否正在显示.
I'm sure there must be a simple method in Activity
, Window
, Transition
or somewhere that I have overlooked. I don't want to relay on the calling Activity to set some bundle that telling if the animation is showing or not.
推荐答案
您可以尝试TransitionListener
中的onTransitionStart
设置一些布尔值isAnimationStarted
.
You can try onTransitionStart
of TransitionListener
to set some boolean isAnimationStarted
.
public class SomeActivity extends Activity {
private boolean isAnimationStarted = false;
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();
}
@Override
public void onTransitionStarted(Transition transition) {
isAnimationStarted = true;
}
});
}
}
public void onStart() {
if (!isAnimationStarted) {
doSomeUiUpdating();
}
}
}
这篇关于如何知道一项活动是否在没有过渡的情况下开始?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!