2016-02-11 63 views
5

我想創建一個定製的Android容器。在哪裏我可以輕鬆地添加和刪除對象。容器應該將物體放置在六邊形內。對象放置的順序非常重要,並顯示在下圖中。此適配器中的對象是可點擊的ImageView(圓形)。 甚至有可能爲Android做出這樣的事情?Android定製容器(六角形)與適配器

Hexagon-Circle

我知道有像我這樣類似的問題,但目前還沒有甚至接近我想要實現的。

也許越來越多的人在尋找更多自定義容器,就像我試圖做的那樣。不是標準的人喜歡在其他應用程序:GridsView,ListView控件等

我已經做了

我決定用RecyclerView和定製RecyclerView.LayoutManagers。還要編寫一個算法來定義ImageViews的位置。不幸的是,我不熟悉LayoutManager,不確定應該如何使用Interface來定義位置。

RecyclerView

下面是算法:

List<Object> list; 
int nuberOfElements = list.size(); 
int layerNr = 0; 
int radius = 0; 
int angle = 0; 

//handle first middel element postion(0,0) 
nuberOfPlaceElements --; 
radius += r; 

for(layerNr=1; nuberOfElements > 0; layerNr ++){ 
    for(int elementInLayer = 0; elementInLayer < layerNr * 6; elemnetInLayer ++){ 
     //layerNr *6 -> define how many elements in layer 

     angle += 360/layerNr * 6 
     //handle the postion of elemnts in Layer 

     nuberOfElements--; 
    } 
    radius += r; 
    angle = 0; 
} 

Hexagon-Order

回答

1

最好的解決方案是創建一個自定義佈局(http://lucasr.org/2014/05/12/custom-layouts-on-android/),但也是最昂貴的方式(成本上的時間來實施) ...

替代方案您可以創建自定義視圖並直接繪製圖像E(http://developer.android.com/training/custom-views/custom-drawing.html

你想了解六角地圖全部:http://www.redblobgames.com/grids/hexagons/

爲什麼佈局比定製工程視圖更好嗎?它可以被裝在一個圖書館和用於任何其他應用程序而自定義繪製的觀點是相當綁定到應用程序...

+0

Thx :)我會看看這個解決方案。 很難將適配器添加到customView/customDrawing,所以我可以輕鬆地刪除,添加項目? – Minis

+0

關於自定義圖紙視圖。可以繪製ImageViews?例如在列表中設置? – Minis

+1

您可以隨時創建視圖...並且一旦創建,繪製該視圖也非常簡單......並且即使您可以提供佈局模型(不是視圖/視圖組的真實子類,只是一個普通的pojo模型)極具震撼力,您可以在哪裏繪製imageViews(即使它很容易直接繪製圖像) –

1

您可以檢查此庫,不正是你所要求的 https://github.com/xresco/Hexagon-Recyclerview

它使用起來非常簡單。 不使用默認的recyclerview(或ListView)的只是使用

<com.abed.hexagonrecyclerview.view.HexagonRecyclerView xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/rvItems" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_centerVertical="true" app:items_count_in_row="3" app:items_horizontal_spacing="20dp" app:items_vertical_spacing="20dp" app:orientation="horizontal" />

您可以使用以下四個參數定製:

應用:items_count_in_row 應用:items_horizo​​ntal_spacing 應用:items_vertical_spacing 應用程序:方向