2013-07-26 9 views
5

Po obróceniu ekranu wysokość jednego z widocznych obiektów zostanie zmieniona, chcę poznać wartość wysokości w pikselach.To, co się nazywa po metoda onConfigurationchanged()

Metoda prawdopodobnie zostanie wywołana przed zakończeniem widoku. Jeśli więc zmierzę rozmiar widoku w tej metodzie, rozmiar jest nadal wartością obrotu wcześniej.

Problem polega na tym, w jaki sposób można uzyskać wartość rozmiaru widoku po zakończeniu obracania bez rekonstrukcji aktywności.

+1

Możesz zawsze sprawdzić w 'OnResume()' metody, ponieważ to się nazywa po rotacji. – g00dy

+1

dziękuję za odpowiedź. Wygląda na to, że nie działa metoda OnResume(), ponieważ używam Androida: configChanges = "orientation | screenSize" w pliku AndroidManifest.xml. Ustawiłem punkt przerwania w OnResume, ale nie zatrzymałem się, gdy otrzymałem ratation. – user2614801

Odpowiedz

4

Jednym z możliwych rozwiązań:

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

LUB

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

dziękuję za odpowiedź, myślę, że funkcja onResume() nie będzie działać, ponieważ ustawię ** Android: configChanges = "orientation | screenSize" ** w pliku AndroidManifest.xml. Będę studiować drogę OnGlobalLayoutListener. – user2614801

+0

'OnResume()' jest zawsze wywoływane, gdy jest to zmiana orientacji, ponieważ cała aktywność zostaje ponownie utworzona. – g00dy

+0

Właśnie przeczytałem artykuł dotyczący programowania o rotacji ponownie. Stwierdzono, że powyżej poziomu API 12 zmiana konfiguracji nie powoduje ponownego uruchomienia aktywności, adres odwołania to http://developer.android.com/guide/topics/resources/runtime-changes.html w tym artykule jest akapit taki jak ten Teraz, gdy zmieni się jedna z tych konfiguracji, MyActivity nie uruchamia się ponownie. Zamiast tego MyActivity odbiera wywołanie onConfigurationChanged(). ...... – user2614801