2010-10-21 121 views
2

我正在开发我的第一款Android游戏,而且我在使用户界面非常流畅的时候遇到了一些困难。我花了几个小时搜索一下,但没有运气,我可能只是在寻找错误的东西。Android Activity.setContentView(),平滑过渡?

我有两个不同的XML布局资源,其中每个布局只包含一个SurfaceView子类。当我调用activity.setContentView(R.layout.second_layout)从第一个布局转换到第二个布局时,会有一段显着的时间段,在这两个时间段之间会显示一个黑色屏幕(顶部有一个小白条)观点。

我试过了各种各样的东西,如;在运行时手动构建第二个视图(即不使用布局XML文件),在activity.setContentView(R.layout.second_layout)之后调用activity.overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out)和试图在视图加载之前渲染到画布(原来画布不可用)。

我没有看到其他游戏(或应用程序)有这个问题,所以我认为有一个相当简单的解决方案。

如果您需要关于我的特殊情况的更多信息以帮助解决,请告诉我缺少哪些信息。任何帮助将主要赞赏。

+0

环顾四周我开始怀疑我是否应该为第二个布局创建一个单独的Activity。最初我不想创造一个,因为我没有觉得我需要一个,因为游戏的设置方式以及正在进行的转换。 也许我还没有考虑Android的心态。将使用单独的活动解决我的困境? – 2010-10-21 18:26:19

回答

1

更新:下面我的答案写于2010年。从那时起Fragments已经成为一种常态,特别是由于片段嵌套成为可能,并支持库允许在向后兼容的方式使用此功能。因此,您可以使用一个Activity并在该Activity的视图层次结构中使用推送和弹出片段,而不是转换为新的Activity来执行新的“用户任务”。动画也可以作为片段交易的一部分来执行(例如Fragment transaction animation: slide in and slide out)。

发布这个问题后不久,这就变得非常明显了,但是我认为我应该回到这里并且向其他人说清楚。 Android开发活动是积极的方式。不要因为一个单独的活动的过渡可能看起来太小,这个事实使得Android的基础是built around the idea of an Activity