【问题标题】:Switching from iOS to Android dev - should I be attempting to extend an Activity/ListActivity?从 iOS 切换到 Android 开发 - 我应该尝试扩展 Activity/ListActivity 吗?
【发布时间】:2012-04-16 16:01:58
【问题描述】:

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

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

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

我几乎可以肯定我以错误的方式解决了这个问题,并且有成千上万的人不得不处理以前重新使用某些视图配置的问题,因此感谢所有帮助。

【问题讨论】:

  • 如果您扩展 Activity,您可以拥有通用功能,例如动画和来自不同活动的动画。如果您想要常见的“主题”,请使用主题!这被设置为“样式”并在您的 AndroidManifest 文件中设置。 5 分钟后就是 Android,我错过了很多,

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


【解决方案1】:

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

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

如果您的需求更具体,请随时发表评论,以便我尝试建议如何进行。

【讨论】:

  • 我认为你的回答足够笼统,足以涵盖我所有的担忧......我想我需要使用 ActionBarSherlock + 一个基本活动类,在清单中的应用程序级别应用一个基本主题文件,并查看我一直完全避免的 Fragments API,因为它太复杂了......
【解决方案2】:

您说的是哪种视图配置?听起来您确实可能使事情变得过于复杂,但也许不是-取决于您要实现的目标。您是否查看过 Android 开发者网站 here 上有关 Views 的各种教程?这可能有助于回答您的一些问题。

【讨论】:

    【解决方案3】:
    1. 我建议不要以编程方式设置布局。您几乎可以使用 xml 以声明方式执行任何操作(动画;平板电脑的特殊布局、纵向、横向不同的 dpi 等)阅读 docs 应该会为您节省很多麻烦:-)
    2. 您可以通过将布局 xml 文件包含在 include 标记中来重复使用它们。 Here 很好解释
    3. 如果您有不同活动的相同代码,通常您将活动子类化。如果两个活动有共同的观点,请参阅 2。)
    4. 另一方面,样式和主题用于更改特定视图的外观(样式),活动或应用程序(主题)中的所有视图。 Docs-

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-23
      • 2012-08-11
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      相关资源
      最近更新 更多