2011-12-12 13 views
11

Próbuję odtworzyć następujący gradient programowo.Utwórz programowo gradient radialny

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <gradient 
     android:startColor="@color/startcolor" 
     android:centerColor="#343434" 
     android:endColor="#00000000" 
     android:type="radial" 
     android:gradientRadius="140" 
     android:centerY="45%" 
    /> 
    <corners android:radius="0dp" /> 
</shape> 

Jak ustawić programowo parametr? Dzięki

 android:centerY="45%" 

Odpowiedz

24

http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html

Aby ustawić ten konkretny parametr (jestem przyjmując wartość centerx jak nie określono jeden):

yourGradientDrawable.setGradientCenter(1.0f, 0.45f); 

więc do stworzenia powyższych gradientu (z wyjątkiem w różnych kolorach) programowo:

GradientDrawable g = new GradientDrawable(Orientation.TL_BR, new int[] { getResources().getColor(R.color.startcolor), Color.rgb(255, 0, 0), Color.BLUE }); 
g.setGradientType(GradientDrawable.RADIAL_GRADIENT); 
g.setGradientRadius(140.0f); 
g.setGradientCenter(0.0f, 0.45f); 

Uwaga: Orientacja jest ignorowana f lub gradient radialny, ale jest potrzebny konstruktorowi, który przyjmuje kolory.

+2

To nie działa dla mnie, nie ma radial gradiant jsut zwykłego białego tła. – Poutrathor

+1

Nie ma potrzeby wywoływania '' 'setGradientCenter''', jeśli chcesz użyć domyślnej wartości centrum –