¿Puede el color central ser reposicionado en un androide radial-gradiente dibujable?

Es fácil lograr el siguiente gradiente a la izquierda usando colores estándar de inicio, centro y final en un gradiente radial con androide en el que el inicio = amarillo, centro = púrpura y final = azul. Sin embargo, el círculo a la derecha requiere el reposicionamiento del color central. es posible?

Introduzca aquí la descripción de la imagen

El resultado a la izquierda se puede reproducir con algo como:

<shape android:shape="oval"> <gradient android:endColor="#0000ff" android:gradientRadius="my_radius" android:centerColor="#770077" android:startColor="#00ffff" android:type="radial"/> </shape> 

Me pregunto si puedo cambiar el color del centro para lograr el gradiente a la derecha. Creo que la respuesta es no, pero me gustaría ver si alguien ha descubierto una manera en la que hacer esto. ¡Gracias!

Lamentablemente, esto no se puede lograr a través de declaraciones XML, sin embargo, es posible hacer a través de código.

Aquí hay un ejemplo de código rápido:

 public class MyDrawing extends View { private Paint mPaint; public MyDrawing(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } public MyDrawing(Context context, AttributeSet attrs) { super(context, attrs); init(); } public MyDrawing(Context context) { super(context); init(); } private void init() { int [] colors = new int[] { 0xff0000ff, 0xff00ff00, 0xffff0000 }; float [] positions = new float[] { 0.4f, 0.7f, 0.9f }; RadialGradient gradient = new RadialGradient(50, 50, 50, colors, positions, TileMode.CLAMP); mPaint = new Paint(); mPaint.setDither(true); mPaint.setShader(gradient); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(circleX, circleY, circleRadius, mPaint); } } 

Dos cosas que usted debe prestar atención a:

  1. En la matriz de colores, debe especificar el alfabeto (el primero en caracteres). En mi ejemplo, especificé ambos como "ff", significando ninguna transparencia. Si no especifica el alfa, el valor predeterminado será 0.

  2. La matriz de posiciones especifica el posicionamiento o fuerza de cada color en el gradiente. Juega con esto para lograr el resultado que estás buscando.

Espero que esto ayude 🙂

  • Gradiente de pan de jengibre
  • Cómo subir varios archivos de Android (uno para cada sabor)
  • Cómo hacer un doble degradado con XML (iphone like)
  • Android dibujable con fondo y degradado a la izquierda
  • Publica la biblioteca de android en jcenter: gradle bintrayUpload no encuentra bibliotecas
  • Cómo hacer gradiente de fondo en android
  • Android gradle uploadArchives al construir
  • Uso de un gradienteDibujable con más de tres colores
  • ¿Cómo incluir múltiples Repositorios en build.gradle?
  • Gradle para Android, AARs y dependencias condicionales
  • Cómo obtener de forma programática una lista de colores de un degradado en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.