2016-02-11 11 views
5

Ich möchte einen benutzerdefinierten Android-Container erstellen. Wo ich Objekte leicht hinzufügen und entfernen kann. Der Behälter sollte Objekte in Sechsecken platzieren. Die Reihenfolge, in der Objekte platziert werden, ist sehr wichtig und wird im Bild unten gezeigt. Objekte in diesem Adapter sind klickbare ImageViews (zirkulär). Es ist sogar möglich, so etwas für Android zu machen?Android benutzerdefinierte Container (sechseckig) mit Adapter

Hexagon-Circle

Ich weiß, dass es ähnliche Fragen wie bei mir, aber es gibt nicht einmal in der Nähe zu dem, was ich erreichen will.

Wahrscheinlich mehr und mehr Leute, die nach mehr kundenspezifischen Behältern suchen, die ich versuche zu machen. Nicht der Standard ein wie in anderen Anwendungen: GridsView, Listview, usw.

Was ich schon

gemacht habe beschlossen, ich RecyclerView und benutzerdefinierte RecyclerView.LayoutManagers zu verwenden. Schreiben Sie auch einen Algorithmus, um eine Position von ImageViews zu definieren. Leider kenne ich mich mit LayoutManager nicht aus und weiß nicht, wie ich Orte mit dieser Schnittstelle definieren soll.

RecyclerView

Hier Algorithmus:

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

Antwort

1

beste Lösung ist ein benutzerdefiniertes Layout (http://lucasr.org/2014/05/12/custom-layouts-on-android/) zu erstellen, aber das ist auch die teuerste Art und Weise (Kosten rechtzeitig umzusetzen) ...

Alternativ können Sie eine benutzerdefinierte Ansicht erstellen und Bilder direkt dorthin zeichnen e (http://developer.android.com/training/custom-views/custom-drawing.html)

alles, was Sie jemals über Hex-Karten wissen wollen: http://www.redblobgames.com/grids/hexagons/

warum ist das Layout besser als eine benutzerdefinierte Zeichnungsansicht? es kann für jede andere Anwendung in einer Bibliothek und verwendet verpackt werden, während eine individuelle Zeichnung zur Anwendung eher gebunden ist ...

+0

Thx :) Ich werde diese Lösung betrachten. Es ist schwierig, Adapter zu customView/customDrawing hinzuzufügen, damit ich leicht Elemente entfernen und hinzufügen kann? – Minis

+0

Über benutzerdefinierte Zeichnungsansicht. Es ist möglich, ImageViews zu zeichnen? Zum Beispiel in Liste gesetzt? – Minis

+1

können Sie jederzeit eine Ansicht erstellen ...und einmal erstellt, ist es auch ganz einfach, diese Ansicht zu zeichnen ... und obwohl Sie ein Layout-Modell (keine echte Unterklasse von view/viewgroup, nur ein einfaches Pojo-Modell) zur Verfügung stellen können, wo Sie Ihre imageViews zeichnen können es ist sehr einfach, ein Bild direkt zu zeichnen) –

1

Sie diese Bibliothek überprüfen, die genau das tun, was Sie für gefragt sind https://github.com/xresco/Hexagon-Recyclerview

Es ist super einfach zu bedienen. Statt die Standard recyclerview der Verwendung (oder Listenansicht) verwenden nur

<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" />

Sie anpassen können es die folgenden vier Parameter:

App: items_count_in_row App: items_horizontal_spacing App: items_vertical_spacing App: Orientierung

Verwandte Themen