Ich gehe durch Testbeispiel. Wenn für einen Bildhintergrund ein Farbverlauf verwendet wird, sieht der Code folgendermaßen aus
<?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>
In der obigen XML habe ich kein angle
Attribut erhalten. aber wenn ich den Wert von angle
leicht ändere , neigt sich das Muster. Kann mir jemand erklären, wie genau es funktioniert?
quelle
android:startColor="#000000"
funktioniert. Wenn wir einen Startwinkel von 90 setzen, bedeutet dies, dass die Farbe von Winkel 90-270 schwarz ist? Was ist mit dem verbleibenden Winkel (0-90)?Gibt eine Verlaufsfarbe für die Form an. Attribute:
android: angle Integer. Der Winkel für den Gradienten in Grad. 0 ist von links nach rechts, 90 ist von unten nach oben. Es muss ein Vielfaches von 45 sein. Die Standardeinstellung ist 0.
Es scheint, dass die Beschreibung in der Dokumentation Karns Antwort widerspricht?
Weitere Details finden Sie in der Dokumentation
quelle
must be a multiple of 45
linearGradient.setLocalMartix()
diese Option, um sie anschließend auf die gewünschte Größe zu skalieren.Möglicherweise möchten Sie einen diagonalen Verlauf aus Code erstellen. Es ist viel einfacher und Sie haben von dort aus viele Optionen offen. Dieser Ausschnitt hat mir geholfen
public void SetGradient(View view) { GradientDrawable gd = new GradientDrawable( GradientDrawable.Orientation.TL_BR, new int[]{0xFF141a24, 0xFF293f49, 0xFF72554c}); view.setBackground(gd); }
verfügbare Anweisungen von der GradientDrawable-Klasse
/*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, }*/
und Sie rufen die Methode von onCreate oder onCreateView in Fragment auf und übergeben die übergeordnete Ansicht (in meinem Fall).
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.dialog_view_parent, container); ... SetGradient(view); return view; }
quelle