Android: ¿puedo crear una vista / lienzo que no sea rectangular, pero por ejemplo, redondo?
Tengo una vista que es ronda y flotando por encima (-> en la dirección del eje z que sale de la pantalla) el contenido principal. Cuando alguien toca la pantalla, quiero que el contenido principal sea seleccionado o la vista que se cierne encima, cuando cubre la vista principal.
Hasta ahora eso funciona perfectamente. Tengo un artículo redondeado en un lienzo transparente. Lo que significa que puede ver todo lo que está fuera de ese círculo. Sin embargo, no se puede seleccionar, porque sigue siendo el lienzo flotando, sólo con una pintura transparente.
- La lista expandible no se está expandiendo
- Poner cualquier vista sobre un VideoView en Android
- ¿Por qué mi tamaño de fuente parece mucho más grande en el objeto de vista web android que cuando se ve en el navegador de Android?
- Pasar de una actividad a otra
- ¿Cómo obtener el lienzo actual?
Ahora me pregunto, para resolver este problema, si es posible hacer la vista / lienzo en sí forma redonda?
Actualizar
He añadido una imagen para una mejor explicación de lo que intento lograr.
- OnTouchListener para toda la pantalla
- Uso de dos diseños diferentes para elementos secundarios en ExpandableListView
- OnTouch funciona, pero OnClickListener no?
- Cuál es la ventaja de usar el espacio sobre la vista
- ¿Creación de una copia de una vista?
- Android ExpandableListView posición del grupo siempre 0
- RemoveView no funciona después de LayoutInflater.inflate (resource, root, true)
- Ajustar dinámicamente la altura de los encabezados de grupo en un ExpandableListView
Por lo que sé, es imposible. He comprobado las fuentes de View.java en git.kernel.org y se basa en la clase Rect – rects define la posición, el tamaño, las regiones para invalidar etc ("La geometría de una vista es la de un rectángulo." Los comentarios en View.java)
En cuanto a la clase Canvas – normalmente se construye sobre Bitmap o GL. El mapa de bits es definitivamente un rectange (una matriz), así que el lienzo parece representar un rectange también. Si se utiliza GL se especifica una ventana (que también es un rectángulo).
Parece ser la forma más obvia de comprobar si las coordenadas pasadas a su método onTouch () le encajan en la región y devuelven false si no lo hacen. A continuación, el evento se pasará a la vista siguiente y debe procesar el evento.
Probablemente no es relevante para el asker original, pero para cualquiera que todavía esté buscando, parece que esto se agregará en L: https://developer.android.com/preview/material/views-shadows.html#clip . El método View.setClipToOutline
permite recortar una vista a la forma de una rectangular rectangular, circular o redonda.
Debe especificar un selector de Android para evitar la imagen de desplazamiento predeterminada.
- Android: cambia el color de la fuente al hacer clic
- Pruebas instrumentadas con AndroidJUnitRunner 1.0.0 y AssertJ