2012-08-28 24 views
53

Przechodzę przez przykład testowy. Gdzie przez pewien obraz tła są przy użyciu gradientu, kod wygląda takatrybut kąta w gradiencie androida

<?xml version="1.0" encoding="utf-8"?> 


    <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <gradient 
     android:startColor="#ff0000" 
     android:centerColor="#00ff00" 
     android:endColor="#0000ff" 
     android:angle="180"/> 
    <corners android:radius="5dp" /> 
    </shape> 

w powyższym xml nie dostać atrybut angle. ale gdy zmienię wartość angle, lekko nachylone są wzory. Czy ktoś może mi wyjaśnić, jak dokładnie to działa ........... :)

Odpowiedz

120

Gradient w zasadzie reprezentuje zmienność w przestrzeni (w kierunku) dowolnej wielkości. Kolor reprezentuje zmienność intensywności koloru w kierunku przedstawionym przez kąt. Oto niektóre diagramy przedstawiające tę koncepcję:
enter image description here

Tutaj na rysunku pokazano zmianę koloru w kierunku poziomym (kąt jest ustawiony na 0). Kod
XML:

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <gradient 
     android:startColor="#000000" 
     android:angle="0"/> 
    </shape> 

enter image description here

W tym rysunek pokazuje zmianę barwy w kierunku poziomym (kąt jest 90).
kod XML:

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<gradient 
    android:startColor="#000000" 
    android:angle="90"/> 
</shape> 

Można również użyć innego koloru jako początek, środkowych i końcowych kolorach. Dołączony kod zawiera wszystkie te elementy.

+17

Dzięki za odpowiedź Karn, ale jedno odkryłem, że mogę dać tylko wielokrotności 45 w atrybucie kątem, inne niż to, że wywala czyli 20, 20, 50 itd –

+0

Istnieje wiele sposobów, w których nachylenie może być wyrażone. Tutaj faktycznie używamy gradientu liniowego (nachylenie wzdłuż nachylenia prostej liniowej m = (y-y1)/(x-x1)). Kiedy jest wielokrotnością 45, wariacja x i y jest taka sama. Może być przyczyną tego powodu. Nie wiem zbyt wiele. – karn

+4

Doskonałe wykorzystanie ilustracji wyjaśniającej to! – Ralphleon

3

Umożliwia określenie koloru gradientu kształtu. Atrybuty: :

Android: kąt Integer. Kąt nachylenia w stopniach. 0 znajduje się od lewej do prawej, 90 od dołu do góry. Musi to być wielokrotność liczby 45. Wartość domyślna to 0.

Wygląda na to, że opis w dokumentacji jest sprzeczny z odpowiedzią Karna?

można znaleźć więcej szczegółów w documentation

4

może chcesz stworzyć przekątnej gradient od kodu. To znacznie łatwiejsze i masz wiele otwartych opcji. Ten fragment pomógł mi

public void SetGradient(View view) { 
     GradientDrawable gd = new GradientDrawable(
       GradientDrawable.Orientation.TL_BR, 
       new int[]{0xFF141a24, 0xFF293f49, 0xFF72554c}); 
     view.setBackground(gd); 
    } 

dostępne kierunki z GradientDrawable klasy

/*public enum Orientation { 
     *//** draw the gradient from the top to the bottom *//* 
     TOP_BOTTOM, 
     *//** draw the gradient from the top-right to the bottom-left *//* 
     TR_BL, 
     *//** draw the gradient from the right to the left *//* 
     RIGHT_LEFT, 
     *//** draw the gradient from the bottom-right to the top-left *//* 
     BR_TL, 
     *//** draw the gradient from the bottom to the top *//* 
     BOTTOM_TOP, 
     *//** draw the gradient from the bottom-left to the top-right *//* 
     BL_TR, 
     *//** draw the gradient from the left to the right *//* 
     LEFT_RIGHT, 
     *//** draw the gradient from the top-left to the bottom-right *//* 
     TL_BR, 
    }*/ 

i wywołać metodę z onCreate lub onCreateView fragmentu i przechodzą w widoku nadrzędnego (w moim przypadku).

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.dialog_view_parent, container);   
     ... 

     SetGradient(view); 

     return view; 
    } 
Powiązane problemy