16

如何处理Android活动与片段中的UI转换有任何模式?我目前正在研究一个在Landscape中最多有3列的UI。 我希望用户界面从屏幕上的1列开始,然后选择第二列中的某些内容,然后点击平板电脑和手机中第二次淡出的内容,然后淡出第一列手机上的列。 我想知道什么时候我应该做一个活动转换,以及何时应该使用带有出现的视图的碎片。据我已阅读片段可以移动到其他活动,所以我的选择要么执行静态列布局的活动,然后过渡采取片段与他们或有一个活动与所有3列,并有活动管理出现的片段。两种方法都可以工作,但我从两个解决方案的许多角度对利弊感兴趣。使用活动转换与动态片段的模式

类似的还有什么,我问两个问题,但不太回答我

回答

12

碎片可能看起来像更多的代码(因为你在一个片段中放置一个视图,在一个Activity中放置一个片段,而不仅仅是一个Activity中的一个视图),但是它们很棒头痛在这种情况下 - 肯定会跟Fragments一起。他们甚至为你处理过渡。

我们有一些名为“Honeycomb Gallery”的示例代码,您可以看看here,它具有两列加操作栏布局以及显示/隐藏最左列的功能。这应该让你在确定如何为多个片段进行布局并显示/隐藏它们方面有一个良好的开端。仅供参考,在活动中使用多个片段(而不是多个活动)的一个重要折衷是片段不直接响应意图 - 例如,如果您有一个笔记应用程序,其中“查看注释”页面是一个活动,并且您对其进行了更改,以便在主活动中存在“查看注释”片段,那么您必须对其进行设置,以便主活动收到注释ID和注释操作(创建,查看,编辑,等等),而不是仅仅让“查看笔记”活动在意图中收到笔记ID。然后主Activity将需要相应地在页面上设置片段。这并不是一个大问题,但如果通过Intent对应用程序的各个部分进行外部访问非常重要,那么将应用程序分解为几个活动以及使用片段来表示各个组件可能会更容易。

+0

感谢亚历山大这是一个很好的指针,我实际上已经忘记了那个示例应用程序。对我来说,关于Activites vs Fragments以及更多关于何时使用一个包含静态片段的Activity以及何时动态加载片段的内容更少。 我认为一个好的模式大纲是Intent机制。所以如果你想让屏幕通过一个Intent被寻址,那么把它放在它自己的Activity中。 你能想到其他模式吗?冰淇淋三明治核心应用程序是否有良好的模式,可以用来研究如何最好地使用Fragments? – AGrunewald

+1

在最近的Honeycomb Android开发实验室中,我们有一位开发人员说,他们会通过“gmail会做什么”。虽然在您的应用中运行的内容总是最重要的,但它们提供了一个好处,即gmail应用程序(包括平板电脑和手机)对于片段的良好使用以及更新操作栏项目和可见片段基于上下文(即,操作栏项目根据您是阅读电子邮件,编写一个电子邮件还是浏览电子邮件列表而更改)。在Honeycomb,Youtube和Contacts中也很棒。每ICS,我不能谈论细节:) –

+0

感谢伟大的更新亚历山大。我期待ICS Open Source Drop能够查看代码。我知道许多Google Apps未包括在内,但我相信在开源树中仍然有足够的核心应用程序来学习很多东西。 – AGrunewald

1

基于The Android 3.0 Fragments API页面上,活动是独立而一个片段可以作为一个迷你活动,它必须被托管在一个实际的活动中。

它继续说,Fragment API的推出为Android开发人员提供了解决开发人员碰到的很多痛苦点的机会,因此在Android 3.0中,Fragment的效用远远超出了为不同屏幕调整:

我认为对应用程序使用单个活动不一定是错误的决定,只是风格问题。这是你应该根据你想要完成的事情做出的决定。

然而,引入碎片被认为是解决现实世界的问题。基于这一点,我会建议您编写一些“概念验证”代码并评估结果。在这个时候,这可能是唯一的现实世界中的测试,将此事

+0

感谢诺亚评论,我同意你的意见,不幸的是,它不能回答我的问题,因为我正在寻找模式。但似乎我们仍然在用碎片开创新局面。 – AGrunewald

1

全屏

使用片段使用活动

的部分是或者否屏幕(而不是服务)在我的主要应用,我想在应用程序的多个部分中保留水平滚动视图中的屏幕选项卡。部分包括 新闻,照片,视频,时间表等所有单用户可对焦任务。

容纳它的主要应用程序是一个应用程序,并且选项卡只是一个调用片段管理器的视图。

但是,我使用活动来处理应用程序中更复杂的用户活动。例如。如果有人播放视频,请查看项目详细信息页面和照片库/幻灯片部分,因为它们都是全屏组件。

当过渡到全屏时,不需要显示/隐藏片段,因为活动堆栈可以快速轻松地处理您想要的任何操作,并且保持代码最小化和干净。

所以我有活动 - >房屋碎片 - >启动全屏活动的特殊命令。

+0

感谢您的答案HaMMeReD我已经知道这一点了:-)问题更多的是针对何时在活动之间切换以更改屏幕以及何时更改动态片段。 – AGrunewald

+0

每当它是全屏组件时使用活动。您可以在多个活动中重复使用片段。 – HaMMeReD

+0

实际上,在手机上制作全屏组件的原因是平板电脑上的部分屏幕组件,因此将“全屏”位置于碎片而非活动中仍然有意义。 –