首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在视图(和子视图)完成加载后运行函数

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

Stack Overflow用户
提问于 2018-04-27 20:05:18
回答 1查看 545关注 0票数 1

如何像iOS (viewDidAppear / viewDidLayoutSubviews)那样在视图及其子视图加载完成后运行函数

我基本上想在程序加载后运行一个UI动画,但由于我的程序太重(并且有很多子视图),动画根本不能运行(我尝试了handler.postDelayed,它工作得很好,但我想知道更有效的方法来做到这一点(出于性能原因,我测试的手机很旧,加载需要4秒,而另一部手机只需要一秒钟,等等)。

EN

回答 1

Stack Overflow用户

发布于 2018-04-27 20:22:06

我认为您可以像here那样使用ViewTreeObserver实现这一点。您将拥有类似以下内容的内容:

代码语言:javascript
复制
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中运行动画,但这将在活动恢复时运行动画,而不仅仅是在您第一次创建它时,我不确定您是否愿意这样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50062022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档