Botón jack con función de carga (LoadingButton Android)
La carga circular consiste en usar setCompoundDrawables para colocar el drawablewStart de TextView y establecer la gravedad del texto en el centro.
El resultado es así:
El efecto real parece ser diferente de lo que imaginamos. Resulta que no establecimos la posición del objeto dibujable al principio.
Entonces, ¿cómo colocamos el objeto dibujable en la pantalla? ¿Qué pasa con la posición central al lado del texto?
En el boceto, se ve así:
La parte central es el desplazamiento que queremos, y podemos obtenerlo calculando,
Y el getWidth () El parámetro debe estar disponible después del diseño,
por lo que solo necesitamos completar el desplazamiento del objeto dibujable en onDraw.
Una cosa a la que debemos prestar especial atención es que debemos guardar los límites (tamaño y posición) del dibujable como referencia de antemano, porque si compensamos los límites del dibujable original, entonces se usará cada vez que onDraw() se mueva continuamente hacia la derecha.
Por ejemplo, el primer onDraw() está compensado en 5 y el segundo onDraw() está compensado en 5 según el 5 original.
Esto parece un poco abrupto, como se puede ver por el efecto del texto y el elemento de diseño centrados juntos.
Después de ver el código fuente de TextView, descubrí que
Después de ver el código fuente de TextView, descubrí que después de setCompoundDrawables, el contenido dibujable en los lados izquierdo y derecho de TextView requiere El espacio se dividirá primero,
y luego se centrará según el espacio restante,
de modo que el resultado final obtenido mediante el desplazamiento sea que el texto y el contenido dibujable estén centrados juntos.
Para colocar el texto en el medio de todo el diseño, podemos traducir el lienzo para lograr el efecto de centrar el texto.
Lo más importante es usar getLayoutParams ().width y getLayoutParams().height Cambia el tamaño del diseño
. altura,
Al comenzar a reducir, primero configure el texto en un carácter vacío, establezca drawablePadding en 0 y luego inicie la animación de reducción. Puede probar el método específico
Este artículo. presenta la implementación de la banda La idea general de cargar el botón de efecto, pero si realmente desea usar texto, no es tan simple como se describe. También debe considerar varios detalles y factores. (Mi cabello se ha vuelto menos ~)
Finalmente, puedes ver el efecto de implementación completo. Se cargó en github (LoadingButton) y se agregaron algunas funciones (originalmente solo quería implementar un Loading). al lado de un botón Como resultado, cuantas más funciones escribí, más se volvió así, sonrisa irónica~)
Los amigos que estén interesados pueden dar una estrella, y el efecto es que puedes usar. este botón para lograr el efecto deseado. Soy un novato y esta es la primera vez que escribo este tipo de artículo. Tengan paciencia.
Esta es la primera vez que escribo un artículo de este tipo.