【发布时间】:2016-06-04 10:35:19
【问题描述】:
我有一个用例,我主要通过转换启动一个活动,但从导航抽屉打开它时不是这种情况。
为了保持过渡平稳,我有一个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 来设置一些包来告知动画是否正在显示。
【问题讨论】:
-
我会假设它的逻辑和你一样(if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { doSomeUiUpdating(); ... .) 在代码之前你必须开始一个活动
-
并且在 API 19 (KITKAT) 中添加了转换,因此您需要在此之前检查不是 LOLLIPOP -- youtube.com/watch?v=K3yMV5am-Xo
-
问题是 - 正如我在第一行中所说的那样 - 活动(即使在 Lollipop+ 上)最常从过渡开始,而不是当用户从导航开始活动时抽屉。
-
不确定你的意思,但你可以等一会,直到导航抽屉关闭,如果这是一个问题,然后再做一些事情 -- developer.android.com/intl/ru/reference/android/support/v4/…
-
从导航抽屉打开活动时,我没有共享元素(ImageView)来为下一个活动设置动画。 (从其他地方开始活动时,我有共享元素。)
标签: android android-animation android-transitions