Componer modificadores personalizados jetpack | ProAndroidDev

Nota: Este artículo se basa en este artículo, por lo que le recomiendo que lea este artículo primero para comprender cómo funcionan las cosas.

Como se discutió en el artículo anterior, para crear un modificador personalizado, debemos proporcionar una implementación de Modificador.Elemento Interfaz. Hay un DibujarModificador Interfaz que se ampliará Modificador.Elemento por lo que también podemos usar la implementación de DibujarModificador.Digamos que queremos ver el nuestro componible en un marco como el de la imagen de abajoNo existe ningún modificador que pueda hacer esto por usted.

Entonces, ¿qué hacemos cuando algo no existe? (Realizar)

Ahora vamos a crear nuestro modificador personalizado, lo llamaremos addDecoration(), pero vayamos primero orientados a objetos y busquemos un tema extensible. Creo una interfaz de decoración que todas las decoraciones futuras pueden usar con anticipación y creo una implementación de decoración lo llamamos cuadro Esta será una clase sellada que nos permitirá seguir el principio abierto cerrado sin explosión de clase y ayudará a encapsular decoraciones en forma de marco. DibujarModificador la interfaz tiene un método abstracto divertido ContentDrawScope.draw() que debemos implementar para dibujar. Como podemos ver, dibujar() es una función de extensión de on ContentDrawScope Este es un patrón común que se ve en el código fuente de Compose. En lugar de pasar el objeto como un argumento de método, proporcionamos el método como una función de extensión, lo que nos evita llamar a los miembros con . ya que podemos acceder a ellos directamente. ContentDrawScope nos proporciona el tamaño del componible al que se aplicará el modificador y varios métodos de dibujo como: drawLine() , drawRect(), drawPath() etc. Ahora utilícelo en su implementación de DrawModifier de la siguiente manera. También llamamos a drawContent() en la implementación anterior, que se usa para el dibujo inicial del componible. Es análogo a super.onDraw() una implementación de vista personalizada y similar al algoritmo onDraw() Así que ahora dibuje el marco y péguelo en el código anterior.propósito de usoresultado

Deja una respuesta

Tu dirección de correo electrónico no será publicada.