gama - Cómo hacer gradiente de fondo en Android
gradients android background (8)
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.
Este es el trasfondo que hice.
Este es el código en xml del botón de fondo de arriba
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<gradient
android:startColor="#6586F0"
android:centerColor="#D6D6D6"
android:endColor="#4B6CD6"
android:angle="90"/>
<corners
android:radius="0dp"/>
</shape>
¿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
El siguiente enlace puede ayudarte http://angrytools.com/gradient/ . Esto creará fondo degradado personalizado en Android como en Photoshop.
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"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:type="linear"
android:angle="0"
android:startColor="#f6ee19"
android:endColor="#115ede" />
</shape>
Lo configura en el fondo de alguna vista. Por ejemplo:
<View
android:layout_width="200dp"
android:layout_height="100dp"
android:background="@drawable/my_gradient_drawable"/>
tipo = "lineal"
Establezca el angle
para un tipo linear
. Debe ser un múltiplo de 45 grados.
<gradient
android:type="linear"
android:angle="0"
android:startColor="#f6ee19"
android:endColor="#115ede" />
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.
<gradient
android:type="radial"
android:gradientRadius="10%p"
android:startColor="#f6ee19"
android:endColor="#115ede" />
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.
<gradient
android:type="sweep"
android:startColor="#f6ee19"
android:endColor="#115ede" />
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"
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);
}
Primero necesitas crear un gradient.xml de la siguiente manera
<shape>
<gradient android:angle="270" android:endColor="#181818" android:startColor="#616161" />
<stroke android:width="1dp" android:color="#343434" />
</shape>
Luego debe mencionar el degradado anterior en el fondo del diseño. Como sigue
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/gradient"
>
</LinearLayout>
Prueba con esto:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<gradient
android:angle="90"
android:centerColor="#555994"
android:endColor="#b5b6d2"
android:startColor="#555994"
android:type="linear" />
<corners
android:radius="0dp"/>
</shape>
Puede crear este aspecto de ''medio gradiente'' utilizando una Layer-List 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 .
//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