2015-04-29 17 views
5

Ho seguito xml per GradientDrawable. Come posso cambiare l'angolo programmaticamente?GradientDrawable change angle a livello di programmazione

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <gradient android:type="linear" 
     android:angle="45" 
     android:startColor="#FF0000" 
     android:endColor="#00FF00" /> 
</shape> 
+0

GradientDrawable ha un setOrientation (GradientDrawable.Orientation orientamento) Non so se questo sarebbe adatto alle tue esigenze? –

risposta

6

GradientDrawable ha un metodo chiamato: .setOrientation(GradientDrawable.Orientation orientation), è possibile modificare l'orientamento di un gradiente con questo. È necessario gonfiare l'XML come GradientDrawable.

+0

Ha solo valori costanti molto specifici, mentre 'angle' è in realtà un float che puoi impostare in qualsiasi grado tu voglia, no? –

+0

Non credo che GradientDrawable fornisca un setAngle(), quindi non è possibile impostarlo in modo programmatico. –

+0

Sembra che l'XML abbia una restrizione che corrisponde a quella di setOrientation: https://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html#attr_android:angle "Deve essere un multiplo di 45 nel range [0, 315]. " . https://developer.android.com/reference/android/graphics/drawable/GradientDrawable.Orientation.html. Quindi sono effettivamente uguali, ma con un nome diverso per qualche ragione. –

-1

Prova:

GradientDrawable appTheme = new GradientDrawable(GradientDrawable.Orientation.BL_TR, colors); 
Problemi correlati