In meiner Anwendung muss ich die Hintergrundfarbe einer Schaltfläche als Reaktion auf bestimmte Ereignisse ändern. Das funktioniert gut, indem eine ziehbar zu schaffen, das Setzen von seiner Farbe und die Verwendung dieser ziehbar wie die Schaltfläche Hintergrund:Wie kann ich eine Alpha-Maske auf ein Android-Zeichen anwenden?
ShapeDrawable drawable = new ShapeDrawable(roundRectShape);
drawable.getPaint().setColor(color);
b.setBackground(drawable);
Nun, ich mag eine Alpha-Maske auf diesen ziehbar zu überlagern, einen „gestreiften“ Knopf zu schaffen. Hier ist, wie es aus wie für eine blaue und eine schwarze Taste aussehen sollte (vorausgesetzt, Weiß als Hintergrundfarbe, aber diese Abschnitte sollten wirklich 100% transparent sein):
Ich habe diese Alpha-Maske in Inkscape und erfolgreich als Vektor-Asset importiert. Ich muss es vielleicht in eine Bitmap umwandeln, aber ich bin mir nicht sicher.
Ich habe eine Reihe von Artikeln und SO-Fragen gelesen, die PorterDuff-Matrizen erwähnen, die ich anwenden konnte, aber ich konnte sie nicht in mein aktuelles Problem übersetzen.
Wer weiß, wie man das macht?
Hier ist eine weitere Visualisierung, die die Dinge hoffentlich klarer macht. Die Hintergrundfarbe von der übergeordneten Ansicht des Knopfes ist blassrosa hier, und die Knopfleiste ist rot umrandet (aber eigentlich sollte im Endprodukt nicht sichtbar sein):
ich nicht ganz Ihre Erklärung folgen. Können Sie zur besseren Übersichtlichkeit ein Bild einer Schaltfläche so erstellen, wie es auf einem Gerät aussehen würde? – Karakuri
@Karakuri, ich habe ein weiteres Beispiel hinzugefügt, das den Rahmen der Schaltfläche umreißt und den Hintergrund nicht weiß macht. Kann das das gewünschte Ergebnis erklären? Es ist immer noch in Inkscape gespottet, da ich noch herausfinden muss, wie man das in Android macht :) – Alice
Nur ein Gedanke, aber es könnte einfacher sein, eine eigene View-Unterklasse zu erstellen, die eine Farbe annimmt und die 6 Balken selbst mit zeichnet ein 'Paint'-Objekt.Ein schmutziges kleines Geheimnis über Android Views: Jede Ansicht kann anklickbar gemacht werden (so dass du eigentlich keinen 'Button' benötigst ... außer du willst den Text auch dort, dann brauchst du vielleicht einen' Button'). – Karakuri