2012-02-03 24 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併爲其添加偵聽器函數。