2013-05-13 31 views
-1

我正在爲玩一個交易卡遊戲的Android應用程序編寫GUI。我有使用多個視圖的戰場佈局代碼。我需要製作一個代表甲板的物體,並且還需要在手中/戰場上代表一張牌。長時間攻擊時需要提供選項菜單(攻擊,防守等),或者當雙手輕擊區域(綠色)需要移動到戰場時(藍色)。我不確定我可以用什麼樣的xml對象來做到這一點,因爲它需要動態地發生並從後端代碼(卡片名稱,圖像)獲取數據。現在,我只是試圖創建對象,使其在與遊戲代碼合併之前顯示爲黑色矩形佔位符。有人有什麼建議從哪裏開始?Android Trading Card遊戲卡對象

這裏是戰場佈局當前代碼:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" 
android:background="@color/blue_default"> 

<View 
    android:id="@+id/hand" 
    android:background="@color/green_default" 
    android:layout_width="fill_parent" 
    android:layout_height="70dp" 
    android:layout_alignParentBottom="true" 
/> 

<View 
    android:id="@+id/sidebar" 
    android:background="@color/gray_default" 
    android:layout_width="60dp" 
    android:layout_height="fill_parent" 
/> 

<View 
    android:id="@+id/graveyard" 
    android:background="@color/red_default" 
    android:layout_width="60dp" 
    android:layout_height="fill_parent" 
    android:layout_toRightOf="@id/sidebar" 
/> 
</RelativeLayout> 

下面是它目前的樣子:

這裏是什麼,我想它的外觀的示例像:

+0

對你有好處。你有問題嗎? – Simon 2013-05-13 20:46:18

+0

問題是我該如何去做這樣的對象? – Netsuki 2013-05-13 20:55:07

+0

@Netsuki,如果你不習慣編寫XML佈局,簽出[AbLE](http://phil-brown.github.io/AbLE/) - 它可以讓你使用簡單的帶註釋的java類文件編寫你的佈局,並且您可以管理代碼中的所有點擊連接。 – Phil 2013-05-13 21:18:55

回答

1

如果你要創建一個簡單的應用程序在你的模擬設置爲純靜態的東西,我建議你看一看GridView控件(http://developer.android.com/guide/topics/ui/layout/gridview.html),你可以使用這個組件的側邊欄,手和墓地節。然後,你將不得不創建自定義視圖來填充他們的適配器(http://developer.android.com/guide/topics/ui/declaring-layout.html#AdapterViews)與單卡,卡堆棧,按鈕等...

請記住,視圖層次結構越深(您展示和堆疊的卡越多相應的GridView),應用程序將使用的內存越多,如果可用內存被吃掉,Android可以關閉您的應用程序。恕我直言,如果你打算創建一個遊戲,並且由於這些日子游戲必須具有2D或3D圖形的流暢UI,你應該利用Android的OpenGL支持(http://developer.android.com/guide/topics/graphics/opengl.html),並創建內存高效的對象來處理你的遊戲邏輯。

祝你好運!

+0

我執行與GridView的戰場,如你所說的,但我似乎無法找到一種方法在運行時的項目(由按鈕代表卡)動態地添加到網格中。我希望能夠點擊手牌區域中的一張「卡牌」,這將在戰場上生成一張「卡牌」。它還需要傳遞一個字符串(卡片名稱,這將是按鈕的文本),但我甚至無法想象生成一個按鈕。 – Netsuki 2013-05-14 02:38:35

+0

填充GridView控件連接到你的模型中SimpleCursorAdapter或使自己的自定義適配器延伸BaseAdapter和手動填充它。您可以在GridView的適配器插入看法動態,隨意刷新等GridView控件將顯示任何東西,從android.view.View,這樣的按鈕,TextView的,等擴展,我們只爲遊戲元素,如在GridView上牌和堆棧,創建自定義視圖來表示它們。按鈕,以及...因爲它們是靜態的,它們可能只是GridView旁邊的一個按鈕,因此您不必一次又一次重新插入它們。 – 2013-05-14 02:43:56

+0

我有一個名爲ButtonAdapter的自定義適配器。它目前從非動態字符串陣列中生成戰場卡片(按鈕)作爲測試。爲了方便,我選擇了按鈕作爲卡片,因爲卡片需要有多個聽衆(點擊,長按等)。我想要發生的是,當在側邊欄中點擊代表甲板的按鈕時,將按鈕/卡片添加到戰場網格中。在側欄視圖中有沒有一種方法可以在戰場GridView中生成新的網格物品(並將其傳遞給字符串)? – Netsuki 2013-05-14 02:52:01

0

當使用靜態視圖(不移動或更改位置)構建業務用戶界面時,標準Android XML佈局非常方便,但我不確定這是否是這種棋盤遊戲的最佳選擇。

我猜卡片必須移動(從甲板到棋盤位置的動畫),或者可以添加特殊效果。

在這種情況下,我會轉到更動態的屏幕,使用像AndEngine或Cocos2D之類的2D引擎。 如果你不害怕潛入一些2D框架,它們會給你很大的靈活性和可能性。