2013-09-30 18 views
0

我正在構建我的第一個Android應用程序,這是一個簡單的遊戲。我通過擴展Activity類並使用2D圖形通過使用Canvas繪製到屏幕(用於學習目的)來完成它。在Android遊戲中獲取用戶輸入

現在我想獲得用戶/玩家的首字母縮寫,並且我需要類似組件的內容來閱讀它。我可以自己動手繪製一個鍵盤,並將觸摸監聽器綁定到它上面或讀取觸摸事件,但我已經理解Android中已經有類似軟件鍵盤的東西。我在想的一個選擇是使用EditText組件。

我可以使用Canvas渲染軟件鍵盤或EditText組件嗎? EditText和KeyBoardView似乎有方法繪製(畫布畫布)。這是否是正確的做法?我將如何設置繪製組件的座標?

如果這樣做,佈局和一般的外觀和感覺不可能與遊戲的外觀和感覺一致,那會是一個正確的假設嗎? (這意味着我仍然需要自己實現它?)

在此先感謝!

回答

0

使用軟件鍵盤可能會破壞遊戲的外觀和感覺。然而,如果你的遊戲是 簡單的類型,你可以放置一個EditText你的活動的看法是這樣的:

FrameLayout layout = new FrameLayout(this); 

layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
EditText eTInitials = new EditText(this); 
eTInitials.setPadding(0, 0, 0, 5); //change to suit your game 
eTInitials.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.BOTTOM); //change to suit your game 
etInitials.setOnKeyListener(new OnKeyListener(){ [override onkeymethod here] }); //get player initials here 
layout.addView(yourView); 

layout.addView(eTInitials); 
setContentView(layout); 

我記得救了我的上一個3D遊戲高分通過軟件鍵盤所以這種方式ISN」那很糟糕。或者如您所說,您可以通過繪製自己的自定義鍵盤位圖並讀取觸摸事件來實現它。

+0

這可能是如何工作,我相信。我不能得到這個工作,因爲我的遊戲本身包含「屏幕」或「視圖」,我需要在其中一個「屏幕」上使用EditText。我得到一個基本上拋出的異常,因爲我試圖從工作線程而不是UI線程中繪製。 – user2832636

+0

在您的活動中,只需將EditText可見性設置爲「不存在」,就可以創建一個偵聽器並將其設置回「可見」,然後在需要時在這些「屏幕」中調用它。 –

+0

我明白了。如果我有幾十個我想用於不同目的的小部件,那麼怎麼樣?我需要在我的Activity中實例化它們,將可見性設置爲Gone並使用偵聽器?這看起來有點笨拙,因爲我希望每個類都爲自己的活動負責,而不是擁有包含所有變量的單個大型類。如果我在openGL中這樣做,我可能根本無法使用這些小部件,但我認爲我的問題有點類似。我有一個不是由UI線程繪製的「屏幕」,我會認爲openGL版本也會有這樣的屏幕? – user2832636