2014-03-27 31 views
1

我目前正在製作遊戲,遊戲有一個開始屏幕和主遊戲屏幕。什麼是在普通視圖和GLsurface視圖之間切換的最佳方式,Android

我的問題是在兩個視圖之間切換的最佳方式是什麼。

開始屏幕由兩個按鈕組成,其中一個是「開始遊戲」,當單擊GLsurface視圖時,該按鈕將被創建。

如果我在開始時創建GLsurface視圖並在此處綁定渲染器,則在啓動屏幕頂部顯示GL表面視圖中的任何內容。

我以爲我可以創建一個默認啓動屏幕的viewflipper,然後在開始按鈕的onclick方法內創建glsurface視圖,但是這似乎不喜歡在其中有GLsurface視圖。

viewFlipper支持Glsurface視圖還是有更好的方法來解決這個問題。

謝謝。

+0

Android Breakout(https://code.google.com/p/android-breakout/)使用兩項活動來完成此操作,儘管聽起來像是您想要更動畫的東西。請記住,GLSurfaceView有兩個組件,透明視圖部件和單獨合成的Surface,因此對GLSurfaceView的視圖進行動畫處理可能不會產生您想要的效果。 – fadden

+0

@fadden謝謝你的建議,我相信還有其他方法可以做到這一點,但你的建議工作得很好。寫一個更詳細的答案,我會接受它。另外需要注意的是,如果你在這兩個活動之間不斷前進和後退,可以創建超過1個實例。我需要檢查我沒有這樣做。 – Rob85

+0

完成。還添加了關於TextureView的註釋。 – fadden

回答

2

最簡單的方法是使用兩個活動,並在它們之間切換。

這裏的問題是,ViewFlipper只能影響GLSurfaceView的「查看」部分,這只是一個透明的洞。 GL渲染髮生的表面是分開合成的,位於具有視圖內容的圖層後面,因此它是cannot be animated

在GL遊戲中使用兩項活動的示例可以在Android Breakout中找到,它使用一項活動進行配置和「開始」,另一項用於遊戲本身。

如果你真的想要ViewFlipper動畫,你可以渲染成一個TextureView,但你的應用程序將不得不處理一些GLSurfaceView爲你做的事情。 TextureView的效率也低於SurfaceView

相關問題