In Androidentwicklung verwenden wir häufig benutzerdefinierte zeichnbare Stile, Setzen von Formstilen oder Selektorauswahl in Drawables. Manchmal, wenn in einem XML mehrere zeichnbare Stile benötigt werden und die darin enthaltenen Stile nur geringfügig unterschiedlich sind, werden mehrere zeichnbare Stile angepasst, die aufgebläht erscheinen.
Die Verwendung von statelistisch geschadbarem und gradientenentwickelbarem
Java -Implementierungsauswahl:
/** * Hintergrundauswahl einstellen * * @param pressedDraw * @param normaldraw * @return */privat statelistDrawable getSelector (Drawable NormalDraw, Drawable PressedDraw) {statelistDrawable statelistDrawable = new statelistDrawable (); statelistDrawable.addState (new int [] {android.r.attr.state_selected}, gepresstes DDRAW); statelistDrawable.addState (new int [] {}, normaldraw); statelistDrawable zurückgeben;}Dies soll einen Selektor im Code erstellen. Der erstellte Typ ist statelistDrawierbar. Sie können den Selektor über addState () Status hinzufügen. Es ist jedoch zu beachten, dass beim Hinzufügen eines Zustands eine Bestellung vorliegt. StatelistDrawable wird zunächst den neuesten hinzugefügten Status ausführen. Wenn es nicht der Staat ist, führen Sie den folgenden Zustand aus. Wenn ein groß angelegter Staat vor Ort platziert wird, führt er den groß angelegten Zustand direkt aus, ohne den nachfolgenden Zustand auszuführen. Fügen Sie beim Hinzufügen des Zustands das " -" -Schild vor dem Zustand hinzu, was darauf hinweist, dass dieser Zustand falsch ist (z.
/** * Setzen Sie Form * * @param radius * @param fillcolor * @param width * @param strokecolor * @return */private gradientDrawable getDrawable (int radius, int fillcolor, int width, int strokecolor) {gradiententrawable gradientDrawable = new gradientDrawable (); GradientDrawable.SetCornerradius (Radius); GradientDrawable.setColor (FillColor); GradientDrawable.SetStroke (Breite, Strokecolor); return gradientDrawable;}Erstellen Sie im Code dynamisch Gradiententwürfe, was die Funktion des Formstils im zeichnischen Stil realisieren kann. SetColor entspricht der Füllfarbe in Form. SetCornerradius soll den Radian der abgerundeten Ecke in Form setzen. Wenn Sie den Radian einer einzelnen Ecke einstellen möchten, können Sie setCornerRadii () verwenden, um den Radian jeder Ecke einzustellen. SetStroke () ist ein Schlaganfall, und Sie müssen die Breite des Hubs und die Farbe der Kante füllen.
Schließlich einfache Verwendung:
GradientDrawable Normal = getDrawable (0, Farbe.White, 1, getResources (). drücken); textView.Setbackground (Selektor);
Zusammenfassen
Das obige ist der vom Editor eingeführte Java -Code, um die Hintergrundfarbe des Selektors in verschiedenen Zuständen festzulegen. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!