2012-07-26 21 views
6

ho una sottoclasse vista che parte dalla sottoclasse di attività del genere:non dimensioni dello schermo Arrivare da sottoclasse Attività

this.setContentView(instanceOfMyView); 

In questo mio punto di vista sottoclasse Voglio fare un certo lavoro con dimensioni dello schermo, ma tutte le persone qui dice che dovrebbe essere avviato come:

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

Ma getWindowManager() è il metodo che può essere chiamato da solo sottoclasse di attività (ho ragione?)

Quindi, è brutto idea e ho bisogno di ottenere dimensioni dello schermo in attività e usarlo come parametri in vista costruttore o c'è un modo per ottenere dimensioni dello schermo in vista sottoclasse? Forse, solo bisogno di ottenere in qualche modo un collegamento all'istanza di attività nella classe di visualizzazione?

Grazie in anticipo.

risposta

25

Sì, c'è un modo, se si può passare l'oggetto Context alla classe non attività,

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

Non è necessario l'oggetto attività stessa.

+1

Perfetto, ho già avuto l'oggetto 'context' nella sottoclasse costruttore di vista. Grazie. –

+0

sono contento che ti abbia aiutato :) –

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

Sembra che 'getBaseContext()' non funzioni nella sottoclasse della vista, ma solo 'getContext()' ha funzionato. –

Problemi correlati