优化/组合相关的Android布局

时间:2012-07-11 21:28:18

标签: android performance optimization layout

我想要一些关于Android UI(in)效率的建议。我正在尝试确定为我的应用程序构建特定布局的最佳方法,但是我认为我最初的想法可能存在破坏性能的风险。基本上我有三个非常相似和相关的应用程序组件,要配置它们,我需要用户输入。这三个组件在全局集中共享不同的参数。我想确定一种漂亮,流畅的方式,在设备上显示此输入表单。

我想做的只是让用户使用一张表格代替三张。所有三个组件都是相关/相似的,它们共享一些用户需要输入的配置参数。

我最初的想法如下:

  1. 通过XML构建三个实例中任意一个的初始显示所需的UI元素的广泛布局。不幸的是,考虑到按行组织的参数数量,在这种情况下,这将总共大约50个视图对象
  2. 创建活动,以便用户进入屏幕并理解 他们需要从a中选择三个值中的一个 屏幕顶部的微调框小部件。
  3. 通过使用按位比较运算符,只需显示/隐藏各种运算符 与所选Spinner值相关的控件。 (触发通过 Spinner的onItemSelectedListener())
  4. 创建一些次要/轻量级动画等等 了解拼图的各个部分正在添加或删除 反映他们的选择。
  5. 或者,第二种理论涉及使用三种不同的活动,并在三者之间保存状态,在它们之间传递参数......也许我应该放弃我最初的想法并使用这些方面的东西?第三种选择?

    这样做的主要动机不是将其分成三个单独的形式,而是应该允许用户在选择重新考虑他们的初始选择时以最小的挫败感体验一致的UI。使用上面的代码,如果用户填写了表单的一半并决定他们想要使用Spinner的替代选项,他们的信息显然会被保留,因为他们使用相同的视图对象。

    我想请大家就如何实现这一目标提出一些建议,而不会在典型的中端Android设备上出现太多性能下降的风险(我的意思是大多数用户拥有的手机,来自Froyo,特别是姜饼的那些。我很担心,因为我只能访问一个测试设备而且它是一台HTC One X手机,这显然是一个非常糟糕的选择,可以让人们了解大多数凡人设备如何能够呈现更复杂的布局。

    我也非常感谢有关优化性能的提示的任何指导...我从搜索社区和Android的开发人员资源中了解到渲染一些布局对象比渲染其他布局对象更为详尽,我应尽可能选择LinearLayout(如例如,与RelativeLayout相对)。是否有任何明确的资源来比较UI选项的性能?我非常想省下你的时间和精力,自己去获取知识。

    提前感谢您的时间和精力。欢呼声。

    编辑我想我应该提一下,如果有必要的话,在最初加载活动时(无论如何第一次),几乎都不需要将这些视图绘制到屏幕上......如果需要的话,我最初只能加载一些视图和Spinner小部件。默认情况下,它类似于加载“未选择选项”而不是选项1。如果设备缓慢,对用户的影响可能实际上很小,因为他们的设备在加载活动时实际上不必绘制超过少数几个视图对象。在任何一点上,设备可能只需要渲染并随后在任何时候显示大约30个视图对象。我想关键问题是,“如果用户手机正在努力加载大量XML,即使在加载活动时没有全部显示,也会遇到挂起或延迟?”

2 个答案:

答案 0 :(得分:2)

+1在这个问题上付出了巨大的努力。我个人的建议是你坚持你的第二个理论。将数据与视图分开 - 将输入的值存储在某个位置(如SharedPreferences或数据库),并具有三种不同的布局(每种形式一种)。在创建活动时,检查每个公共字段以查找先前存储的值,并填写该字段(如果存在)。尝试做第一个列表的事情虽然可能很聪明,但实际上并不理想。

答案 1 :(得分:0)

我认为仅为不同的设备屏幕开发布局会更有意义。您可以执行此操作,并将不同的布局放在不同的文件夹中。这是一篇很棒的文章,讨论了其中的一些内容。我不会给人们选择的“选项”。他们可能并不总是知道答案,因此最好让手机决定使用哪种布局。

以下是文章:

http://developer.android.com/guide/practices/screens_support.html