Android - 在所有活动上显示一个持久视图

6
我希望能够创建类似于Swing GlassPane 的功能,以便在用户正常使用应用程序的同时显示动画。我不能简单地创建一个单独的布局并将其附加到每个活动上,因为在切换活动时动画状态会丢失。 是否有一种方法可以在 Android 应用程序的所有活动上保持持久视图? 谢谢。
2个回答

1

不是这样的。每个 Activity 都在自己的线程中运行,并且按设计应该可以独立运行。

但你可以将动画状态持久化到数据库或 shared preferences 中,在新的 Activity 中重新启动它。

另外,你也可以使用 Spinner 或其他控件来代替独立的 Activity。这样就可以有一个持久性的视图了。


是的,我考虑过使用对话框或类似的东西,但它总是需要附加到特定的活动上,所以在切换到另一个活动时它会被隐藏。 - janin
我不知道这是否属实 - 请看Zedge应用程序。我不确定他们是如何做到的 - 但是他们显示了一个持久的导航,当在活动之间进行动画切换时不会被替换。如果我弄清楚了它是如何完成的,我会在这里发布。编辑:他们的新应用程序似乎不再这样做了;相信我的话 ;) - andrej_k
你确定他们是在不同的活动之间进行动画吗?在许多情况下,旋转器可能看起来像使用了多个活动。 - Chris

0

为什么不考虑使用TabActivity呢?

嗨!我以前用过TabActivity,但从未使用过单个活动,总是使用许多活动启动它们的窗口并将其设置为我的TabActivity窗口的装饰视图...我没有测试下面的代码,因为这只是一个想法,但也许更晚些时候(当我回家时)我会写一个例子...

所以,我的想法是... TabActivity由TabWidget和FrameLayout组成,其中包含了活动的窗口。

TabWidget可以是任何视图,因此您可以在此处放置动画视图。

最困难的问题是,如果您从TabActivity的子级启动活动,则新活动将位于TabActivity的顶部。为了覆盖此行为,TabActivity必须知道嵌套活动何时想要启动另一个活动。当发生这种情况时,TabActivity必须清除其装饰视图(旧窗口活动)并放置新窗口的装饰视图。就像这样:

在子活动中,当我们单击按钮时启动新活动: ...单击监听器...

((MyTabActivity)getParent()).createNewActivity("NewActivity", NewActivity.class);

现在,我们要让TabActivity启动一个新的活动,获取新活动的装饰视图,并将该视图放置在TabActivity的装饰视图中...因此,createNewActivity将执行类似于以下内容的操作:

public void createNewActivity(String activityId, Class<?> class1) {
    Intent intent = new Intent( getIntent().getAction() ).setClass(MyTabActivity.this, class1);
    Window wList = getLocalActivityManager().startActivity(activityId, intent);
    getWindow().setContentView(wList.getDecorView());
}

希望你能听懂我说的话。
稍后我会给你写一个例子。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接