从iOS切换到Android开发 - 我应该尝试扩展Activity / ListActivity吗?

时间:2012-04-16 16:01:59

标签: android android-layout inheritance android-activity android-view

我正在从iOS切换到Android,我想知道如何在Android中重新使用您的视图配置。在iOS中,我通常会创建一个BaseViewController来处理我的应用程序将如何“主题化”并配置一些我希望随处可用(或使用条件)的常见视图组件。然后,我会将BaseViewController子类化,以满足我的视图特定需求。这可能不是处理这类事情的理想方式,但它对我有用。

在Android中,我不确定我应该做什么。

似乎有更多可用于视图配置的选项;我知道您可以像iOS一样,通过从XML布局文件中扩展或通过以编程方式创建视图来创建视图。我也知道,既然Java提供了继承,你可以扩展Activity类。所以我看到了一些路径:您可以创建一个base_view.xml文件并将其包含在将来的布局文件中,但我认为这有点像某种原因的hacky。您还可以创建该base_view.xml文件,在不可实现的BaseActivity类中使用它,并将BaseActivity子类化为可实现的特定于活动的版本。或者,您可以在BaseActivity和子类中以编程方式执行此操作。我也模糊地意识到Android中的“主题”选项可能会简化其中一些。

我几乎可以肯定我会以错误的方式解决这个问题,并且有成千上万的人之前不得不处理重新使用某些视图配置,所以所有的帮助都表示赞赏。

3 个答案:

答案 0 :(得分:1)

您可能想要重复使用许多不同的东西。你并没有像我们想的那样具体。例如,这些只是您可能想要重复使用的一些内容:

  • 样式和主题:如果您只关注应用的外观,那么您只需创建一个主题并应用于整个应用。您可以通过在android:theme文件的应用程序标记中配置AndroidManifest.xml属性来执行此操作。
  • 基本布局:您可能已经知道,Android应用程序通常使用actionbar ui模式。对于这类事情,您可以创建一个BaseActvitiy来处理和配置操作栏(查看iosched应​​用程序源代码)。但是,我建议在这些情况下坚持使用像ActionBarSherlock这样的库,这样可以使事情变得更容易和更好。
  • 行为:例如,您希望在所有活动中都有一个搜索按钮,而它所做的就是调用startSearch方法。在这些情况下,鼓励继承。
  • UI组件:例如,您希望重用某些对话框。在这些情况下,以及大多数OOP案例中,鼓励构成而不是继承。您将了解到,对于大多数情况,您需要传递活动参考(作为Context)。对于这种情况,一般情况下,我强烈建议您坚持使用支持库,以便可以使用Fragments API;我知道一开始可能有点难以使用,但绝对值得付出努力。

如果您的需求更具体,请不要犹豫,以便我可以尝试建议如何继续。

答案 1 :(得分:0)

您在谈论什么样的视图配置?听起来你可能过于复杂,但也许不是 - 取决于你想要实现的目标。您是否在Android开发者网站here上查看了有关视图的各种教程?这可能有助于回答您的一些问题。

答案 2 :(得分:0)

  1. 我建议不要以编程方式设置布局。你可以用xml(动画;平板电脑的特殊布局,纵向,横向不同的dpi等)做几乎所有的事情。阅读docs应该会为你节省很多麻烦:-)
  2. 您可以通过使用include标记包含它们来重用布局xml文件。 Here是一个很好的解释
  3. 如果您的代码对于不同的活动具有相同的代码,通常您是子类。如果两个活动共享共同的观点,请参阅2。)
  4. 另一方面,样式和主题用于改变活动或应用程序(主题)中特定视图(样式)的所有视图的外观。 Docs -
  5. 我希望这会有所帮助。