ubicar redondo redondeados redondeado los diseƱo dar como color cambiar botones boton bordes borde java android button views

java - redondeados - Botones redondos



jbutton redondeado (2)

Puede usar un color de máscara, por ejemplo: un botón completamente rojo, como la imagen que ha publicado, la verificación de color de píxel justo sobre el botón rojo, algo así como:

bool insideMyAwsomeShapeButton(int mouse_x,int mouse_y) { if get_image_pixel_color_at_pos(mouse_x,mouse_y) == rgbcolor(1,0,0) { return true; } return false; }

De nuevo, esto es solo un pensamiento, tienes que encontrar aplicaciones api específicas en Android para hacer la tarea, como comprobar el color del píxel.

Quiero tener algo así como estos cinco botones, un botón rodeado por otros cuatro botones. Solo así:

Sé que con Android solo podemos tener vistas de tipo cuadrado, ¿cómo sería posible hacer esto? OpenGl o algo? Alguien tiene enlaces a algo relacionado? Básicamente quiero botones curvados que estén muy juntos.


Supongo que al final del día será más fácil hacer esto en una vista personalizada.

Pero si desea utilizar las vistas en stock, sugeriría lo siguiente. Primero, use un contenedor RelativeLayout para organizar los cuatro botones externos en una grilla de 2x2. Luego, coloca el botón central para que se superponga a la cuadrícula en el centro. Coloque el botón central en una Z más alta (más cerca del usuario) que los cuatro botones circundantes. Luego use la transparencia como parte de las imágenes de los botones para que se vean como usted quiere. Entonces (con suerte) pruébalo. Si el orden Z es el correcto, el botón central capturará los grifos que de otro modo habrían pasado a uno de los otros cuatro botones.

En realidad, esto no funcionará como está, porque el cuadrado del botón central se introducirá en los cuadrados circundantes. No sé si funcionaría, pero puedes intentar reemplazar el botón central con otra cuadrícula de "piezas" de botones. La grilla tendría posiciones vacías, excepto cuando la imagen del botón central se superpone a la celda de la grilla. Tendrás que hacer esto lo suficientemente fino como para evitar la intrusión en las imágenes de los botones externos.

EDITAR :

Se me ocurrió que quizás podría hacer esto con un grupo de objetos TouchDelegate . Debería organizar los botones como describí al principio, pero solo hacer clic en el contenedor principal . Utilizaría cinco TouchDelegate s para descubrir qué botón (si lo hay) estaba debajo de las coordenadas de toque. Desafortunadamente, TouchDelegate solo funciona con regiones de impacto Rect , lo que nos deja donde comenzamos. Sin embargo, puede canibalizar la fuente de TouchDelegate y definir su propia versión que acepte algún tipo de clase de forma general en lugar de solo un Rect . (La clase de forma debería tener el equivalente de Rect.contains() para probar un hit. No hay nada integrado en Android, pero podrías escribir fácilmente tus propias clases para las formas específicas que tienes).

Podría simplificar un poco el código al poner la lógica de aciertos y delegaciones directamente en la vista del contenedor primario, pero creo que sería más limpio tener una clase de delegado reutilizable que separe el manejo del evento del propio contenedor.