Ich habe eine Aktivität, in der es 3 Checkboxen in verschiedenen Ansichten gibt. Diese Checkboxen sollen eine Farbe aufnehmen.
In der DrawingView-Klasse muss ich auf meiner Leinwand mit der aktivierten Farbe zeichnen. Was ich möchte, ist, einen Integer-Wert von der Aktivität an die View-Klasse zu übergeben und die Farbe von Paint entsprechend einzustellen. Ich benutze Getter und Setter, aber ich bekomme schwarze Farbe. Ich nehme an, das liegt daran, dass die Farbe im Konstruktor selbst gesetzt wird und sich nicht ändert, wenn ich eine Box ankreuze.
Bitte dies für Updates im folgenden Code
Code:
MainActivity : Hier wird die Farbe / das Kontrollkästchen ausgewählt. Und die Zeichnung muss im Layout dieser Aktivität selbst gemacht werden.
%Vor%Klassenansicht:
%Vor%Ich möchte nicht unbedingt den exakt gleichen Code verwenden. Ich möchte nur die Farbe ändern, wenn ein Kontrollkästchen aktiviert ist, um eine Bildansicht zu zeichnen. Jeder andere Ansatz ist willkommen.
In der MainActivity erstellen Sie eine DrawingView
, die keine Beziehung zu Ihrer angezeigten Bildansicht hat. Wenn Sie also die Farbe ändern, ändern Sie nicht die Farbe der angezeigten Bildansicht, sondern die nicht verbundene DrawingView
. Die Bildansicht hat nie eine neue Farbe und ist immer schwarz.
Hier ist ein Video einer kleinen funktionierenden App, die auf Ihrem zuletzt bereitgestellten Code basiert. Vielleicht sollten sich alle Farben nicht ändern, wenn ein neues Kontrollkästchen angeklickt wird, aber Sie können das Problem separat lösen.
Änderungen, die ich am Java-Code vorgenommen habe, werden als solche kommentiert. Es wurden auch Änderungen am XML-Code vorgenommen, damit der Code in meiner Umgebung ausgeführt werden kann. Diese Änderungen wurden jedoch nicht kommentiert.
MainActivity.java (Aktualisiert)
%Vor%DrawingView.java (Aktualisiert)
%Vor%activity_main.xml (Aktualisiert)
%Vor%Sie müssen die Funktion setColor ändern.
1.ändern Sie mPaint color.
2.add invalidate () für die Neuansicht.
%Vor% Sie müssen invalidate()
auf dem View
aufrufen, damit es aktualisiert wird.
Probieren Sie das aus,
%Vor%DrawingView.java
%Vor%Definieren Sie ein statisches Datenelement in Ihrer DrawingView
statische int-Farbe = 1; // Standard
Rufen Sie dann von Ihrer Aktivität einfach
aufDrawingView.color = someValue;
Statisches Schlüsselwort vor variabler Farbe stellt sicher, dass nur ein Variablenverweis für alle Objekte der DrawingView-Klasse existiert.
"selbst wenn ich einen statischen Wert übergebe, sagen wir 3 in der Hauptaktivität in drawingview.setColor(int)
gibt es Schwarz. Das bedeutet, dass die Funktion setColor
in Drawingview nicht funktioniert."
Bedeutet dies, dass es paint.setColor(3)
aufrufen wird?
Wenn ja, wird dies natürlich Ihre Farbe schwarz machen. Übergeben Sie stattdessen Color.GREEN
Tags und Links android view android-imageview