2016-02-29 56 views
1

我是Android新手,發現很多東西。但現在我很困難。 我想做一個六角棋盤遊戲,瓷磚。我找到了許多教師,最後決定按照我的意願繪製成糊狀的六邊形。選擇單個在Android畫布上繪製的視圖

我創建了一個'View'類的'Hex'類,添加了一些變量等等。這裏是我把我的主要XML佈局:

<flocoolb.app6.Hex 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    flocoolb:r="50" 
    android:id="@+id/h01"/> 
<flocoolb.app6.Hex 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    flocoolb:r="50" 
    flocoolb:x="75" 
    flocoolb:y="43.30127" 
    android:id="@+id/h02"/> 
<flocoolb.app6.Hex 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    flocoolb:r="50" 
    flocoolb:x="150" 
    android:id="@+id/h03"/> 

r =大小,x和y是在畫布上的偏移量。 這裏是我得到我的活動: Main activity screen

但現在我想選擇單個十六進制。例如,我想選擇左上角的一個,或右下角的一個。我在每個人上添加了OnClickListener,但實際上視圖的大小是整個屏幕。例如,如果我更改視圖的背景顏色,它會在整個屏幕上更改該顏色。是否有可能將視圖限制在畫出的線條上?

我希望你明白我的意思。 非常感謝:)

+0

我剛纔成功地改變了視圖的背景顏色。我在Hex類中添加了一個更改顏色的方法「changeColor()」,使視圖無效並使用requestLayout()。 然後在「OnClickListener」中,我從View v獲取ID,從此ID獲取Hex,並使用先前的方法「changeColor()」。 很好!但現在我的問題是在@wngxao的答案中描述:視圖採用全屏幕,因此,我無法觸摸屏幕,所選視圖是XML佈局中的最後一個 – FlocoolB

+0

它可能會處理剪輯[here](http ://developer.android.com/training/material/shadows-clipping.html)? – FlocoolB

回答

0

雖然,我不太瞭解你。但是我建議你重寫你的view的onTouch方法,並且在onTouch方法中實現你的函數。

+0

每個十六進制都採用整個屏幕。我在XML中聲明瞭8個六邊形,我們在附圖上看到了8個六邊形。隨着OnClickListener內部顏色的改變,下面是我得到的結果:[鏈接](http://i.imgur.com/K1iFuyF.png) 此外,無論我接觸到的十六進制,它是最後一個聲明在foregroung 。在OnClickListener中寫入「v.setVisibility(View.INVISIBLE);」它們將在XML佈局中從最後一個到最後一個不可見。 這是我最後想要的:[link](http://i.imgur.com/WRgXqge.png) – FlocoolB