3

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

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

我最初的想法如下:

  1. 通过 XML 为三个实例中的任何一个构建初始显示所需的 UI 元素的广泛布局。不幸的是,考虑到按行组织的参数数量,在这种情况下总共将达到大约 50 个视图对象。
  2. 创建活动,以便用户进入屏幕,并了解他们最初需要从屏幕顶部的 Spinner 小部件中选择三个值之一。
  3. 通过使用按位比较运算符,只需显示/隐藏与所选 Spinner 值相关的各种控件。(通过 Spinner 的 onItemSelectedListener() 触发)
  4. 创建一些次要/轻量级动画等,以便他们了解正在添加或删除拼图的各个部分以反映他们的选择。

或者,第二种理论涉及使用三个不同的活动,并在三个不同的活动之间保存状态,在它们之间传递参数......也许我应该放弃我最初的想法并使用沿着这些思路的东西?第三种选择?

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

我想请大家就如何实现这一点提出一些建议,而不会冒着在典型的中端 Android 设备上出现太多性能下降的风险(我的意思是大多数用户拥有的手机,从 Froyo 起,尤其是那些来自姜饼的人)。我很担心,因为我只能使用一台测试设备,而且它是 HTC One X 手机,对于了解大多数普通设备如何渲染更复杂的布局,这显然是一个非常糟糕的选择。

我也很感激有关优化性能提示的任何指导...我从搜索社区和 Android 的开发人员资源中了解到,渲染某些布局对象比渲染其他对象更详尽,我应该尽可能选择 LinearLayout(而不是 RelativeLayout例如)。是否有任何确定的资源来比较 UI 选项的性能?我非常愿意为您节省时间和精力,并亲自去获取知识。

提前感谢您的时间和精力。干杯。

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

4

2 回答 2

2

+1 在这个问题上付出了巨大的努力。我个人的建议是你坚持你的第二个理论。将数据与视图分开——将输入的值存储在 SharedPreferences 或数据库之类的地方——并具有三种不同的布局(每个表单一个)。在创建 Activity 时,检查每个公共字段是否有以前存储的值,如果存在则填充该字段。尝试做类似第一个列表的事情,虽然可能很聪明,但并不理想。

于 2012-07-11T21:32:55.330 回答
0

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

这是这篇文章:

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

于 2012-07-11T21:31:26.393 回答