Android自定义容器(六角形)与适配器

Min*_*nis 5 java layout containers android view

我想创建一个自定义的android容器.我可以轻松添加和删除对象.容器应将对象放在六边形内.对象放置的顺序非常重要,如下图所示.此适配器中的对象是可单击的ImageViews(循环).甚至可以为Android制作这样的东西?

六角圈

我知道有类似的问题,比如我的,但是我甚至没有达到我想达到的目标.

可能会有越来越多的人在寻找更多自定义容器,就像我想要的那样.不像其他应用程序那样标准:GridsView,ListView等.

我已经做了什么

我决定使用RecyclerView和自定义RecyclerView.LayoutManagers.还要编写一个算法来定义ImageViews的位置.不幸的是,我不熟悉LayoutManager,不知道如何使用它定义界面.

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;
}
Run Code Online (Sandbox Code Playgroud)

六角订单

Mar*_*ank 1

最好的解决方案是创建自定义布局(http://lucasr.org/2014/05/12/custom-layouts-on-android/),但这也是最昂贵的方法(实施时间成本)...

或者,您可以创建自定义视图并直接在那里绘制图像(http://developer.android.com/training/custom-views/custom-drawing.html

您想了解的有关十六进制地图的所有信息:http://www.redblobgames.com/grids/hexagons/

为什么布局比自定义绘图视图更好?它可以打包在库中并用于任何其他应用程序,而自定义绘图视图则与应用程序绑定......