Contenedor personalizado para Android (hexagonal) con adaptador

Quiero crear un contenedor Android personalizado. Donde fácilmente puedo agregar y quitar objetos. El contenedor debe colocar objetos dentro de hexágonos. El orden en que los objetos se colocan es realmente importante y se muestra en la imagen de abajo. Los objetos de este adaptador pueden hacer clic en ImageViews (circular). Incluso es posible hacer algo como esto para Android?

Círculo hexagonal

Sé que hubo preguntas similares como la mía, pero no hay ni siquiera cerca de lo que quiero lograr.

Probablemente más y más personas en busca de más contenedores personalizados como el que estoy tratando de hacer. No es el estándar como en otras aplicaciones: GridsView, ListView, etc.

Lo que ya he hecho

Decidí usar RecyclerView y RecyclerView.LayoutManagers de encargo. Escribe también un algoritmo para definir una posición de ImageViews. Lamentablemente, no estoy familiarizado con LayoutManager y no estoy seguro de cómo debo definir los lugares que utilizan interfaz.

RecyclerView

Aquí está el algoritmo:

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; } 

Orden hexagonal

La mejor solución es crear un diseño personalizado ( http://lucasr.org/2014/05/12/custom-layouts-on-android/ ) pero eso también es la forma más costosa (costo a tiempo para implementar) …

Alternativa puede crear una vista personalizada y dibujar imágenes directamente allí ( http://developer.android.com/training/custom-views/custom-drawing.html )

Todo lo que quieras saber sobre hex-maps: http://www.redblobgames.com/grids/hexagons/

¿Por qué es el diseño mejor que una vista de dibujo personalizada? Puede ser empaquetado en una biblioteca y utilizado para cualquier otra aplicación mientras que una vista de dibujo personalizada está más bien ligada a la aplicación …

Puede consultar esta biblioteca que hace exactamente lo que está solicitando https://github.com/xresco/Hexagon-Recyclerview

Es muy fácil de usar. En lugar de usar el valor por defecto recyclerview (o listview), simplemente use

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

Se puede personalizar con los siguientes cuatro parámetros:

App: items_count_in_row aplicación: items_horizontal_spacing aplicación: items_vertical_spacing aplicación: orientación

  • Vincular la vista personalizada de Android a una xml de diseño específico (¿es posible?)
  • ¿Hay una mejor manera de restaurar el estado de SearchView?
  • Calcular la medida de la vista antes de mostrarla
  • Android Color de fondo cambiado al azar
  • Vista personalizada con diseño XML en Android
  • SearchView es nulo Android
  • Falta el puerto reenviado en el Visor de jerarquía: Uso de Android Studio
  • Cambiar el tamaño de un mapa de bits a un valor fijo, pero sin cambiar la relación de aspecto
  • Butterknife vs AndroidAnnotations
  • Establecer una imagen de fondo en una vista extiende mi vista
  • ¿Por qué obtengo un error al intentar establecer el contenido de un tabspec en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.