何时在活动生命周期中开始动画?

时间:2017-08-07 11:15:40

标签: android animation android-animation android-view android-lifecycle

奇怪但我从来没有见过关于我们如何在正确的时间执行动画的详细记录,以便在活动的生命周期正在进行时能够顺利地看到它们。

例如,如果您开始制作动画onCreate,那么您甚至不会看到它发生。

此外,如果活动A使用startActivityForResult启动活动B,并且您想要启动动画onActivityResult(以显示用户的选择),那么您再一次看不到任何内容从活动B到活动A的过渡需要一些时间。

在这些情况下,我们如何知道何时开始动画?我现在对onActivityResult案件更感兴趣。

另外,我们如何知道视图是否真的可以执行用户实际看到的动画?

2 个答案:

答案 0 :(得分:0)

您正在寻找onResume

Quote from Android docs:

  

在onRestoreInstanceState(Bundle),onRestart()或onPause()之后调用,以使您的活动开始与用户交互。这是开始制作动画,打开独家访问设备(如相机)等的好地方。

在相同的文档中,您还可以找到有关如何检查活动是否显示的方法:

  

请记住,onResume不是您的活动对用户可见的最佳指标;诸如键盘锁之类的系统窗口可以在前面。使用onWindowFocusChanged(boolean)可以确定您的活动对用户可见(例如,恢复游戏)。

答案 1 :(得分:0)

对于标准流程onResume()可能被视为触发动画的好点。但是,如果您有其他一些用例,那么您可以启动将动画开始延迟到下一帧,其中所有内容(希望)已经设置好。

可以通过Handler类来完成。


    new Handler().post(new Runnable() {
        @Override
        public void run() {
            // start animation
        }
    });

使用此技术,您可以从onCreate()onActivityResult()开始延迟动画。