2014-01-28 51 views
0

我想在Android中爲國際象棋遊戲創建簡單的UI。 我想調整屏幕以適應各種手機。 我做了TableLayout與錶行,每行包含8個線性佈局,其中包含視圖 爲玩家,我的問題是,我做寬度和每個線性佈局在特定的大小(40 DP寬度和高度)的高度,是什麼使寬度和高度右最佳teqhniques,這裏是我描述這裏一排XML文件中的佈局,android中的象棋UI

<?xml version="1.0"?> 

-<TableLayout android:id="@+id/tableLayout" android:layout_height="fill_parent" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> 


-<RelativeLayout android:layout_height="120dp" android:layout_width="120dp" android:background="@android:color/white"> 

<TextView android:id="@+id/textView1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="TextView" android:layout_marginTop="24dp" android:layout_marginLeft="33dp" android:layout_alignParentTop="true" android:layout_alignParentLeft="true"/> 

</RelativeLayout> 


-<TableRow android:id="@+id/tableRow0" android:layout_height="wrap_content" android:layout_width="wrap_content"> 

<LinearLayout android:id="@+id/n00" android:layout_height="40dp" android:layout_width="40dp" android:background="@android:color/white" android:orientation="horizontal"/> 

<LinearLayout android:id="@+id/n01" android:layout_height="40dp" android:layout_width="40dp" android:background="@android:color/black" android:orientation="horizontal"> </LinearLayout> 

<LinearLayout android:id="@+id/n02" android:layout_height="40dp" android:layout_width="40dp" android:background="@android:color/white" android:orientation="horizontal"/> 

<LinearLayout android:id="@+id/n03" android:layout_height="40dp" android:layout_width="40dp" android:background="@android:color/black" android:orientation="horizontal"> </LinearLayout> 

<LinearLayout android:id="@+id/n04" android:layout_height="40dp" android:layout_width="40dp" android:background="@android:color/white" android:orientation="horizontal"/> 

<LinearLayout android:id="@+id/n05" android:layout_height="40dp" android:layout_width="40dp" android:background="@android:color/black" android:orientation="horizontal"> </LinearLayout> 

<LinearLayout android:id="@+id/n06" android:layout_height="40dp" android:layout_width="40dp" android:background="@android:color/white" android:orientation="horizontal"/> 

<LinearLayout android:id="@+id/n07" android:layout_height="40dp" android:layout_width="40dp" android:background="@android:color/black" android:orientation="horizontal"> </LinearLayout> 

</TableRow> 

回答

0

如果我開發一個國際象棋的用戶界面,我不會用框架佈局,但看使用SurfaceView,並繪製到畫布上。

每個視圖都有一個畫布,它是實際繪製到屏幕上的內容。如果你自己創建,你將能夠獲得更好的控制和渲染速度,並且你可以在Java代碼中簡單地創建棋盤格。

0

我可以建議一種不同的方式來創建您的國際象棋佈局?

考慮一個垂直的LinearLayout(這會讓你行)含水平線性(您的列)。然後在每個水平LinearLayout中,有八個按鈕/ ImageButtons。這是一個這樣的佈局的open source implementation

現在的問題是如何正確地將它們分開(如果你想保留它,這應該適用於你的原始佈局)。有兩種主要方法可以做到這一點:

  1. 使棋盤適合屏幕,無需滾動。
  2. 使棋盤最小寬度/高度,滾動可能是必要的。

要完成前者,您的外部佈局的寬度和高度都應該有match_parent。您的內部佈局應爲寬度爲match_parent,高度爲wrap_content。那麼你的單個單元格應該具有1的weight屬性。這種方法存在限制,比如你將無法在棋盤側面看到任何視圖(儘管上面和下面應該有空間)。

要完成後者(這就是您要求的),則外部和內部佈局的寬度和高度屬性應爲wrap_content。我也建議你在ScrollView中嵌入你的結構,以防擴展過屏幕。