studio programacion pintura pintar para móviles desarrollo curso como combinar colores aprender aplicaciones android colors

android - programacion - cómo mezclar dos colores con diferente porcentaje



manual de programacion android pdf (1)

No dijiste claramente por qué el resultado es decepcionante, así que supongo que significa que la transición de color que recibes no es tan buena como esperabas.

Tu enfoque general parece correcto, tal vez solo estás perdiendo algunos detalles, así que lo reescribiré en términos diferentes. Deje que color1 y color2 sean triples (R, G, B) donde cada uno de R, G, B está dentro del rango [0, 1]. Si ese no es el caso, divida por 255 si ese es el límite en su situación, y luego vuelva a multiplicar por 255. Seamos el número de pasos para la transición de color1 a color2 , aquí color1 en s el marco inicial con color1 pero no el marco final con color2 . En el paso k , tiene un valor p tal que p = (s - k)/s . Con p obtiene el color en el fotograma k haciendo color = p * color1 + (1 - p) * color2 . Ahora es posible que desee multiplicar el color por 255.

Un pseudocódigo para esta descripción es:

color1 = (R1, G1, B1) color2 = (R2, G2, B2) s = N for k = 0 to s: # s + 1 steps, according to the description p = (s - k) / s color = (p * color1) + ((1 - p) * color2)

Tenga en cuenta que en k = 0 solo tiene color1 , y en k = s solo obtiene color2 . Como ve, es similar a lo que publicó con más detalles. Tenga en cuenta que aquí estoy multiplicando cada uno de R, G, B por p .

Aquí hay algunos ejemplos que pasan de un color amarillo a uno azul, steps = 10, 25, 500 respectivamente.

tengo dos colores y un componente de Vista. el color uno es fondo de mi componente. Cambiaré mi color de fondo para colorear dos. pero no de repente. cambiar una animación similar. por ejemplo:

segundo 1: 90% color1 + 10% color2 segundo 1: 80% color1 + 20% color2 ...... segundo 1: 10% color1 + 90% color2 segundo 1: 0% color1 + 100% color2

por supuesto que lo intento:

percent=100; while (percent>=0) { color = (color1*precent)+(color2*(100-percent)); percent-=10; }

pero esta es una mala idea. El resultado es decepcionante. hay alguna solución para este objetivo? Gracias.