Todavía soy nuevo en Android, así que no estoy totalmente familiarizado con todos los componentes de vista. Estoy luchando con la alineación de botones dinámicamente alrededor de un círculo.Organizar dinámicamente Botones alrededor de un círculo
Lo que estoy tratando de lograr es añadir botones de n (n puede cambiar en tiempo de creación) a un aspecto que se parece a la imagen adjunta:
me gustaría evitar el uso de AbsoluteLayout (pero estoy abierto a sugerencias si esa es la única forma de resolverlo). ya me ocurrió con un cálculo de las posiciones x/Y para los botones (ignorando el tamaño del botón por ahora):
int iNumberOfButtons = 10;
double dIncrease = Math.PI * 2/iNumberOfButtons,
dAngle = 0,
x = 0,
y = 0;
for(int i = 0; i < iNumberOfButtons; i++)
{
x = 100 * Math.cos(dAngle) + 200;
y = 100 * Math.sin(dAngle) + 200;
dAngle += dIncrease;
// get button and set position?
}
Pensé en usar este código desde el interior de una vista personalizada pero por lo que he visto la vista necesita ser subclasificada de ViewGroup para tener el método addView y, nuevamente, solo absoluteLayout parece permitir establecer las posiciones x, y ... No sé cómo implementar esta característica.
Podría agregar algunas animaciones a esa vista más adelante, por lo que usar SurfaceView podría ser bueno si es posible, pero no es un requisito.
Me encuentro con otro problema con este enfoque. onDraw() recibe una llamada repetida que no es lo que quiero cuando configuro botones allí. Supongo que probablemente podría rodear la inicialización con un if y un booleano, pero ¿hay una forma aceptada de implementar el comportamiento que quiero? (por ejemplo, iniciar mi vista personalizada con los botones, dispuestos en círculo desde el centro, sin recurrir a onDraw?) –