如何编写具有非常深入导航的Android多窗格应用程序

TL; DR:
如何使用类似于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的新布局.你可以在这里查看:

https://github.com/cricklet/Android-PanesLibrary

它基本上允许您轻松添加任意数量的动态大小的窗格,并将碎片附加到这些窗格.希望你觉得它有用!

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...