android - 性能 : ViewGroup with Children VS. 自定义绘制 View

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

我正在开发一个包含大量自定义 View 的应用程序,但遇到了其中一个非常复杂的性能问题。他们用于测量和绘图的时间太长(>= 30ms 典型值)。提供更多详细信息:这是一个自定义 ViewGroup(扩展 RelativeLayout),带有自定义 View (虽然扩展了 RelativeLayout)作为其子项。

所以我突然想到什么可能是摆脱这种性能问题的更好/更快的方法:优化子项和布局或切换到完全自定义的绘制 View (线条、矩形和类似的东西) ?

你们中有人有这方面的经验吗?或者甚至有人做了一些基准测试并愿意分享它们?

最佳答案

简单的方法是致力于简化和扁平化当前的 View 层次结构,也许您可​​以使测量和绘图过程更便宜(或至少体面)。你没有发布布局,所以没有什么具体要说的,我看到你在 RelativeLayouts 中提到了 RelativeLayouts,也许你可以删除一个并移动 View 向上一层(即使以添加其他辅助 View 为代价),每一层都很重要(尤其是嵌套 RelativeLayouts)。您可能已经知道,布局中的 mergeinclude 标签可能非常有用。

标准 SDK 中的

RelativeLayout 是作为通用小部件构建的,因此它很可能无法实现自定义设计布局的性能。让您当前的布局扩展 RelativeLayout 以扩展 ViewGroup 并手动实现子项的测量和布局会更有意义,特别是因为您可能知道您的用例场景应用程序(例如 RelativeLayout 总是需要处理它可能存在的所有大小限制情况,另一方面,如果您知道自定义 View 将具有一定的大小限制,那么您的自定义布局可以更快地处理这个问题尺寸)。

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

Or even some done some benchmarks and is willing to share them?

我看不出各种 View 基准(很可能不适用于您的特定情况)有何帮助。

关于android - 性能 : ViewGroup with Children VS. 自定义绘制 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20656876/

相关文章:

像IOS一样的安卓年历

android - 在末尾添加 listView 和 imageView

c# - 如何(垂直)放置不同高度的 WrapPanel 项目?

click - 自定义用户控制鼠标事件 c#

ios - swift UITextFieldDelegate 扩展

android - ACTION_USER_PRESENT BroadcastReceiver 不能在 list 中注册吗?

Android 无法使用 ListView 加载主屏幕小部件

android - 移动应用程序安装量和每日活跃用户数 (DAU) 之间的差异

android - 支持不同的屏幕尺寸 - xml 未正确加载。可能的错误?

android - 抽屉标题图像的大小应该是多少?