Android 的 Instagram 是如何构建的?

How is Android's Instagram structured?

我正在构建一个 android 应用程序,虽然它具有完全不同的功能,但与 Instagram 非常相似 UI。有一个带有按钮的底部栏,用于查看时间轴、posting(我的应用程序的内容)、检查通知和查看您自己的个人资料。

我是电气工程专业的四年级学生,但我对 Android 开发还比较陌生。为了更快地自学更多东西,我继续使用我的应用程序的许多功能(例如查看 posts、个人资料、时间线、朋友等)他们自己的活动和他们自己的底部栏(现在只是按钮)。在这样做的过程中,我学到了很多关于开发的知识,并构建了一个应用程序,就我目前构建的内容而言,它可以正常运行,但不是太快或太漂亮。我意识到这可能不是最佳做法,我想问大家,您认为如何简单解释如何实现类似 Instagram 的 UI 是什么?当我说类似 Instagram 时,我的主要意思是:它包含一个底栏;用户所在的应用程序 "preserves",比如如果我正在从时间线上查看朋友,然后按下查看个人资料按钮,然后再次按下时间线,那么我仍然会看到我的朋友。

我已尝试尽可能多地阅读以解决重新设计问题,但我对执行类似 this.Should 的标准仍然有点模糊 我尝试 TabHost(已弃用)?每个按钮是否应该代表一个具有可交换视图的 activity(例如,在 IG 中,我在我的时间轴上单击一个 post,它会交换到图片 post 视图)?我是否应该将 activity 与每个按钮相关联并根据用户导航的位置交换片段?我意识到这是一个开放式问题,我希望 Stack Overflow 不会太含糊,但我已经考虑了很多,我会感谢一些更有经验的开发人员的反馈!谢谢!

您可以使用支持设计库中包含的新 TabLayout 以及视图分页器在不同片段之间切换。

You can read about the TabLayout as well as some of the other things packed in to the design library here.

Reference for TabLayout

编辑:在评论中我提到了一个类比,让你思考如何使用片段与活动。为了不传播错误信息,我要反驳我所说的话。您完全可以使用单独的活动并使用选项卡在它们之间切换。所以,正确答案是介于两者之间。 MainActivity 仍将保存 tablayout 并管理选项卡侦听器并在选项卡之间切换,但您可以设置 tablayout 的内容以保存新的内容 activity。但是你也可以用片段来做,而且可能更有效。

这实际上取决于您应用的结构及其深度。如果您只有 4 个片段并且信息以一个工作流程为中心,那么您可能会选择只使用一个 activity 和四个片段。如何管理它实际上取决于开发人员。

自从 fragments 出来后,一种理念是如果你正在使用的 space 可以重新利用,也就是说,如果你在同一个盒子里工作(标签栏上方的区域)例如 instagram 应用程序),使用片段。 (引用自 here)。相机选项卡是使用 activity 的一个很好的例子。相机功能代表了一个与浏览 Instagram 应用程序的提要、图片和配置文件时所看到的完全不同的工作流程。所以提要可能是一个片段,用户配置文件是另一个片段,但它们都由同一个 activity 管理并使用相同的内容框架。

我上面提供的参考资料中还有其他答案,应该有助于您进一步理解。