Sweep Gradient: Qué es y sus ejemplos

Me encontré con Sweep Gradient en Android y estaba intrigado si podía darme un mejor control sobre el espaciamiento de color y las transiciones. Hicimos una búsqueda rápida y encontramos casi nada sobre él !!

Las pocas referencias que encontré (y que no cumplen con los criterios de acercarse ni siquiera a explicarlo de manera adecuada o exhaustiva) se enumeran a continuación:

  • Sweep Gradient en Android (que sólo menciona comandos para usar – que es de casi ningún valor desde ahora mismo no tengo ni idea de lo que Sweep Gradient es!)
  • Android create pie dount con gradiente y preguntas similares (la mayoría de ellos se refieren a los anillos – para el cual se utiliza el barrido)
  • Gradientes en Photoshop (que habla de gradiente angular que creo que podría estar relacionado con el gradiente de barrido)
  • Java Android programa para demostrar Sweep gradiente en Android (de nuevo funciona con los anillos)

Así que eso es casi. Otros son similares o despectivamente breve.


Pocas conclusiones que he dibujado hasta ahora (y tal vez están equivocados):

  • Sweep Gradient se utilizan principalmente para los anillos
  • Se utilizan para las transacciones similares como el barrido angular (no seguro sobre éste) que habla de la transacción similar al barrido de la mano de un reloj.
  • Muy similar a los gradientes lineales . La única cosa que puedo pensar alrededor para una diferencia entre ellos es para el uso (como los anillos).
  • Sweep se ocupa de Center (de nuevo una fuerte referencia hacia la teoría del reloj)

Sé que la gente puede considerar esto como realmente no una cuestión técnica. Pero para mí trabajar con Sweep Gradients o al menos saber lo que significan, la descripción tiene que venir de alguna parte. Y por favor, proporcione las respuestas con algunos ejemplos de uso de barrido en casos distintos de los anillos.

El gradiente de palabras en este contexto (como en muchos editores gráficos, incluido Photoshop) se refiere a una transición suave entre varios colores , en lugar de utilizar sólo un solo color para rellenar un área.

La API de Android proporciona tres gradientes diferentes: LinearGradient , RadialGradient y SweepGradient .

Estas son todas las subclases de Shader . Puede establecer un Shader en un objeto Paint y, a continuación, dibujar cualquier forma con ese Paint . La forma estará llena de colores y transiciones entre ellos, según el tipo de gradiente.

Por ejemplo:

Imagen de salida del código de abajo

Esta imagen se puede producir con este código:

 Bitmap test = Bitmap.createBitmap(640, 200, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(test); { // draw a dark gray background Paint backgroundPaint = new Paint(); backgroundPaint.setARGB(255, 24, 24, 24); c.drawPaint(backgroundPaint); } Path heart = new Path(); { // prepare a heart shape heart.moveTo(110, 175); heart.lineTo(10, 75); RectF leftCircle = new RectF(10, 25, 110, 125); heart.arcTo(leftCircle, 180, 180); RectF rightCircle = new RectF(110, 25, 210, 125); heart.arcTo(rightCircle, 180, 180); heart.close(); } Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setTextSize(18f); int[] colors = { 0xFFFFFF88, // yellow 0xFF0088FF, // blue 0xFF000000, // black 0xFFFFFF88 // yellow }; float[] positions = {0.0f, 0.33f, 0.66f, 1.0f}; { // draw the left heart SweepGradient sweepGradient; { // initialize the sweep gradient sweepGradient = new SweepGradient(50, 50, colors, positions); paint.setShader(sweepGradient); } c.drawPath(heart, paint); c.drawText("SweepGradient", 50, 190, paint); } { // draw the middle heart LinearGradient linearGradient; { // initialize a linear gradient linearGradient = new LinearGradient(250, 0, 350, 150, colors, positions, Shader.TileMode.CLAMP); paint.setShader(linearGradient); } heart.offset(210, 0); // move the heart shape to the middle c.drawPath(heart, paint); c.drawText("LinearGradient", 260, 190, paint); } { // draw the right heart RadialGradient radialGradient; { // initialize a linear gradient radialGradient = new RadialGradient(550, 50, 100, colors, positions, Shader.TileMode.CLAMP); paint.setShader(radialGradient); } heart.offset(210, 0); // move the heart shape to the right c.drawPath(heart, paint); c.drawText("RadialGradient", 470, 190, paint); } { // save the bitmap String filename = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "test.png"; FileOutputStream out = null; try { out = new FileOutputStream(filename); test.compress(Bitmap.CompressFormat.PNG, 90, out); } catch (Exception e) { } finally { try { out.close(); } catch (Exception e) { } } } 
  • Así que el LinearGradient es Linear Gradient en Photoshop, RadialGradient es Radial Gradient y SweepGradient es Angular Gradient , como se describe en su tercera referencia. Recomiendo probar estos en un editor de imágenes primero (todos los editores de imagen populares tienen estas herramientas), y rápidamente obtendrá la idea de cómo funcionan.

  • Usted puede utilizar estos gradientes en un XML dibujable también (como en su 4 ª referencia), con una limitación de utilizar 3 colores máximo.

  • En un SweepGradient , al proporcionar posiciones, el punto 0.0 es a las 3, en sentido horario (siendo 0.25 a las 6, 0.5 a las 9, 0.75 a las 12 y 1.0 a las 3 o 'reloj).

Acerca de sus conclusiones:

  • Como puedes ver, cualquier forma se puede dibujar con un SweepGradient , no sólo un anillo. Incluso las etiquetas se dibujan con los gradientes en el ejemplo anterior.
  • Sí, la analogía de la mano del reloj es inmejorable.
  • En uso, SweepGradient es muy similar a LinearGradient , excepto que no es necesario proporcionar un TileMode , ya que no se puede ejecutar fuera de los límites de su lista de colores.
  • Sí, debe proporcionar las coordenadas del punto central.

Espero que esto se aclare.

  • Crear programaticamente fondo textview desde drawable en android
  • Gradiente de pan de jengibre
  • Gradiente de Android en Lollipop no funciona. - API 21
  • Android gradle uploadArchives al construir
  • Gradle plugin 'com.android.library' no busca en los depósitos personalizados de maven
  • Cómo subir varios archivos de Android (uno para cada sabor)
  • Gradiente circular en android
  • Cómo hacer gradiente de fondo en android
  • Cómo hacer un doble degradado con XML (iphone like)
  • Android crear iphone-como Gradiente
  • Problema con ComposeShader en Android 4.1.1
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.