片段设计:通过在单个活动中显示/隐藏片段来适应多个屏幕布局?对问题一的答复 编辑 一
我试图了解如何使用片段来创建能够很好地适应多个屏幕和布局的应用程序。我研究了几个例子:
- Android 开发人员指南上的 Fragments 文档。
- 谷歌IO应用程序
- 片段样本来自ActionBar Sherlock。
所有这些都提倡多种方法:Activity
- 在大屏幕上,显示具有多个 s 的单个
Activity
Fragment
- 在较小的屏幕上,将 s 拆分为多个 s。
Fragment
Activity
我想到了另一种方法 - 一个:Activity
- 有一个单曲,里面有所有的s。
Activity
Fragment
- 根据屏幕大小和方向,显示/隐藏相应的 (s) (使用 / )。
Fragment
FragmentTransaction.show()
FragmentTransaction.hide()
要使用 Android 开发者指南使用的相同“新闻文章列表/文章内容”示例进行说明,请执行以下操作:
- 使活动同时包含 和 。
News
ArticleListFragment
ArticleReaderFragment
- 在选项卡上,始终显示两个片段。
- 在手机上,最初隐藏。从列表中选择文章时,将隐藏并显示 。
ArticleReaderFragment
ArticleListFragment
ArticleReaderFragment
有没有人使用过类似的方法?这种方法可能有什么实际的缺点吗?与多活动方式相比,它看起来更好/更糟吗?例如,片段不能在XML中显示/隐藏 - 必须用于此目的。FragmentTransaction
编辑1:假设场景的描述
想象一下,一个应用程序可以在屏幕上一次显示最多三个“窗格”。此外,这些是需要考虑的因素:
- 手机一次只能显示一个窗格(无论纵向/横向如何)
- 7 英寸平板电脑可以显示 2 个窗格,在纵向模式下垂直拆分,在横向模式下水平拆分。
- 一个10+英寸的平板电脑可以显示2个窗格,在纵向中垂直分割;3 个窗格在横向上水平拆分。
为简单起见,让我们将电视屏幕排除在讨论之外。
现在,将其转换为设计:
- 我们有三个片段:Frag1,Frag2和Frag3。
- 在最简单的情况下,所有三个片段都在一个活动中(我们称之为活动A)。这是10英寸的横向表壳。
- 另一个“简单”的情况是当每个片段都在自己的活动中时 - ActivityA包含Frag1;活性B包含Frag2,ActivityC包含Frag3。
到目前为止,我们还没有考虑与Android开发人员指南中提供的新闻阅读器示例显着不同的任何内容。唯一的主要区别是有三个片段而不是两个。
现在,7英寸的标签只能容纳2个碎片。这将如何工作?请注意,此处有两种可能的组合:
- 正在显示 Frag1 和 Frag2。
- 正在显示 Frag2 和 Frag3。
我只是无法解决这个问题。我是否在活动 A 中完成所有这些操作?我是否只是创建一个全新的 ActivityD?我需要创建多少个布局(我数了大约8个)?是不是太过分了?
我确实意识到我上面提出的单活动方法可能也不适合这种情况 - 因为显示/隐藏片段本身就不是微不足道的。
关于如何在不被布局和组合淹没的情况下处理这个问题的任何建议?