2012-07-26 14 views
6

Mam podklasa widok, który zaczyna się od działalności podklasy tak:Uzyskiwanie rozmiar ekranu nie z podklasy Aktywny

this.setContentView(instanceOfMyView); 

tym, że moim zdaniem podklasy Chcę, aby popracować z rozmiaru ekranu, ale wszyscy tutaj mówi że powinno być rozpoczęte jak:

DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
screenWidth = dm.widthPixels; 
screenHeight = dm.heightPixels; 

Ale getWindowManager() jest metodą, która może być wywołana tylko z działalności podklasy (mam rację?)

Tak, to jest złe pomysł i muszę uzyskać rozmiar ekranu w działaniu i użyć go jako parametrów w konstruktorze widoku lub istnieje sposób na uzyskanie rozmiaru ekranu w podklasie widoku? Może, po prostu trzeba jakoś uzyskać link do instancji działania w klasie widoku?

Z góry dziękuję.

Odpowiedz

25

Tak istnieje sposób, jeśli można przekazać obiekt kontekst swojej działalności non klasy,

int width= context.getResources().getDisplayMetrics().widthPixels; 
    int height= context.getResources().getDisplayMetrics().heightPixels; 

Nie musisz sam obiekt aktywny.

+1

Doskonale, już miałem obiekt 'context' w podklasie konstruktora widoku. Dzięki. –

+0

Cieszę się, że ci pomogło :) –

4
DisplayMetrics metrics = getBaseContext().getResources().getDisplayMetrics();   
    final int w = metrics.widthPixels; 
    final int h = metrics.heightPixels; 
+1

Wygląda na to, że 'getBaseContext()' nie działa w podklasie widoku, ale działa tylko 'getContext()'. –

Powiązane problemy