1

Ich möchte eine benutzerdefinierte Ansicht für meine Android-App, die eine Funktion zum Ändern der Hintergrundfarbe "Farbverlauf" hat.So ändern Sie den Hintergrund Farbverlauf der Ansicht dynamisch

Etwas Ähnliches, aber die Mitte Griff bewegt werden kann, nach links und rechts unter Verwendung von Code
THIS

TO THIS


Der Haken ist, dass ich eine Funktion so etwas wie in der Ansicht will:

changeBackgroundGradient(ratio, startColour, centreColour, endColour); 

Verhältnis (mit einem Wert zwischen 0 und 1), die durch die Formel gegeben ist leftValue/rightValue die Form des Gradienten Bestimmung

startColour, centreColour und endColour wobei die Farben, von denen der Gradient besteht aus

Wie würde ich diese Funktion machen?


Grüße

Antwort

0

Sie unter Code wie dies versuchen kann, ist für mich arbeiten zu meiner Symbolleiste Farbe dynamisch

private void setGradientColor(View header) 
{ 
    String primaryColor = "#f4f3f2"; // any color code 
    String primaryDarkColor = "#000000"; 

    GradientDrawable gd = new GradientDrawable (
    GradientDrawable.Orientation.BR_TL, // check below link for this you can change this value 
    new int[] { 
     Color.parseColor(primaryColor), 
     Color.parseColor(primaryDarkColor) 
     } 
    ); 

    gd.setCornerRadius(1f); 

    header.setBackground(gd); 
} 

aktualisieren

this für mehr Optionen prüfen ändern Gradienten anwenden Farbe im Blick.

+0

arbeitet nicht für mich Dank für den Versuch, hart – Virus

+0

Erste Fehler oder was? – androidnoobdev

+0

Ich brauche eine benutzerdefinierte Ausrichtung (Form) – Virus

0

Sie können folgende Funktion versuchen. Fügen Sie diese Funktionen in Ihrer Aktivitätsdatei hinzu.

 private Drawable getGradientDrawable() 
     { 
      GradientDrawable gradient = new GradientDrawable(); 
      gradient.setGradientType(GradientDrawable.LINEAR_GRADIENT); 
      gradient.setColors(new int[]{getRandomHSVColor(), getRandomHSVColor()}); 
      return gradient; 
     } 


     protected int getRandomHSVColor(){ 
      // Generate a random hue value between 0 to 360 
      int hue = mRandom.nextInt(361); 
      // We make the color depth full 
      float saturation = 1.0f; 
      // We make a full bright color 
      float value = 1.0f; 
      // We avoid color transparency 
      int alpha = 255; 
      // Finally, generate the color 
      int color = Color.HSVToColor(alpha, new float[]{hue, saturation, value}); 
      // Return the color 
      return color; 
     } 
     // Custom method to get a lighter color 
     protected int getLighterColor(int color){ 
      float[] hsv = new float[3]; 
      Color.colorToHSV(color,hsv); 
      hsv[2] = 0.2f + 0.8f * hsv[2]; 
      return Color.HSVToColor(hsv); 
     } 

     // Custom method to get reverse color 
     protected int getReverseColor(int color){ 
      float[] hsv = new float[3]; 
      Color.RGBToHSV(
        Color.red(color), // Red value 
        Color.green(color), // Green value 
        Color.blue(color), // Blue value 
        hsv 
      ); 
      hsv[0] = (hsv[0] + 180) % 360; 
      return Color.HSVToColor(hsv); 
     } 

als diese Funktion verwenden, wie unten:

your_layout_name..setBackground (getGradientDrawable());

+0

prüfe ich bereits die Farben haben, keine Notwendigkeit zufällig zu generieren Ich möchte nur die (Verlaufskurve) ihre Form verändern Dank für den Versuch, hart – Virus

Verwandte Themen