Wert von der Aktivität übergeben, um die Klasse anzuzeigen

8

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%

Bearbeiten

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.

    
Harshita 22.11.2017, 04:31
quelle

5 Antworten

4

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%     
Cheticamp 28.11.2017 16:17
quelle
1

Sie müssen die Funktion setColor ändern.

1.ändern Sie mPaint color.

2.add invalidate () für die Neuansicht.

%Vor%     
Rasoul Miri 28.11.2017 15:07
quelle
0

Sie müssen invalidate() auf dem View aufrufen, damit es aktualisiert wird.

Probieren Sie das aus,

%Vor%

DrawingView.java

%Vor%     
K Neeraj Lal 22.11.2017 04:42
quelle
0

Definieren Sie ein statisches Datenelement in Ihrer DrawingView

statische int-Farbe = 1; // Standard

Rufen Sie dann von Ihrer Aktivität einfach

auf

DrawingView.color = someValue;

Statisches Schlüsselwort vor variabler Farbe stellt sicher, dass nur ein Variablenverweis für alle Objekte der DrawingView-Klasse existiert.

    
Parth Kapoor 04.12.2017 13:26
quelle
0

"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

    
A. Kuchinke 29.11.2017 18:55
quelle

Tags und Links