当前位置: 首页 > 知识库问答 >
问题:

如何编写具有深度导航功能的Android多窗格应用程序

童花蜂
2023-03-14

TL;DR:与Spotify iPad应用程序类似的具有深度导航功能的多窗格应用程序应该如何在Android上看起来和工作,以及如何实现这一点?

模型中,用户看到一个初始概览,然后从第一个列表中选择“项目#2”。一个新的活动开始了,向他展示了项目2的详细信息。在这里,他选择查看与项目#2相关的事物的列表。第三张图片中的新openend活动显示了这个列表,点击其中一个就会打开这个东西的详细信息。他可以根据自己的喜好深入到内容中去。

这与通常的Android活动配合得相当好。我正在努力将这款应用程序应用到平板电脑上,并在考虑如何最好地实现这一点。该计划是创建一个具有相同概念的多窗格布局。这与iPad Spotify应用程序的工作方式非常相似(看看他们在创建平板电脑特定布局后如何将其带到Android将会很有趣)。

在tablet布局中,每次单击项目或列表名称都会打开相应的子项目,作为一个新窗格,该窗格从右侧动画显示。与上面示例中相同的工作流如下所示:

我不确定如何最好地实现这个导航模式。像GMail这样的导航深度有限的多窗格应用程序可以用包含所有片段的静态视图组构建(LinearLayout也可以),深入到导航中会替换右侧下一个容器的内容并对其进行动画化(参见SO上的CommonWares实现)。

这表明自定义视图组将是一种可行的方法。如果它必须显示一个子页面(即“事物列表”),那么它将在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中做动画的方法。

欢迎反馈。我的雇主通常对我们开发的开源框架很满意,所以如果这是一个更广泛的兴趣所在,如果我能想出一个可重用的解决方案,我很乐意与大家分享。

共有1个答案

郭阳泽
2023-03-14

我们的应用程序也遇到了同样的问题。我们给自己的约束:

  • 窗格的动态数量
  • 每个窗格的大小可以不同
  • 在方向更改时,窗格内的片段必须正确保留。

根据这些限制,我们构建了一个新的布局,我们称之为PanesLayout。您可以在这里查看:

 类似资料:
  • 这一次,我需要你的帮助关于使用Android导航组件与深度链接。 我一直在关注这个文档,fragment和deeplink之间的连接工作正常。 这个问题是关于接收深度链接的活动的。在我的例子中,我设置了android: LaunchMode="单项任务" 通过这种配置,我注意到了一些奇怪的行为: WelcomeActivity每次单击deeplink都会收到两次onNewIntent呼叫。有时甚至

  • 导航窗格采用树状结构设计,可让你透过弹出式菜单快捷及方便地处理数据库和它们的对象。如果选项窗口中的“在导航窗格中的模式下显示对象”选项已勾选,所有数据库对象会显示在此窗格。若要连接到一个数据库或模式,简单地在此窗格中双击它。 在登录 Navicat Cloud 功能后,导航窗格会分为“Navicat Cloud”和“我的连接”两部分。 你可以点击树来对焦并输入搜索字符串来筛选树。若要只显示已打开的

  • 导航窗格采用树状结构设计,可让你透过弹出式菜单快捷及方便地处理数据库和它们的对象。如果偏好设置窗口中的“在导航窗格中的模式下显示对象”选项已勾选,所有数据库对象会显示在此窗格。若要连接到一个数据库或模式,简单地在此窗格中双击它。 在登录 Navicat Cloud 功能后,导航窗格会分为“Navicat Cloud”和“我的连接”两部分。 你可以在“搜索”文本框输入搜索字符串来筛选树。若要只显示已

  • 导航窗格采用树状结构设计,可让你透过弹出式菜单快捷及方便地处理数据库和它们的对象。如果选项窗口中的“在导航窗格中的模式下显示对象”选项已勾选,所有数据库对象会显示在此窗格。若要连接到一个数据库或模式,简单地在此窗格中双击它。 在登录 Navicat Cloud 功能后,导航窗格会分为“Navicat Cloud”和“我的连接”两部分。 你可以点击树来对焦并输入搜索字符串来筛选树。若要只显示已打开的

  • 问题内容: 我想用Python编写一个Android应用,将.py文件转换为APK。 问题答案: 要点:首先,APK不仅仅是压缩字节码(例如,应用程序清单,资源等),实际上还有很多其他功能,因此谈论将Python文件“转换”为APK并没有多大意义。 。 其次,我不鼓励这样做。我强烈建议改用Xamarin Forms,Cordova,Java或Xamarin.Android。Xamarin Form

  • 我有一个带有底部导航和框架布局的主要活动。BottomNavigation可以导航到三个不同的片段。但当我按下后退按钮时,我的底部导航上的选中项并没有选中正确的菜单项。我该如何解决这个问题?这已经困扰了我好几天了