2016-02-11 12 views
5

カスタムアンドロイドコンテナを作成したいと思います。私は簡単にオブジェクトを追加したり削除したりすることができます。コンテナは、オブジェクトを六角形の内側に配置する必要があります。オブジェクトが配置される順序は、実際に重要であり、下の図に示されています。このアダプターのオブジェクトは、クリック可能なImageView(円形)です。 Android用にこれを作成することも可能ですか?Androidカスタムコンテナ(六角)付属アダプタ

Hexagon-Circle

私は私のような同様の質問があったことを知っているが、それでも私が達成したいものに近い存在ではありません。

私が作ろうとしているカスタムコンテナのようなカスタムコンテナを探している人は、ますます多くなります。他のアプリで好きではない標準1:GridsView、リストビューなど

私はすでに

を作ってきたものは、私が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/

理由レイアウトはカスタム図面ビューよりも良いですか?カスタム図面ビューがむしろアプリケーションにバインドされているのに対し、それはあなたが https://github.com/xresco/Hexagon-Recyclerview

を求めているまさにありません。このライブラリを確認することができます...

+0

Thx :)私はその解決策を見ていきます。 私は簡単に削除することができますので、項目を追加するためにアダプタをcustomView/customDrawingに追加するのは難しいですか? – Minis

+0

カスタム図面ビューについて。 ImageViewを描画することは可能ですか?たとえば、リストに設定しますか? – Minis

+1

いつでもビューを作成できます...一度作成すると、そのビューを描画するのは非常に簡単です...また、レイアウトモデル(ビュー/ビューグループの実際のサブクラスではなく、単純なpojoモデル)を提供することはできますが、imageViewを描画する場所非常に簡単に画像を直接描画することができます) –

1

をライブラリーに充填し、他の用途にも使用することができます使い方が簡単です。 代わりに、デフォルトのrecyclerview(またはリストビュー)を使用するだけでは、以下の4つのパラメータを使用して、それをカスタマイズすることができ

<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:向き