TL;DR: 具有类似于 Spotify iPad 应用程序的深度导航的多窗格应用程序在 Android 上的外观和工作方式如何,以及如何实现这一点?
长版: 我正在开发一个应用程序,用户可以在其中看到项目列表,然后可以更深入地研究这些项目。这些项目详细信息页面可以再次打开相关项目的列表,这些项目又具有详细信息页面等。作为一个电话应用程序,这些将是单独的活动,它们可能看起来并相互链接,如下所示:
在模型中,用户看到初始概览,然后从第一个列表中选择“项目#2”。一个新的活动打开,向他显示项目 #2 的详细信息。在这里,他选择查看与项目#2 相关的事物列表。第三张图中新打开的 Activity 显示了这个列表,点击一个打开这个东西的详细信息。他可以随心所欲地浏览内容。
这适用于通常的 Android 活动。我正在努力将应用程序带到平板电脑上,并正在考虑如何最好地实现这一点。该计划是创建具有相同概念的多窗格布局。它与 iPad Spotify 应用程序的工作方式非常相似(一旦他们创建了特定于平板电脑的布局,看看他们如何将其带到 Android 上将会很有趣)。
在平板电脑布局中,每次单击项目或列表名称都会将相应的子项目打开为一个新的窗格,该窗格从右侧进入动画。与上述示例相同的工作流程如下所示:
我不确定如何最好地实现这种导航模式。导航深度有限的多窗格应用程序(如 GMail)可以使用包含所有片段的静态 ViewGroup(LinearLayout 可以)构建,并且深入导航会替换右侧下一个容器的内容并为此设置动画(参见在 SO 上的 CommonWares 实现。
这表明自定义 ViewGroup 将是可行的方法。如果它必须显示一个子页面(即“事物列表”),那么它会在 ViewGroup 中创建一个新的子页面,该子页面的宽度是片段屏幕的一半,然后滚动可见区域,以便刚刚与之交互的窗格并且新的孩子是可见的。要将其正确链接到 FragmentTransaction,以便后堆栈正常工作,我猜它会是这样的:
View newPane = container.addChild();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(newPane, new ListOfThingsFragment(2));
ft.remove(paneOnRight, fragmentOnRight);
ft.commit();
container.animateToRight();
我看不到在 FragmentTransaction 中制作动画的方法。
欢迎反馈。我的雇主普遍赞成我们开发的开源框架,所以如果这是更广泛的利益,如果我能想出一个可重用的解决方案,我很乐意分享。