Cómo hacer gradiente de fondo en Android

Quiero crear un fondo degradado como en la imagen. pero no puede debido a que el centroColore se extendió para cubrir la parte inferior y superior.

¿Cómo puedo hacer un fondo como la imagen a continuación? o ¿Cómo puedo hacer un pequeño ceterColor que no se extienda? ¿Tuviste alguna idea?

Este es el fondo que quiero.

enter image description here

Este es el trasfondo que hice.

enter image description here

Este es el código en xml del botón de fondo de arriba

    

    Puede crear este aspecto de ‘medio gradiente’ utilizando una lista de capas xml para combinar las ‘bandas’ superior e inferior en un archivo. Cada banda es una forma xml.

    Vea esta respuesta anterior en SO para obtener un tutorial detallado: formas con múltiples gradientes .

    Prueba con esto:

     < ?xml version="1.0" encoding="UTF-8"?>     

    Los ejemplos visuales ayudan con este tipo de preguntas.

    Boilerplate

    Para crear un degradado, crea un archivo xml en res / dibujable. Estoy llamando al mío my_gradient_drawable.xml :

     < ?xml version="1.0" encoding="utf-8"?>    

    Lo configura en el fondo de alguna vista. Por ejemplo:

      

    tipo = “lineal”

    Establezca el angle para un tipo linear . Debe ser un múltiplo de 45 grados.

      

    enter image description here

    tipo = “radial”

    Establece el gradientRadius para un tipo radial . Usar %p significa que es un porcentaje de la dimensión más pequeña del padre.

      

    enter image description here

    type = “sweep”

    No sé por qué alguien usaría un barrido, pero lo incluyo para completarlo. No pude descifrar cómo cambiar el ángulo, así que solo estoy incluyendo una imagen.

      

    enter image description here

    centrar

    También puede cambiar el centro de los tipos de barrido o radial. Los valores son fracciones del ancho y alto. También puedes usar la notación %p .

     android:centerX="0.2" android:centerY="0.7" 

    enter image description here

    El siguiente enlace puede ayudarte http://angrytools.com/gradient/ . Esto creará fondo degradado personalizado en Android como en Photoshop.

    Primero necesitas crear un gradient.xml de la siguiente manera

         

    Luego debe mencionar el degradado anterior en el fondo del diseño. Como sigue

     < ?xml version="1.0" encoding="utf-8"?>   

    O puede usar en el código lo que sea que piense en PSD:

      private void FillCustomGradient(View v) { final View view = v; Drawable[] layers = new Drawable[1]; ShapeDrawable.ShaderFactory sf = new ShapeDrawable.ShaderFactory() { @Override public Shader resize(int width, int height) { LinearGradient lg = new LinearGradient( 0, 0, 0, view.getHeight(), new int[] { getResources().getColor(R.color.color1), // please input your color from resource for color-4 getResources().getColor(R.color.color2), getResources().getColor(R.color.color3), getResources().getColor(R.color.color4)}, new float[] { 0, 0.49f, 0.50f, 1 }, Shader.TileMode.CLAMP); return lg; } }; PaintDrawable p = new PaintDrawable(); p.setShape(new RectShape()); p.setShaderFactory(sf); p.setCornerRadii(new float[] { 5, 5, 5, 5, 0, 0, 0, 0 }); layers[0] = (Drawable) p; LayerDrawable composite = new LayerDrawable(layers); view.setBackgroundDrawable(composite); } 
     //Color.parseColor() method allow us to convert // a hexadecimal color string to an integer value (int color) int[] colors = {Color.parseColor("#008000"),Color.parseColor("#ADFF2F")}; //create a new gradient color GradientDrawable gd = new GradientDrawable( GradientDrawable.Orientation.TOP_BOTTOM, colors); gd.setCornerRadius(0f); //apply the button background to newly created drawable gradient btn.setBackground(gd); 

    Consulte desde aquí https://android–code.blogspot.in/2015/01/android-button-gradient-color.html

    ¿Por qué no crear una imagen o una imagen de 9 Parches y usar eso?

    El siguiente enlace tiene una buena guía sobre cómo hacerlo:

    http://android.amberfog.com/?p=247

    Si insistes en usar una Forma, prueba el siguiente sitio (Selecciona Android en la parte inferior izquierda): http://angrytools.com/gradient/

    Creé un degradado similar (no exacto) al que tienes en este enlace: http://angrytools.com/gradient/?0_6586f0,54_4B6CD6,2_D6D6D6&0_100,100_100&l_269

    ** usa este código en la carpeta dibujable **