Java Android自定义容器(六边形),带E适配器

Java Android自定义容器(六边形),带E适配器,java,android,layout,view,containers,Java,Android,Layout,View,Containers,我想创建一个定制的android容器。在这里我可以轻松地添加和删除对象。容器应将对象放置在六边形内。对象放置的顺序非常重要,如下图所示。此适配器中的对象是可单击的图像视图(圆形)。 甚至可以为Android制作这样的东西 我知道也有类似的问题,但与我想要达到的目标还相差甚远 可能会有越来越多的人在寻找更多的定制容器,比如我正在尝试制作的那个。与其他应用程序不同:GridsView、ListView等 我已经做的 我决定使用RecyclerView和CustomRecyclerView.Layo

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

我知道也有类似的问题,但与我想要达到的目标还相差甚远

可能会有越来越多的人在寻找更多的定制容器,比如我正在尝试制作的那个。与其他应用程序不同:GridsView、ListView等

我已经做的

我决定使用RecyclerView和CustomRecyclerView.LayoutManager。还要编写一个算法来定义ImageView的位置。不幸的是,我不熟悉LayoutManager,也不知道如何使用it界面定义位置

以下是算法:

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;
}
列表;
int numberofelements=list.size();
int layerNr=0;
int半径=0;
内倾角=0;
//处理第一个中间元素位置(0,0)
无核元素--;
半径+=r;
对于(layerNr=1;nuberOfElements>0;layerNr++){
对于(int-elementInLayer=0;elementInLayer定义图层中的元素数量
角度+=360/层*6
//处理元素在图层中的位置
Nuberof元素--;
}
半径+=r;
角度=0;
}

最佳解决方案是创建自定义布局(),但这也是最昂贵的方法(按时实施成本)

或者,您可以创建自定义视图并直接在其中绘制图像()

您想要了解的关于十六进制映射的所有信息:


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

您可以检查此库,它完全满足您的要求

它使用起来非常简单。 不要使用默认的recyclerview(或listview),只需使用

您可以使用以下四个参数对其进行自定义:

应用程序:行中的项目数 应用:项目\水平\间距 应用:项目\垂直\间距
app:orientation

Thx:)我会看看这个解决方案。很难将适配器添加到customView/customDrawing,以便我可以轻松删除、添加项目?关于自定义绘图视图。可以绘制图像视图吗?例如,在列表中设置?您可以随时创建视图。。。一旦创建,绘制视图也很简单。。。即使您可以提供一个布局模型(不是视图/视图组的真正子类,只是一个普通的pojo模型),它决定了在何处绘制图像视图(尽管直接绘制图像非常容易)