Cómo utilizar Android GradientDrawable

Intento utilizar el GradientDrawable para establecer un degradado para algunos fondos y botones. Lamentablemente la documentación no es muy detallada.

¿Cuáles son los principales atributos para configurar el degradado? Entiendo start y endcolor pero algunos de los otros atributos podrían necesitar alguna explicación.

En el momento que usé imágenes como el fondo para los botones pero un drawable definido en XML sería mucho más agradable.

Trato de obtener un aspecto como este (Es un gradiente muy ligero): alt text http://janusz.de/~janusz/RedButton.png

Utilizar este xml como fondo a la vista de la imagen.

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:angle="90" android:startColor="#7c0000" android:endColor="#A71C1C"/> </shape> 

Eso es.

Voy a dar la misma respuesta que Praveen , pero tratará de explicar los ajustes también.

 <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:type="linear" android:angle="-90" android:startColor="#7c0000" android:endColor="#A71C1C" /> </shape> 

Androide: tipo

Hay 3 tipos de gradientes, el predeterminado y el de esta pregunta es "lineal". Los otros 2 son "radiales" y "barridos".

Androide: ángulo

Rotación en sentido contrario a las agujas del reloj del gradiente, donde 0 es | Color de inicio -> color final | (horizontalmente).

Android: startColor

El color del gradiente comienza, el inicio se define por la rotación.

Android: endColor

El color del gradiente termina con, end se define por la rotación.

Androide: centerColor

También puede haber un color entre el color de inicio y final, si se desea.

Introduzca aquí la descripción de la imagen

Código

Originalmente encontré esta pregunta porque quería hacerlo en código. Aquí es cómo hacerlo programáticamente.

 int startColor = 0xfff6ee19; // yellow int endColor = 0xff115ede; // blue GradientDrawable gradientDrawable = new GradientDrawable( GradientDrawable.Orientation.LEFT_RIGHT, new int[] {startColor, endColor}); View myView = findViewById(R.id.my_view); myView.setBackgroundDrawable(gradientDrawable); 

Las diferentes orientaciones en la imagen en la parte superior se pueden lograr cambiando la Orientation en el constructor.

XML

Como ya se respondió, esto es cómo lo haces en xml.

My_gradient_drawable.xml :

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:type="linear" android:angle="0" android:startColor="#f6ee19" android:endColor="#115ede" /> </shape> 

Se establece en el fondo de algunas vistas. Por ejemplo:

 <View android:layout_width="200dp" android:layout_height="100dp" android:background="@drawable/my_gradient_drawable"/> 

Ver también

  • Cómo hacer gradiente de fondo en android
  • Documentación de GradientDrawable
  • No se puede obtener el diseño adecuado con "fill_parent"
  • ¿Por qué los gráficos de 9 parches tienen un tamaño correcto en el emulador pero no en un teléfono?
  • No hay barra de título para Android
  • Elemento de fila personalizada de Android para ListView
  • FloatingActionButton clase no se puede instanciar
  • Android - SwipeRefreshLayout importación no encontrada
  • Marcador de posición de Android para vista dinámicamente agregada
  • Barra de acción de Sherlock: findViewById (android.R.id.home) return null en android 2.3
  • Cómo diseñar diseño lineal derecho a izquierdo
  • ¿Cómo puedo reducir la línea de referencia de widgets en Android?
  • ListView.getCheckedItemPositions no puede devolver elementos marcados en SparseBooleanArray
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.