2013-07-12 45 views
0

我正在構建一款Android遊戲,這更多的是最佳實踐和性能問題。Android遊戲特別是位圖

對於我用戶與之交互的位圖,我應該將它們放在一個imageView中,併爲它們中的每一個單獨設置一個onTouchListener,或者只是將它們繪製到畫布上並使用自定義視圖的onTouch方法獲取觸摸的x和y並查看它是否落在任何位圖的範圍內以檢測觸摸。

我的自定義視圖佔據了整個屏幕,我不知道如何甚至可以使用畫布在屏幕上繪製圖像視圖,這就是爲什麼我現在只使用onTouch方法。

感謝您的任何見解。

回答

0

根據你的位圖渲染的動態性,你應該選擇GLSurfaceView或SurfaceView,因爲這只是一個簡單的位圖,我建議你使用SurfaceView作爲「渲染器」,你可以從中獲取畫布如果您的表面視圖與屏幕尺寸匹配,則可以在整個屏幕上進行繪製。

TouchListener應該完全獨立處理其自己的偵聽器,以促進封裝和重用未來應用程序的代碼。我已經發現這對我上一次開發的表面視圖作爲渲染器並創建對象來說是安靜的,這些對象將畫布作爲參數並將它們自己繪製成它,唯一要做的就是位圖資源管理,但如果你小心地發佈並在適當的時候創建它們,你應該沒有問題...

關注!

+0

感謝您的回覆。我確實使用了SurfaceView來渲染圖形。它佔用了整個屏幕,我使用canvas.drawBitmap方法繪製了所有的位圖。我只是想知道這是否是這樣做的。或者讓surfaceView佔據屏幕的2/3,然後在它的下面有一個相關佈局,或者我可以實現一個imageview併爲每個圖像創建監聽器。但我不認爲這是正確的。 – CBaker

+0

有一個很好的性能技巧來做到這一點,你只能從Listener獲得X和Y位置,並跟蹤你繪製爲Rects的位圖,你可以使用rect中的「contains」方法來知道事件是否裏面的位圖矩形,簡單和性能友好... –

+0

阿好吧,這是有道理的。那麼這是正確的做法呢?繪製位圖,然後從視圖實現onTouch方法,並獲取X和Y,然後檢查x和y是否位於圖像邊界內,並指示是否已觸摸它。不爲每個位圖創建圖像併爲每個圖像設置單獨的onTouchListeners? – CBaker