在视图(和子视图)完成加载后运行一个函数

时间:2018-04-27 12:05:18

标签: android

如何在视图及其子视图完成加载之后运行一个函数,就像在iOS中一样(viewDidAppear / viewDidLayoutSubviews)

我基本上想在程序加载后运行UI动画,但由于我的程序太重(并且有很多子视图),动画根本没有运行(我试过handler.postDelayed并且它工作正常,但我想要要知道更有效的方法(出于性能原因,我测试的手机很老,需要4秒才能加载,而另一部只需要一秒钟,等等。)

1 个答案:

答案 0 :(得分:0)

我认为你可以使用ViewTreeObserver来表达here。 你会有类似的东西:

yourView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        // do something here but make sure you unregister if you just want to get notified only once..
    }
});

开发者页面说明了以下内容:Register a callback to be invoked when the global layout state or the visibility of views within the view tree changes

然后,您可以在活动的根视图中添加此侦听器,例如在onCreate中,在该方法中可以执行动画。

只要布局状态或视图的可见性发生变化,就会调用该方法。它与viewDidAppear不同,但它类似于“viewDidLayoutSubviews”。

您也可以尝试在onResume中运行动画,但只要第一次创建活动并且我不确定您是否需要,活动就会运行动画。