编辑:
问题最终在于,对于如何实施以下问题,是否有任何事实上的标准或谷歌建议。
起源:
我最近开始仔细观察Fragments concept in Android。我确实了解它(或者至少我认为我知道),而且我也看到了它的必要性。我不难理解实现我的片段背后的技术细节。但是,我似乎很难理解的是,如何编写我的应用程序的最终布局,以便它能够自动工作在大型平板电脑和小型智能手机上?
我有我的列表片段(例如MS收件箱列表)和我的详细视图片段(例如MS电子邮件预览)。在平板电脑上,我很自然地想在一个活动中显示这两个片段,但在智能手机上,我想在两个不同的活动中展示它们,而在单个活动上不一定有这两个片段的空间。
,我该怎么解决这个问题?
我是否必须在我的应用程序中实现三个活动(全合一平板电脑活动和两个单独的、智能手机特定的活动)?但是,应用程序如何决定使用哪个实现(1或1+1)?
通常,我的活动扮演‘控制器’的角色(根据MVC范式),但是,对于上面的问题,我将有三个控制器。哪个构造将扮演根控制器的角色?应该编写一个“主活动”(没有UI),这个程序处理程序试图决定它在哪个设备上生存,然后相应地调用合适的片段活动?,但是,然后,我如何以明确的方式找到我的应用程序正在运行的设备(平板/手机)的类型?
我想我可以发布一些代码,但我不认为它会进一步澄清我的问题,因为这更多地是一个架构选择的问题,而不是具体实现的问题。
干杯,
dbm
发布于 2011-12-17 13:12:26
我是否必须在我的应用程序中实现三个活动(全合一平板电脑活动和两个单独的、智能手机特定的活动)?
不可能只有两个人。一个负责加载ListFragment,如果有空间,则负责细节片段。另一个只加载详细片段--如果用户点击列表条目而第一个活动没有显示详细片段,该活动将由第一个活动启动。
通常是我的活动扮演‘控制器’的角色(根据MVC模式),但是,关于上面的问题,我将有三个控制器。
IMHO,对于碎片,碎片是您的控制器。活动是一个编排层,确定哪些片段是可见的,并处理跨片段事件。
但是,接下来,我如何--以一种定义明确的方式--找到我的应用程序运行在哪种设备(平板电脑/手机)上呢?
在许多情况下,最简单的解决方案是通过布局XML资源来驱动它。
例如,在我的上述建议中,第一个活动可能有两个不同的版本,比如说,main.xml。一个(res/layout/main.xml)只加载ListFragment。另一个(例如,res/layout-large-land/main.xml)加载ListFragment和细节片段,或者加载动态细节片段的ListFragment和FrameLayout容器(您将通过FragmentTransaction定义一个)。该活动本身通过确定第二个片段(或其FrameLayout“槽”)是否存在于充气的main.xml中来确定它是管理两个片段还是一个片段。这样,如果将来更改布局规则(例如res/layout-sw600dp-land/main.xml),则不需要更改您的Java代码。
没有什么可以阻止您使用Configuration和DisplayMetrics来尝试在Java代码中做出决策。
https://stackoverflow.com/questions/8543903
复制相似问题