繁体   English   中英

片段:如何组成最终的,取决于屏幕尺寸的应用程序布局?

[英]Fragments: How do I compose the final, screen size dependent, layout of my application?

编辑:

问题最终是关于是否存在事实上的标准或Google关于如何实施以下问题的建议。


起源:

最近,我开始仔细研究Android中的Fragments概念 我确实对此有想法(或者至少我认为是这样),并且我也看到了对此的需求。 我很容易理解片段实现背后的技术。 但是,我似乎在理解上有问题,是如何组成应用程序的最终布局,以便它可以在大型平板电脑和小型智能手机上自动运行?

我有我的列表片段(例如MS Outlook-inbox-list)和详细视图片段(例如MS Outlook-email-preview)。 在平板电脑上,我自然希望在单个活动中显示这两个片段,但是在智能手机上,我希望在两个不同的活动中显示它们,而在单个活动中并不一定要同时容纳两个片段。

我该如何解决呢?

我是否必须在应用程序中实现三个活动(多合一平板电脑活动和两个单独的智能手机特定活动)? 但是,应用程序如何才能决定使用哪种实现(1或1 + 1)呢?

通常,我的活动扮演“控制器”的角色(根据MVC范例),但是,就上述问题而言,我将拥有三个控制器。 哪种构造将扮演根控制器的角色? 我是否应该编写一个“主活动”(不带UI),以编程方式尝试确定其驻留在哪个设备上,然后相应地调用合适的片段活动? 但是之后; 如何以一种定义明确的方式找出我的应用程序在哪种类型的设备(平板电脑/手机)上运行?

我想我可以发布一些代码,但是我认为这不会进一步澄清我的问题,因为它更多是体系结构选择问题,而不是特定于实现的问题。


干杯,
数据库

我是否必须在应用程序中实现三个活动(多合一平板电脑活动和两个单独的智能手机特定活动)?

不,可能只有两个。 一个负责加载ListFragment ,如果有空间,则负责加载细节片段。 另一个仅加载详细信息片段-如果用户点击列表条目并且第一个活动未显示详细信息片段,则第一个活动将由第一个活动启动。

通常,我的活动扮演“控制器”的角色(根据MVC范例),但是,就上述问题而言,我将拥有三个控制器。

恕我直言,带有片段的片段是您的控制者。 活动是业务流程层,用于确定哪些片段可见并处理跨片段事件。

但是之后; 如何以一种定义明确的方式找出我的应用程序在哪种类型的设备(平板电脑/手机)上运行?

在许多情况下,最简单的解决方案是通过布局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代码。

也没有什么可以阻止您使用ConfigurationDisplayMetrics尝试在Java代码中进行决策。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM