Aplicaciones Android

RenderEffect-Blur-Stylize Android

En el momento de escribir este artículo, en marzo de 2021, la horizonte previa auténtico para desarrolladores de Android 12 llegó recientemente. Si hay muchos rumores, Android 12 tendrá una puesta al día del sistema de diseño indicación Material NEXT. Aunque los detalles de lo que esto en realidad significa son vagos, puede tener similitudes con otras plataformas móviles. Un patrón de interfaz de agraciado popular en iOS es desenfocar el fondo detrás del componente de interfaz de agraciado en primer plano. Por ejemplo, un cuadro de diálogo.Durante mucho tiempo, esto se puede conseguir dibujando en Android ViewA un Bitmap Luego use RenderScript u OpenGL para difuminarlo. Pero existen posibles problemas de rendimiento y es posible que no se realice de guisa uniforme en toda la plataforma. Conveniente a la aparición de nuevas API en Android 12, esta situación parece estar a punto de cambiar: RenderEffect

referencias

Mencioné en la presentación que ya podemos hacer lo que tenemos que hacer.Qué es eso RenderEffect ¿proporciónanos? A mi entender, lo más importante es el rendimiento. Uso de Android RenderNodes Cree una grado de renderización acelerada por hardware internamente. Básicamente, esto significa que su grado de interfaz de agraciado se representará en la GPU. RenderEffect Resuma este mecanismo y permítanos aplicar varios género, que se aplicarán como parte del proceso de renderizado acelerado por hardware. Esto nos traerá poco de eficiencia. En primer extensión, la GPU se utilizará para realizar el procesamiento de género, por lo que no tenemos que preocuparnos por eso. En segundo extensión, trátelo solo cuando la parte relevante de la grado de la IU no sea válida y deba retornar a dibujarse. La tercera delantera es que la API es muy sencilla de utilizar.Hacer equivalente RenderScript Requerirá más esfuerzo y código. Finalmente, vale la pena mencionar que es probable que cualquier procesamiento requerido por la CPU (en extensión de la GPU) se realice en el subproceso Render, en extensión de en el subproceso Main / UI.La única parte del proceso que puede incomunicar el hilo principal es RenderEffect Créelo y aplíquelo al diseño: todas son tareas muy triviales en términos de procesamiento.

LEER  KOOCHUWAH Teclado Inalámbrico QWERTY Español Ultra Delgado Soporta 3 Dispositivos para Cualquier Sistemas Operativos iOS/Mac OS Android y Windows 7 Colores Retroiluminado (con soporto)

ininteligible

Comencemos con cómo realizar el desenfoque.Primero creamos el desenfoque RenderEffect bu pira al método asombrado:

Los dos primeros parámetros especifican la cantidad de desenfoque en los planos horizontal y erguido, respectivamente. Cuanto decano sea el valencia, más válido será el sorpresa de desenfoque. El tercer parámetro especifica cómo se renderizará el desenfoque cerca del borde. La documentación de la API de TileMode cubre varias opciones.

Podemos usar los títulos asimétricos de los componentes de desenfoque xey para crear algunos género diferentes. Por ejemplo, esta imagen tiene títulos de desenfoque xey uniformes, establecidos en 16 respectivamente.

Sin secuestro, si usamos un desenfoque de 16 x y un desenfoque de 0 ay, obtendremos un sorpresa completamente diferente, más parecido al desenfoque de movimiento horizontal.

Una vez que creamos un RenderEffect Por ejemplo, podemos aplicarlo a la horizonte:

Ese. En efectividad. ¿Recuerda lo que mencioné anteriormente acerca de que es una API muy simple y acomodaticio de usar?Todo lo que tenemos que hacer es crear un sorpresa y luego tocar setRenderNode() alguna View Apliquelo.

Subordinación

Otra característica extremadamente poderosa setRenderNode() ¿Está en el todo? View Subordinación.Si tan solo ImageView En el diseño, solo la imagen está borrosa:

Pero asimismo podemos cambiar a lo mismo blurEffect Ejemplo de la horizonte raíz del diseño:

Si lo hace, afectará el diseño raíz y todo el diseño View La grado debajo de ella.Nota: este diseño no incluye AppBar.Eso es un sistema AppBar, Por lo que no se aplica ningún desenfoque.Pero si lo haremos AppBar En nuestro diseño, asimismo se aplicará el desenfoque.

En el código de muestra, Checkbox La deducción denominada «Pantalla completa» contiene deducción para cambiar los género solo entre la imagen y el diseño completo.

Compatible con versiones anteriores

Estas API solo existen en API 31 y superior, y parece poco probable que sean compatibles con AndroidX. Sé que esto depende de algunos ganchos agregados a la canalización de renderizado de bajo nivel. Estos ganchos simplemente no existen en las primeras versiones de la plataforma Android, por lo que la biblioteca de AndroidX no tiene golpe a la API RenderNode de bajo nivel requerida para esto.

en conclusión

Esta es una API muy poderosa, muy limpia y acomodaticio de usar. No solo eso, asimismo tiene un parada rendimiento. Al ejecutar y probar el código de muestra, no pude detectar ningún retraso al cambiar el desenfoque.

Sin secuestro, a pesar de una pequeña cantidad de complejidad adicional, la API aún puede volverse más poderosa.En el próximo artículo, exploraremos este y otro sorpresa que podemos conseguir. RenderEffect.

El código fuente de este artículo está aquí.

© 2021, Mark Allison (Mark Allison). reservados todos los derechos.

Copyright © 2021 Estilo de Android. reservados todos los derechos.

Para obtener información sobre cómo reutilizar o retornar a propagar este trabajo, visite http://blog.stylingandroid.com/license-information.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba