2014-01-25 116 views
3

有沒有人可以幫助創建這樣的佈局(我的意思是,如何選擇圖像的區域並將其轉換爲按鈕?)? Something I want to create圓形按鈕形成

+0

是中央圓(高爾夫球手)也被認爲是一個按鈕? –

+0

不,只有那些其他8個按鈕 –

+0

好吧,讓我準備一張圖片,告訴你我將如何簡化概念... –

回答

5

我多麼(多簡化)做到這一點的只有使用RelativeLayout的
這是想法:

enter image description here

綠色矩形區域僅僅是一個spacewasting TextView的。它是其他8個TextViews的兩倍(你只需要8個,而不是12個!),它們明智地在它周圍移動。

通過使用RelativeLayout容器中的以下屬性toRightOf ...,可以輕鬆地對齊這些屬性。

它們是可點擊的(不是中央的),只需要您準備8個「圖標」,您可以將所有其餘的圖像作爲背景(只需用白色清除圖標應放置的位置) 。

只需使用dp作爲測量單位即可實現可擴展性。

這種設計非常簡單,並且工作得很好。

與啓動一些活動的點擊偵聽器相比,您不需要太多的代碼。

您認爲如何?

我發佈了一個類似的在過去的答案:見here。該繪圖是由代碼完成的,但按鈕在xml中被置換。

讓XML佈局過程非常類似,你需要的東西:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:background="#f000" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" 
    > 
    <TextView 
     android:id="@+id/txt9" 
     android:layout_width="160dp" 
     android:layout_height="160dp" 
     android:layout_centerInParent="true" 
     android:gravity="center" 
     android:text="9" 
     android:textSize="40sp" 
     android:textStyle="bold" 
     android:textColor="#ffff" 
    /> 
    <TextView 
     android:id="@+id/txt1" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:layout_above="@id/txt9" 
     android:layout_alignLeft="@id/txt9" 
     android:gravity="center" 
     android:text="1" 
     android:textSize="40sp" 
     android:textStyle="bold" 
     android:textColor="#ffff" 
    /> 
    <TextView 
     android:id="@+id/txt8" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:layout_alignTop="@id/txt1" 
     android:layout_toRightOf="@id/txt1" 
     android:gravity="center" 
     android:text="8" 
     android:textSize="40sp" 
     android:textStyle="bold" 
     android:textColor="#ffff" 
    /> 
    <TextView 
     android:id="@+id/txt2" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:layout_alignTop="@id/txt9" 
     android:layout_toLeftOf="@id/txt9" 
     android:gravity="center" 
     android:text="2" 
     android:textSize="40sp" 
     android:textStyle="bold" 
     android:textColor="#ffff" 
    /> 
    <TextView 
     android:id="@+id/txt3" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:layout_below="@id/txt2" 
     android:layout_toLeftOf="@id/txt9" 
     android:gravity="center" 
     android:text="3" 
     android:textSize="40sp" 
     android:textStyle="bold" 
     android:textColor="#ffff" 
    /> 
    <TextView 
     android:id="@+id/txt4" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:layout_below="@id/txt9" 
     android:layout_alignLeft="@id/txt9" 
     android:gravity="center" 
     android:text="4" 
     android:textSize="40sp" 
     android:textStyle="bold" 
     android:textColor="#ffff" 
    /> 
    <TextView 
     android:id="@+id/txt5" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:layout_alignTop="@id/txt4" 
     android:layout_toRightOf="@id/txt4" 
     android:gravity="center" 
     android:text="5" 
     android:textSize="40sp" 
     android:textStyle="bold" 
     android:textColor="#ffff" 
    /> 
    <TextView 
     android:id="@+id/txt7" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:layout_alignTop="@id/txt9" 
     android:layout_toRightOf="@id/txt9" 
     android:gravity="center" 
     android:text="7" 
     android:textSize="40sp" 
     android:textStyle="bold" 
     android:textColor="#ffff" 
    /> 
    <TextView 
     android:id="@+id/txt6" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:layout_below="@id/txt7" 
     android:layout_toRightOf="@id/txt9" 
     android:gravity="center" 
     android:text="6" 
     android:textSize="40sp" 
     android:textStyle="bold" 
     android:textColor="#ffff" 
    /> 
</RelativeLayout> 

隨意使用ImageButtons代替TextViews(更合適,你的情況)。

對於8個按鈕更清晰的視圖,你會真正需要的是工作:

enter image description here

果嶺的一杆是DUMMY

0

這可能是最好的實現爲一個自定義視圖。

您可以使用atan2從視圖中心到用戶觸摸位置獲取度數 - 如果觸摸事件與視圖中心之間的距離大於內圈的半徑(在板球運動員周圍),但不能大於外圈,那麼你可以根據角度計算哪個按鈕被點擊(這更容易,因爲它們都是相同的大小)。

你只需要一個白色背景資產,一邊是灰線,然後畫出8個圍繞視圖中心旋轉的資產。然後將您的8個圖標置於頂部,根據距離和角度計算其位置。 當用戶觸摸其中一個切片時,切換按下/單擊狀態的資產。