Android - 显示所有活动的持久视图

时间:2011-03-04 14:45:04

标签: android

我想重新创建类似于Swing GlassPane的功能,以便在用户正常使用“下方”应用时显示动画。我不能简单地创建一个单独的布局并将其附加到每个活动,因为切换活动时动画状态将丢失。 有没有办法保持对Android应用程序的所有活动的持久视图?

感谢。

2 个答案:

答案 0 :(得分:1)

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

但您可以将动画状态保存到数据库或sharedPreferences中,然后在新活动中启动它。

您还可以使用Spinner或其他控件而不是单独的活动。然后你可以有一个持久的观点。

答案 1 :(得分: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());
}
希望你了解我。

我稍后会写一个例子