wake-up-neo.net

So erstellen Sie einen Verlaufshintergrund in android

Ich möchte einen Verlaufshintergrund erstellen, bei dem sich der Verlauf in der oberen Hälfte befindet und in der unteren Hälfte eine Volltonfarbe vorhanden ist, wie in der folgenden Abbildung dargestellt:

Ich kann nicht, weil sich das centerColor ausbreitet, um den Boden und das Oberteil zu bedecken.

In the gradient for the button, a white horizontal line fades over blue toward the top and botton.

Wie kann ich einen Hintergrund wie das erste Bild erstellen? Wie kann ich kleine centerColor machen, die sich nicht ausbreiten?

Dies ist der Code in XML der obigen Schaltfläche "Hintergrund".

<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>
188
kongkea

Sie können diesen "Halbverlauf" -Look erstellen, indem Sie eine xml Ebenenliste verwenden, um die oberen und unteren "Bänder" in einer Datei zu kombinieren. Jedes Band ist eine XML-Form.

In dieser vorherigen Antwort auf SO finden Sie ein detailliertes Tutorial: Formen mit mehreren Verläufen .

54
Gunnar Karlsson

Versuchen Sie es mit diesem:

<?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>
281
Pratik Sharma

Visuelle Beispiele helfen bei solchen Fragen.

Boilerplate

Um einen Farbverlauf zu erstellen, erstellen Sie eine XML-Datei in res/drawable. Ich rufe meine my_gradient_drawable.xml an:

<?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>

Sie stellen es auf den Hintergrund einer Ansicht ein. Zum Beispiel:

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

typ = "linear"

Stellen Sie angle für den Typ linear ein. Es muss ein Vielfaches von 45 Grad sein.

<gradient
    Android:type="linear"
    Android:angle="0"
    Android:startColor="#f6ee19"
    Android:endColor="#115ede" />

enter image description here

typ = "radial"

Stellen Sie gradientRadius für den Typ radial ein. Die Verwendung von %p bedeutet, dass es sich um einen Prozentsatz der kleinsten Dimension des übergeordneten Elements handelt.

<gradient
    Android:type="radial"
    Android:gradientRadius="10%p"
    Android:startColor="#f6ee19"
    Android:endColor="#115ede" />

enter image description here

type = "sweep"

Ich weiß nicht, warum jemand einen Sweep verwenden würde, aber der Vollständigkeit halber schließe ich ihn ein. Ich konnte nicht herausfinden, wie ich den Blickwinkel ändern soll, daher füge ich nur ein Bild hinzu.

<gradient
    Android:type="sweep"
    Android:startColor="#f6ee19"
    Android:endColor="#115ede" />

enter image description here

center

Sie können auch die Mitte der Sweep- oder Radialtypen ändern. Die Werte sind Bruchteile von Breite und Höhe. Sie können auch die %p -Notation verwenden.

Android:centerX="0.2"
Android:centerY="0.7"

enter image description here

243
Suragch

Der folgende Link kann Ihnen helfen http://angrytools.com/gradient/ . Dadurch wird ein benutzerdefinierter Verlaufshintergrund in Android wie in Photoshop erstellt.

46
Hits

Zuerst müssen Sie eine gradient.xml wie folgt erstellen

<shape>
    <gradient Android:angle="270" Android:endColor="#181818" Android:startColor="#616161" />

    <stroke Android:width="1dp" Android:color="#343434" />
</shape>

Dann müssen Sie den obigen Farbverlauf im Hintergrund des Layouts erwähnen. Wie folgt

<?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>
28
Harish

Oder du kannst in Code alles verwenden, was dir in PSD einfällt:

    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);
    }
21
miroslavign
//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);

Verweisen Sie von hier https://Android--code.blogspot.in/2015/01/Android-button-gradient-color.html

6

** Verwenden Sie diesen Code in Zeichenordner **

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="#3f5063"
    />

<corners Android:bottomRightRadius="0dp" Android:bottomLeftRadius="30dp" Android:topLeftRadius="30dp" Android:topRightRadius="0dp" />
<padding Android:left="2dp" Android:top="2dp" Android:right="2dp" Android:bottom="2dp" />
<gradient
    Android:startColor="#2ea4e7"
    Android:centerColor="#015664"

    Android:endColor="#636969"
    Android:angle="45"
    >

</gradient>
<stroke Android:color="#000000"

    Android:width="1dp">

</stroke>
1
Muthu Krishnan

Warum nicht ein Image oder ein 9 Patch Image erstellen und dieses verwenden?

Unter dem folgenden Link finden Sie eine nützliche Anleitung:

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

Wenn Sie darauf bestehen, eine Form zu verwenden, probieren Sie die folgende Site aus (Wählen Sie unten links Android aus): http://angrytools.com/gradient/

Ich habe einen ähnlichen Farbverlauf (nicht exakt) wie unter folgendem Link erstellt: http://angrytools.com/gradient/?0_6586f0,54_4B6CD6,2_D6D6D6&0_100,100_100&l_269

1
Feras Arabiat