Die benutzerdefinierte Ansicht von Android zeigt nach dem Aufrufen von invalidate ein schwarzes Schwarz

8

In diesem Code möchte ich eine Linie zwischen den oberen zwei ImageViews zeichnen. Beim Ausführen der App wird die benutzerdefinierte Ansicht jedoch nach dem Aufruf von invalidate() schwarz dargestellt.

Hier ist mein Code:

%Vor%

Gibt es einen Grund, warum die benutzerdefinierte Ansicht nach dem Aufruf von invalidate() ? schwarz dargestellt wird?

    
Pink Jazz 31.05.2016, 17:23
quelle

2 Antworten

1

In der Regel übernimmt das System die Größenänderung, das Ausblenden, Anzeigen und eine Menge anderer Dinge für Ihre Widgets automatisch, aber es treten manchmal Probleme auf, wenn der zugrunde liegende Puffer für gezeichnete Pixel oder Hintergrunddaten geändert wurde oder veraltet ist (Sie tauschen die Bildressource ein) eine Ansicht oder der Rohdatensatz ändert sich). Dies geschieht, weil das Betriebssystem auf keinen Fall wissen kann, dass sich die Daten in der bestimmten Weise geändert haben.

In diesen Fällen, in denen Sie mit dem Zeichnen arbeiten, müssen Sie dem System mitteilen, dass die zugrunde liegenden Daten mit Widget.invalidate () nicht in einem guten Zustand sind, und die Re-Zeichnung wird in den Haupt-Thread eingereiht . Abhängig von der Systemimplementierung und der Android-Version variiert das, was für Änderungen vom System verfolgt wird, aber was ich normalerweise tue, wird davon ausgegangen, dass Systemressourcen (Byte-Arrays, Char-Arrays, Ressourcenindizes, manuelles Zeichnen auf den Kontext) nicht verfolgt werden und ungültig werden müssen und alles andere wird vom System gehandhabt.

Quelle: Wenn es notwendig ist, invalidate () on auszuführen eine Ansicht?

    
gopigoppu 09.06.2016 18:07
quelle
0

Wie Sie wissen, wird invalidate () verwendet, um eine Ansicht zu aktualisieren durch einen Aufruf von onDraw .

Ich glaube, Sie haben es aufgerufen, bevor Sie update auf "true" setzen - also hat Ihre onDraw -Methode mit einem falschen Update durch die Geräusche davon gespielt.

    
SQLiteNoob 09.06.2016 13:26
quelle