2014-02-10 8 views
5

Dies ist meine Farbliste:Android: Winkel Eigenschaft von GradientDrawable programmgesteuert festlegen?

static ArrayList<Integer> colors; 
static { 
    colors = new ArrayList<Integer>(); 
    colors.add(Color.parseColor("#43CFCF")); 
    colors.add(Color.parseColor("#1C6E9B")); 
    colors.add(Color.parseColor("#AC88C0")); 
    colors.add(Color.parseColor("#EE5640")); 
    colors.add(Color.parseColor("#EFBF4D")); 
} 

Und das ist mein ziehbar Array:

static Drawable[] drawables; 
static { 
    drawables = new Drawable[5]; 
    drawables[0] = new GradientDrawable(Orientation.TL_BR, new int[]{colors.get(0), colors.get(1)}); 
    drawables[1] = new GradientDrawable(Orientation.TL_BR, new int[]{colors.get(1), colors.get(2)}); 
    drawables[2] = new GradientDrawable(Orientation.TL_BR, new int[]{colors.get(2), colors.get(3)}); 
    drawables[3] = new GradientDrawable(Orientation.TL_BR, new int[]{colors.get(3), colors.get(4)}); 
    drawables[4] = new GradientDrawable(Orientation.TL_BR, new int[]{colors.get(4), colors.get(0)}); 
} 

Nun, ich über die ziehbar bin Iterieren [] und Cross Fading b/w n-ten und (n +1) th Zeichen, mit Alpha-Animation.

Nun ist dies, wie mein Layout wie folgt aussieht:

enter image description here

Mein Layout ist rechteckig (GradientDrawable.Orientation: topLeft-Bottom), aber dieser Orientierungswert ist nicht meine Gradient Linie Einstellung (zwischen den Farben) von der oberen rechten Grenze zur unteren linken Grenze meines Rechtecks. Es würde perfekt funktionieren, wenn mein Layout von SquareShape ist.

Also ich möchte Winkel (trial-and-error) von jedem GradientDrawable programmgesteuert festlegen (kann nicht xml verwenden, da ich drawables im Code erstellen, sonst müsste ich 5 xmls erstellen, eins für jedes Zeichen) .

Auch, wie funktioniert der Wert von Android: Winkel, wenn meine Ausrichtung TL_BR ist? Ändert sich der Winkel mit der Referenz (Achse) zur TL_BR-Linie (bei 0 Radiant).

Bitte helfen!

Antwort

0

Versuchen:

drawables[0] = new GradientDrawable(GradientDrawable.Orientation.TL_BR, new int[]{colors.get(0), colors.get(1)});

Statt:

drawables[0] = new GradientDrawable(Orientation.TL_BR, new int[]{colors.get(0), colors.get(1)});

Verwandte Themen