如何使用类似于Spotify iPad应用程序的深层导航的多窗格应用程序在 Android上看起来和工作,以及如何实现?
长版本:
我正在开发一个应用程序,用户可以看到项目列表,然后深入了解这些项目.这些项目详细页面可以再次打开相关项目的列表,这些列表又包含详细页面等.作为一个手机应用程序,这些将是单独的活动,可能看起来和链接到这样:
在模型中,用户看到初始概览,然后从第一个列表中选择“项目#2”.一个新的活动开了,向他展示了项目#2的细节.在这里,他选择查看与物品#2相关的物品清单.第三张照片中的新开启活动显示此列表,然后单击此列表打开此事件的详细信息.他可以像他喜欢的那样深入内容.
这与通常的Android活动相当好.我正在将应用程序引入平板电脑,正在考虑如何最好地实现这一点.该计划是创建具有相同概念的多窗格布局.它非常类似于iPad Spotify应用程序的工作原理(有兴趣的是,一旦他们创建平板电脑特定的布局,它们将如何将其带入Android).
在平板电脑布局中,每次点击项目或列表名称将打开相应的子项目作为从右侧激活的新窗格.与上述示例中相同的工作流程将如下所示:
我不确定如何最好地实现这种导航模式.具有有限导航深度(如GMail)的多窗格应用程序可以使用包含所有片段的静态ViewGroup(LinearLayout可以)构建,并且更深入导航将将下一个容器的内容替换为右侧的动画(参见CommonWares implementation of this on SO).
这表明一个自定义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中执行动画的方法.
反馈欢迎.对于我们开发的开源框架,我的雇主通常是有利的,所以如果这是更广泛的兴趣,如果我想出一个可重用的解决方案,我很乐意分享.
解决方法
>动态数量的窗格
>每个窗格的大小可以不同
>窗格内的碎片必须正确保留在方向更改中.
鉴于这些限制,我们构建了一个我们称之为PanesLayout的新布局.你可以在这里查看: