Aplicaciones Android

RenderEffect-Reduce saturación-estilo Android

En el momento de escribir este artículo, en marzo de 2021, la lectura preliminar 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 beneficiario global en iOS es desenfocar el fondo detrás del componente de interfaz de beneficiario en primer plano. Por ejemplo, un cuadro de diálogo.Durante mucho tiempo, esto se puede alcanzar 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 forma uniforme en toda la plataforma. Adecuado a la aparición de nuevas API en Android 12, esta situación parece estar a punto de cambiar: RenderEffect

En el artículo aludido, estudiamos cómo aplicar el objeto de desenfoque a View Clasificación.Sin retención, este no es el único objeto que podemos alcanzar. RenderEffect -hay mas. En este artículo, exploraremos otra reducción de la saturación del objeto. Pero más allá de eso, todavía estudiaremos cómo aplicar múltiples mercancía a la vez.

Desaturación

En marzo de 2013, publiqué un artículo que mostraba cómo usar ColorMatrixColorFilter. Estos son los días previos a nuestra API de sombreado incorporada. View. Estos solo llegaron en las piruletas anunciadas en 2014. ColorMatrixColorFilter() Sigue siendo una aparejo poderosa para cambiar dinámicamente los colores de imágenes y medios gráficos.

RenderEffect Creación de soporte RenderEffectAlmohadilla de ColorFilter Nos permite aplicar estos mercancía como parte del proceso de renderizado acelerado por hardware.

LEER  LiveData en el desarrollo de Android.Como desarrollador de Android, ¿alguna vez... | por Mingkang Zhou | febrero de 2022

Para desaturar la imagen, primero creamos un ColourMatrix Objeto y ajuste el nivel de saturación.Lo envolvemos en ColorMatricColorFilter Puede estilarse como RenderEffect Método de taller:

Aplicamos este objeto exactamente de la misma forma que el objeto de desenfoque:

Ahora, podemos ajustar la saturación de la imagen. La saturación aquí es 1, con información de color completa:

Aquí hay 0: se eliminan todos los colores, dejando una imagen en escalera de grises:

Esclavitud

Como mencioné en el artículo aludido, aunque la API es un poco más completa, podemos obtener una longevo funcionalidad. Un buen ejemplo es vincular múltiples mercancía.Nuestro método creador de mercancía de desenfoque y desaturación produce RenderEffect Ejemplo. Sin retención, estos tienen mercancía muy diferentes.

Podemos encadenar múltiples RenderEffects juntos:

Esto createChainEffect() El método en sí mismo volverá RenderEffect Instancia, podemos aplicarlo a View Exactamente lo mismo que hicimos antiguamente.Ahora, podemos usar el desenfoque y la desaturación como uno RenderEffect:

Junto a mencionar que el orden de los medios de la dependencia puede ser importante. En este caso, la canalización realizará primero la desaturación y luego el desenfoque. Si revertimos estos resultados, los resultados serán sutilmente diferentes. Dependiendo del objeto exacto superpuesto, estas diferencias pueden volverse más pronunciadas.

Sin retención, la dependencia RenderEffect Se puede aplicar a View Estructura jerárquica, como hicimos para el objeto de desenfoque:

en conclusión

Espero que a partir de estos ejemplos de implementación muy simples, podamos ver claramente las funciones que RenderEffect puede alcanzar. Encima, la capacidad de vincularlos requiere solo una pequeña cantidad de trabajo adicional para aumentar significativamente la funcionalidad. De hecho, una sarta extra de código.

Hemos introducido algunos conocimientos básicos que podemos utilizar. RenderEffect. Sospecho que volveré a examinar esta pregunta y ofreceré otros ejemplos interesantes en el futuro. Si desea verlos, deje un comentario o envíeme un correo electrónico para hacérmelo asimilar; póngase en contacto con los datos aquí.

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 difundir 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