哪一个更好? - 在Android中运行时或设计时创建按钮

时间:2011-08-05 11:15:45

标签: android memory layout button size

我需要为显示字母表这样的简单任务创建大约26个按钮。我可以通过使用布局设计来做到这一点。

如果我在运行时创建此按钮,它会提供更多性能(考虑内存,速度,apk大小!)?

重要要求:

  • 此布局将由4种不同的活动使用。
  • 我需要一次向用户显示26个按钮。
  • 这些按钮可能包含背景 图像。

编辑:此布局类似于其他四个活动的弹出窗口。用户可以按此布局中的任何字母表。一旦字母表被选中,布局将被关闭

5 个答案:

答案 0 :(得分:2)

由于资源中的所有内容都是静态的,因此可以将所有内容都放在xml文件中。

仍然可以说,解析项目xml layout files的'概念'会给创建视图的过程带来开销。

我会选择在xml中定义的 精心设计的布局

答案 1 :(得分:1)

强烈建议使用XML布局以获得最佳实践和更易理解的代码。此外,如果您担心大视图的性能,请使用相对布局,这些布局比其他类型的布局(如LinearLayouts)更快。

显示XML是最佳做法: http://developer.android.com/guide/topics/ui/declaring-layout.html

同样为了提高性能,将Buttons保持为Activity成员变量,然后只需要从资源加载一次。

希望有所帮助, 马克

答案 2 :(得分:1)

让人惊讶。虽然XML是最佳实践答案,但任何中的26个会为某些动态运行时创建或至少两者的组合而尖叫。你不会在处理时间或apk大小方面看到太多差异 - 它将归结为代码维护。

例如,考虑当您想要为每个字母按钮更改或添加新属性(例如填充)时会发生什么。您是否希望手动更改所有这些XML元素,或者考虑使用聪明的正则表达式来正确查找/替换?

我会使用样式组合,<include>语句和运行时修改来获得全面,可维护的解决方案。首先创建一个按钮,用于表示您希望所有按钮的外观。将“LetterButton”样式解压缩到style.xml,然后使用按钮上的android:style="@style/LetterButton"属性。这将允许您在单个文件中更改样式,并使其影响所有字母按钮。

接下来,将按钮本身解压缩到<include>文件中。您可以通过右键单击按钮的GUI版本并选择“Extract include ...”来完成此操作。然后根据需要安排<include> - 按钮,也许在<TableLayout>中。请确保为每个人提供唯一ID,例如@+id/letter_button_0_25。所有这些按钮的text属性可以是任何内容,您可以稍后动态设置它们。

最后,在你的onCreate中,定义一个形式为{R.id.letter_button_0,...}的整数数组,以及一个形式为{“A”,...}的字符串数组,并迭代那些,做一个button = findbyId(int),button.setText(String)在每个按钮上放一个字母。

这可能看起来更像是这样,但你正在做所有繁重的工作来创建一个智能用户界面,所以你可以在一个地方(样式或包含)更改代码,所有按钮将是更新。

答案 3 :(得分:0)

您应该在xml文件中创建它,并根据需要使其可见和不可见。

答案 4 :(得分:0)

您可以创建一个包含静态资源的布局。有动态文字内容&amp;对于动态backgrounds.you可以使用off&amp;的按钮属性。可见其中。