2013-07-26 7 views
5

Dopo la rotazione dello schermo, viene modificata l'altezza di uno degli oggetti vista, desidero conoscere il valore dell'altezza in pixel.Cosa viene chiamato dopo il metodo onConfigurationchanged()

È probabile che venga chiamato il metodo onConfigurationChanged prima di visualizzare la rotazione di finitura. Quindi, se misuro le dimensioni della vista in questo metodo, la dimensione è ancora il valore della rotazione precedente.

Il problema è come è possibile ottenere il valore della dimensione della vista dopo la rotazione terminata Senza ricostruire l'attività.

+1

si può sempre controllare questo nel metodo 'onResume()', dal momento che è chiamato dopo la rotazione. – g00dy

+1

grazie per la tua risposta. Sembra che non usi il metodo OnResume() poiché utilizzo android: configChanges = "orientation | screenSize" nel file AndroidManifest.xml. Ho impostato il punto di interruzione su OnResume, ma non l'ho interrotto quando ho ratificato. – user2614801

risposta

4

Una possibile soluzione:

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

O

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

grazie per la risposta, penso che onResume() non verrà eseguito da quando ho impostato ** android: configChanges = "orientation | screenSize" ** nel file AndroidManifest.xml. Studierò il modo di OnGlobalLayoutListener. – user2614801

+0

'OnResume()' viene sempre chiamato quando si verifica un cambiamento di orientamento, poiché l'intera attività viene ricreata. – g00dy

+0

Ho appena letto l'articolo della guida di programmazione sulla rotazione di nuovo. Ha detto che sopra il livello API 12, la modifica della configurazione non riavvia la tua attività, l'indirizzo del riferimento è http://developer.android.com/guide/topics/resources/runtime-changes.html in questo articolo c'è un paragrafo come questo Ora, quando una di queste configurazioni cambia, MyActivity non si riavvia. Invece, MyActivity riceve una chiamata a onConfigurationChanged(). ...... – user2614801