2016-02-11 28 views
5

Özel bir android kapsayıcı oluşturmak istiyorum. Nesneleri kolayca ekleyip kaldırabileceğim. Kap, altıgenlerin içine nesne yerleştirmelidir. Nesnelerin yerleştirildiği sıra, aşağıdaki resimde gerçekten önemli ve gösterilmektedir. Bu bağdaştırıcıdaki nesneler, tıklanabilir ImageView'lardır (dairesel). Android için böyle bir şey yapmak bile mümkün mü?Android özel kapsayıcı (altıgen) adaptörle birlikte

Hexagon-Circle

Benimki gibi benzer sorular vardı biliyorum ama elde etmek istediğinizi bile yakın bulunmamaktadır.

Muhtemelen giderek daha fazla insanın yapmaya çalışıyorum gibi daha fazla özel konteynır arıyor. diğer uygulamalarda gibi değil standart bir: GridsView, ListView, vb

Zaten

yaptık Ne RecyclerView ve özel RecyclerView.LayoutManagers kullanmaya karar verdi. Ayrıca ImageViews konumunu tanımlamak için bir algoritma yazınız. Maalesef, LayoutManager'a aşina değilim ve Arayüzü kullanan yerleri nasıl tanımlayacağımı bilmiyorum. İşte

RecyclerView

algoritmadır:

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

cevap

1

iyi çözüm özel bir düzen (http://lucasr.org/2014/05/12/custom-layouts-on-android/) oluşturmak için ama bu da en pahalı yoldur (maliyet zaman uygulamak üzerine) ...

alternatif olarak özel bir görünüm oluşturabilir ve doğrudan görüntü çekebilirsiniz. e (http://developer.android.com/training/custom-views/custom-drawing.html)

Hiç altıgen-haritalar hakkında bilmek istediğiniz tüm: http://www.redblobgames.com/grids/hexagons/

neden düzen özel çizim görünümü daha iyi? Özel bir çizim görünümü uygulamasına oldukça bağlı ise o

+0

Thx :) Bu çözüme bakacağım. ÖzelView/customDrawing'e adaptör eklemek çok zor, böylece öğeleri kolayca kaldırabilirmiyim? – Minis

+0

Özel çizim görünümü hakkında. ImageViews çizmek mümkün mü? Örneğin, Listede mi? – Minis

+1

istediğiniz zaman bir görünüm oluşturabilirsiniz ...ve bir kez oluşturulduğunda da o görünümü çizmek için oldukça basit ... ve bir düzen modeli (view/viewgroup, sadece bir düz pojo modeli) değil, belirtebilirsiniz (nerede olsa da) Doğrudan bir görüntü çizmek çok kolay) –

1

Eğer https://github.com/xresco/Hexagon-Recyclerview

için tam olarak ne soruyorsun gelmez bu kitaplığı kontrol edebilirsiniz ... Kütüphanede paketlenmiş ve başka herhangi bir uygulama için de kullanılabilir Kullanımı çok basit. yerine varsayılan recyclerview (veya liste görünümü) kullanılarak sadece aşağıdaki dört parametreleri kullanarak özelleştirebilirsiniz

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

kullanın:

app: items_count_in_row uygulaması: app items_horizontal_spacing: app items_vertical_spacing: yönelim