Android浮动视图跨活动

时间:2012-06-15 06:37:46

标签: android layout android-activity floating android-inflate

要求

我的应用程序包含 2个活动,例如A和B ,其导航类似于A->BB->A(在背面按下)。我的要求是

  • 我想在屏幕上浮动一个视图/布局,无论哪个 活动目前可见。我在应用上夸大了这个观点 启动(onCreate of activity A),它在屏幕上保持静态 从A-> B转换,当B在屏幕上时。
  • 所以自然这个视图应该只膨胀一次(当应用程序启动时, on aCreate of A)。

我发现了什么

我做了一些搜索,从我能找到的,有两种方法可以在android中重用布局

  • 使用 <include>

    它似乎是编写常用UI元素的xml代码的工具。每次在父布局中使用它时都会膨胀。

  • 使用 ViewStub

    我做了一些关于使用ViewStub的研究,它似乎也是一种在许多布局中重用代码段的方法。每次我们在布局中使用它时,它也需要充气,除非它在运行时使它们可见时才会膨胀。

我的要求的另一个暗示

对于熟悉iPhone开发的人,您可以将视图添加到UIWindow,无论哪个UIViewController当前处于活动状态,该视图都会保留在那里。我希望在我的应用程序中有确切的行为。

我的原始设置

我的目标是Android 2.1及以上版本。似乎Fragment可从API级别11(android 3.0)及更高版本获得。一种选择是使用android compatibility library,以便在旧版本中使用Fragment。我现在正在研究这个问题。但我也想知道是否有其他方法可以满足我的要求,而不是改变我的整个项目并使用片段。

我的应用程序中有大约30个奇怪的活动,我希望这个布局浮动在所有这些活动上。我刚刚制作了一个包含2个活动的测试用例,使问题简单易行。

1 个答案:

答案 0 :(得分:2)

解决方案1:FrameLayout

我认为你想要使用的是FrameLayout。 FrameLayout旨在阻止屏幕上的某个区域显示单个项目。子视图以堆栈形式绘制,最近添加的子项位于顶部。

http://developer.android.com/reference/android/widget/FrameLayout.html

然后在这里阅读有关您可以在活动中使用后退按钮在活动之间来回切换的后台堆栈:

http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

解决方案2:片段交易

不是编写两个单独的活动,而是使用两个碎片编写单个活动。以下是Fragments文档中的简介:

“片段必须始终嵌入到活动中,并且片段的生命周期直接受主机活动生命周期的影响。例如,当活动暂停时,其中的所有片段也都会被暂停,并且当活动被销毁时,所以但是,当一个活动正在运行时(它处于恢复的生命周期状态),你可以独立地操作每个碎片,例如添加或删除它们。当你执行这样的碎片事务时,你也可以添加它由活动管理的后栈 - 活动中的每个后栈条目都是发生的片段事务的记录。后栈允许用户通过按下来反转片段事务(向后导航)后退按钮。“