Ist onSizeChanged()
aufgerufen, sobald der Benutzer einen Teil des Bildschirms berührt?
Ich bin verwirrt über die Reihenfolge, in der onDraw()
, onMeasure()
und onSizeChanged()
werden genannt.
iman453
Ist onSizeChanged()
aufgerufen, sobald der Benutzer einen Teil des Bildschirms berührt?
Ich bin verwirrt über die Reihenfolge, in der onDraw()
, onMeasure()
und onSizeChanged()
werden genannt.
Colin Herbert
Android kennt die tatsächliche Größe beim Start nicht, es muss sie berechnen. Sobald es fertig ist, onSizeChanged()
wird Sie mit der tatsächlichen Größe benachrichtigen.
onSizeChanged()
heißt einmal die Größe wie errechnet. Ereignisse müssen nicht immer von Benutzern kommen. In diesem Beispiel, wenn Android die Größe ändert, onSizeChanged()
wird genannt. Das gleiche mit onDraw()
wann die Ansicht gezeichnet werden soll onDraw()
wird genannt.
onMeasure()
wird direkt nach einem Anruf automatisch angerufen measure()
Danke für deine Antwort. Können Sie mir ein Beispiel für einen Fall geben, in dem sich die Größe ändert?
– iman453
19. August 2010 um 21:30 Uhr
Ich habe die Lösung aktualisiert. Der Hauptaufruf von onSizeChanged() erfolgt nach der Konstruktion Ihrer Ansicht, aber vor dem Zeichnen. Zu diesem Zeitpunkt berechnet das System die Größe Ihrer Ansicht und benachrichtigt Sie per Anruf onSizeChanged()
– Colin Hebert
19. August 2010 um 21:55 Uhr
Dies ist viel besser als die ViewTreeObserver-Alternative.
– Dmacpro
9. April 2015 um 1:55 Uhr
onSizeChanged()
wird (zumindest manchmal) von innen gerufen layout()
. In diesem Fall wird es normalerweise vor jedem aufgerufen OnLayoutChangeListener
s.
– Wilhelm
9. April 2015 um 17:44 Uhr