复合视图和视图控制器

时间:2010-05-28 23:15:06

标签: android architecture view structure composite

我对Android有点新手,我正在设计一个具有几个相当复杂的视图的应用程序。其中一个视图旨在涉及一个复杂的视图,显示与模型对象相关的信息并分成几个不同的视图;其导航意味着使用滑动效果(即,将一个手指滑过屏幕以从一个屏幕移动到下一个屏幕等)来实现。视图本身将用于为不同类型的模型对象托管多组视图,但具有在它们之间重用的一般结构。作为一个粗略的例子,视图可能会显示有关人(模型对象)的信息,显示几个细节视图:一般信息视图,显示爱好列表的视图,以及显示其他个人列表的视图与他们的社交网络相关联。同样的一般视图,当给出表示特定汽车的模型对象时,将给出几个不同的视图:具有细节的一般视图,包含该车辆的照片图像的视图,表示可从其购买的位置的视图,以及提供的视图相关汽车清单。 (注意:这不是涉及的真实数据,但代表了视图的一般意图)。子视图不会覆盖整个屏幕的空间,视图中的其他功能应该是可见的,并且能够与用户进行交互。

这里的想法是有一个可重用的通用视图结构,它将根据传递给视图的模型对象的类型管理一组动态生成的子视图。

我正在尝试确定利用Android框架的合适方法,以便在不违反框架完整性的情况下实现这一目标。基本上,我正在尝试确定如何将这个更大的视图组件化为可重用单元(即一般视图,特定于模型的子视图控制器和单个详细视图)。更具体地说,我正在尝试确定此视图是否最佳设计为多个自定义View类的组合或多个Activity类的组合。我已经看过几个自定义复合视图的例子,但它们通常用于组成简单的视图而不需要复杂的控制器,也不需要关注一般的Activity生命周期(即根据需要存储和检索与模型对象相关的数据)。另一方面,我看到的关于由活动组合构成的视图的唯一真实示例是TabActivity本身,并且不能以这种方式自定义。

有没有人对构建我的视图以实现我正在寻找的应用程序框架的适当方式有任何建议?看法?活动?还有别的吗?

任何指导都将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:0)

  

我正在努力确定   适当的方式来利用   Android框架以最佳方式   在不违反的情况下实现这一点   框架的完整性。

手机内存非常有限,CPU非常有限。您的普通Android设备具有十年历史的PC的能力,或更糟。请不要过度设计您的申请。

  

更具体地说,我正在尝试   确定此视图是否最佳   设计为几个的复合   自定义View类或复合   几个活动类。

我认为“以上都不是”。如果您的目标是制作“自定义视图类”以便分发给Android开发人员社区,这是一回事。但是,根据您的情况,只需构建您的Views - 不要将它们子类化。在Android的View系统中,我绝对是“构成优于继承”的心态。

恕我直言,活动是你的控制器(或者也许是主持人,一个MVP,是更好的架构类比),布局XML及其成分Views是视图层,你的数据库就是你的模型。

答案 1 :(得分:0)

我不确定我是否按照你在那里说的那一切,显示流程可能有帮助的图表,但是......

您通常一次只能看到一个活动。该活动负责呈现整个视图。我见过的唯一例外是弹出式警报样式窗口。根据我的经验,这些往往有点慢。通常,每次更改页面时都会有一个新活动。听起来在您的情况下,每次一般视图都会发生变化。

但是,您可以轻松地拥有一些在各种活动中重复使用的布局。布局是可组合的,因此您可以为您的细节布局提供一个布局,并将其包含在主布局中。