SurfaceView

 

Por: Anthony Avila, Piero Zavaleta 

SurfaceView





Es una clase en el framework de Android que proporciona una superficie de dibujo directa en la que puedes renderizar gráficos, animaciones y otros elementos visuales de manera eficiente. A diferencia de las vistas convencionales, SurfaceView es especialmente útil cuando necesitas realizar gráficos intensivos o animaciones complejas en tiempo real.

Una de las características más destacadas de SurfaceView es su capacidad para realizar el dibujo en un hilo separado al hilo principal de la interfaz de usuario (UI Thread). Esto permite evitar la sobrecarga del hilo principal y mantener una experiencia de usuario fluida incluso cuando se realizan operaciones gráficamente intensivas.

¿Qué es SurfaceView?

SurfaceView es una subclase de la clase Vista que proporciona una superficie de dibujo incrustada dentro de una jerarquía de vistas. Se puede controlar el formato de esta superficie y, si se desea, su tamaño; SurfaceView se encarga de colocar la superficie en la ubicación correcta de la pantalla.

La superficie está ordenada en Z de modo que esté detrás de la ventana que contiene su SurfaceView; este hace un agujero en la ventana para permitir que se muestre su superficie. La jerarquía de ‘view’ se encargará de componer correctamente con Surface cualquier hermano de SurfaceView que normalmente aparecería encima de ella. Esto se puede usar para colocar superposiciones, como botones, en la parte superior de la Superficie, aunque tenga en cuenta que puede tener un impacto en el rendimiento, ya que se realizará una composición alfa completamente mezclada cada vez que cambie la Superficie.

La región transparente que hace visible la superficie se basa en las posiciones de diseño en la jerarquía de vistas. Si las propiedades de transformación posteriores al diseño se utilizan para dibujar una vista hermana encima de SurfaceView, es posible que la vista no se componga correctamente con la superficie.

Se puede acceder a la superficie subyacente utilizando la interfaz SurfaceHolder llamando a getHolder().


Atributos de SurfaceView

·        android:background - Establece el fondo de la vista.

·        android:theme - Establece un tema de la vista.

·        android:visibility - Establece la visibilidad (VISIBLE, INVISIBLE o GONE) de la vista

·        android:elevation - Establece la profundidad z de la vista.

·        android:id - Establece la identificación de la vista.

·        android:padding - Establece el relleno de la vista.


Características

·        Dibujo eficiente: SurfaceView permite realizar operaciones de dibujo de manera eficiente en un hilo separado (generalmente conocido como el hilo de dibujo) sin bloquear el hilo principal de la interfaz de usuario (UI). Esto es crucial para mantener una buena experiencia de usuario y evitar el bloqueo de la aplicación.

·        Animaciones y juegos: Es especialmente útil para desarrollar aplicaciones que requieren animaciones suaves y juegos en tiempo real, ya que te permite actualizar y renderizar gráficos a una velocidad constante.

·        Interacción directa con el lienzo: Se puede dibujar directamente en el lienzo utilizando métodos como Canvas y Paint, lo que te brinda un control total sobre la representación visual en la superficie.

·        Control de capas: SurfaceView te permite crear múltiples capas de dibujo y controlar su superposición, lo que es útil para aplicaciones que requieren elementos gráficos superpuestos, como un juego con personajes y fondos.

SurfaceView es una herramienta poderosa para el desarrollo de aplicaciones Android que requieren gráficos en tiempo real y animaciones suaves. Sin embargo, debido a su naturaleza más compleja en comparación con otros widgets de interfaz de usuario, es importante comprender bien su funcionamiento y manejar cuidadosamente su ciclo de vida para evitar problemas de rendimiento y bloqueos en la aplicación.








Comentarios

Entradas más populares de este blog

Plantillas/Pantallas para proyectos

VideoView