2013-07-26 13 views
5

aufgerufen Nach dem Drehen des Bildschirms wird die Höhe eines der Ansicht Objekt geändert, ich möchte den Höhenwert in Pixel kennen.Was wird nach onConfigurationchangeed() -Methode

Die Methode onConfigurationChanged wird wahrscheinlich vor der Endbearbeitung der Rotation aufgerufen. Wenn ich also die Ansichtsgröße in dieser Methode messe, ist die Größe immer noch der Wert der Rotation davor.

Das Problem ist, wie kann ich den Wert der Ansicht Größe nach der Drehung zu beenden, ohne Aktivität zu rekonstruieren.

+1

Sie können immer dies überprüfen in der 'onResume()' Methode, da sie nach der Drehung genannt wird. – g00dy

+1

danke für Ihre Antwort. Es scheint nicht OnResume() -Methode zu laufen, da ich Android: configChanges = "Orientierung | screenSize" in der AndroidManifest.xml-Datei. Ich habe den Breakpoint in OnResume gesetzt, habe aber bei der Rationation nicht angehalten. – user2614801

Antwort

4

Eine mögliche Lösung:

private int viewHeight = 0; 
View view = findViewByID(R.id.idOfTheView); 
view.getViewTreeObserver().addOnGlobalLayoutListener( 
    new OnGlobalLayoutListener(){ 
     @Override 
     public void onGlobalLayout() { 
      viewHeight = view.getHeight(); 
     } 

ODER

@Override 
public void onResume(){ 
    int viewHeight = 0; 
    View view = findViewByID(R.id.idOfTheView); 
    viewHeight = view.getHeight(); 
} 
+0

Vielen Dank für Ihre Antwort, ich denke, die onResume() wird nicht ausgeführt, seit ich ** Android: configChanges = "orientation | screenSize" ** in AndroidManifest.xml-Datei. Ich werde den Weg von OnGlobalLayoutListener untersuchen. – user2614801

+0

'OnResume()' wird immer aufgerufen, wenn dies eine Orientierungsänderung ist, da die gesamte Aktivität neu erstellt wird. – g00dy

+0

Ich lese gerade den Programmierleitartikel über Rotation noch einmal. Es sagte, dass über die API-Ebene 12, Konfigurationsänderung nicht Ihre Aktivität neu gestartet, die Adresse der Referenz ist http://developer.android.com/guide/topics/resources/runtime-changes.html in diesem Artikel gibt es eine Absatz wie dieser Jetzt, wenn eine dieser Konfigurationen ändern, wird MyActivity nicht neu gestartet. Stattdessen erhält MyActivity einen Aufruf von onConfigurationChanged(). ...... – user2614801