2012-02-03 52 views
0

我有一个普遍的问题,我已经遇到了几次。 当我们使用Surfaceview或GLsurfaceview建立一个视图时,我们可以得到以下类(在使用opengl的情况下):Android设计 - GLsurfaceview渲染类触发新活动

主活动类 - 具有渲染和GLsurfaceview。 GLsurfaceview类 - 将被设置为具有渲染类。 渲染类 - 将渲染绘制。

我的问题是,如果我们有一个事件发生在渲染类中,并且我们想要调用一个新的活动,我们该怎么做?

我总是通过将Main活动类传递给渲染类来解决它,然后如果我需要在主活动中发生的事情,我使用null调用MainActivity.Equels,并在那里实现我所需要的。 有没有更好或更优雅的做法呢?即使设计明智? 谢谢。

+0

我会采取观察员的方法。您可以将观察者传递给渲染器,并使用它与现在使用MainActivity几乎相同。但设计明智我觉得这更直观。 – harism 2012-02-03 14:38:12

回答

0

由于视图始终驻留在活动中,因此请使用可在活动内部设置的观察者模式(通常称为“java语言中的监听者”)(使用与其他视图相同的方法,如button.setOnClickListener )。

当然,如果您有多个线程运行您的视图,您应该使用处理程序来传递事件,以便它们只能在ui线程上运行。

因此,简而言之,解决方案是扩展GLsurfaceview并为其添加侦听器函数。