在.NET下,您可以调用SuspendLayout() / ResumeLayout()。
在Android系统下有类似的产品吗?
我的理由是这..。我有一个包含多达64“面板”的RelativeLayout (另一个带有3个TextView子版的RelativeLayout )。
通过串行通信链接,我得到一条XML消息,描述要显示的面板的数量、它们的大小以及在每个可见面板的3个文本视图中放置什么。
初始代码全部工作,我可以显示一页的面板。
然而,当我得到一个新的XML消息时,我隐藏所有面板,重新定位在新XML消息中定义的面板,更新每个面板的3个文本视图,然后显示正在使用的面板。
同样,这是可行的,但当所有面板被隐藏时,页面会变为空白(可能1-2秒),然后所有的新面板都会出现。
我猜想隐藏/显示面板是一个相对较快的过程,但是解码XML和更新面板文本/字体/颜色/etc需要一段时间才能重新启用面板。
我想知道如何在更新顶级RelativeLayout时“挂起”绘图过程,然后在所有视图初始化后“恢复”绘图。
有办法这样做吗?
还是我从错误的角度来处理这件事?如果是的话,最好的尝试方法是什么?
-更新
好吧,似乎我有点过早,因为我在代码中发现了一个“怪癖”,导致了1-2秒的延迟(一条未处理的XML消息)。
但谢谢你抽出时间给我指点。在我无聊的时候读一点光!
发布于 2018-06-20 11:46:07
您应该做的第一件事是计算出可以将多少工作委托给后台线程(例如,“解码XML")。然后,您可以使用Looper.getMainLooper()安全地更新UI。
最好是充气和填充新的布局,然后交换它们,而不是更新可见的布局。然后,您可以拥有一组可回收的视图,即维护的视图数量是显示视图的两倍。这正是RecyclerView的要点(也请参见“用RecyclerView创建列表”)。
活数据可能也是值得您研究的。
https://stackoverflow.com/questions/50947142
复制相似问题