表现:ViewGroup with Children VS.自定义绘制视图

时间:2013-12-18 11:27:11

标签: android android-layout custom-controls android-view android-custom-view

我正在开发一个包含大量自定义视图的应用程序,并遇到了一个非常复杂的性能问题。它们用于测量和绘制的时间是高的(典型地> = 30ms)。要提供更多详细信息:这是一个自定义ViewGroup(扩展RelativeLayout),其中包含自定义视图(尽管扩展RelativeLayout)。

所以我想到了解决这些性能问题可能是更好/更快的方法:优化子项和布局或切换到完全自定义绘制的视图(线条,矩形和类似的东西) ?

你们中有谁有经验吗?或者甚至一些人做了一些基准并愿意分享它们?

1 个答案:

答案 0 :(得分:2)

简单的方法是简化和展平当前的视图层次结构,也许你将能够使测量和绘图过程更便宜(或者至少是体面的)。你没有张贴布局,所以没有具体的说法,我看到你在RelativeLayouts中提到了RelativeLayouts,也许你可以删除一个并将视图向上移动一级(即使是每个级别都要计算(特别是嵌套RelativeLayouts)。您可能已经知道了,但布局中的mergeinclude标记可能非常有用。

标准SDK中的

RelativeLayout是作为常规窗口小部件构建的,因此很可能无法实现自定义设计布局的性能。让当前布局扩展RelativeLayout以扩展ViewGroup并手动实现子项的测量和布局会更有意义,尤其是当您可能知道应用程序中的用例场景时(例如{ {1}}总是需要处理它可能存在的所有大小约束情况,另一方面,如果你知道自定义视图具有一定的大小,你的自定义布局可以更快地处理这个问题。)

完全自定义绘制的视图相关,它是一个选项,但它取决于布局的复杂程度。

  

甚至有些人做了一些基准并愿意分享它们?

我不知道各种观点基准(很可能不适用于您的具体情况)会有所帮助。