2012-02-02 8 views
19

Si pongo esto en alguna clase de actividad, funciona perfectamente pero, cuando lo pongo en mi clase de aplicación, no se puede encontrar el método getWindowManager(). ¿Hay alguna forma de obtener WindowManager en la clase de aplicación?Cómo obtener métricas de pantalla en la clase de aplicación

Mi clase de aplicación se define así:

public class myApp extends Application { 

y en el método create tengo esto:

DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
int width = dm.widthPixels; 

Respuesta

54

Aquí, Context.getResource()

DisplayMetrics dm = getResources().getDisplayMetrics(); 
int densityDpi = dm.densityDpi;
1

Prueba esto:

Display display = getWindowManager().getDefaultDisplay(); 
Log.e("", "" + display.getHeight() + " " + display.getWidth()); 
+3

usted no puede conseguir getWindowManager en la clase de aplicación. –

+1

el propio lado funciona correctamente –

+0

@NiteshKhosla ¿podría señalar cualquier documento que nos muestra que la clase de aplicación contiene un método getWindowManager()? No puedo encontrarlo aquí: http://developer.android.com/reference/android/app/Application.html –

10

También puede probar esto:

WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); 
final DisplayMetrics displayMetrics = new DisplayMetrics(); 
wm.getDefaultDisplay().getMetrics(displayMetrics); 
int height = displayMetrics.heightPixels; 
int width = displayMetrics.widthPixels; 
0
final DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 

int width = dm.widthPixels; 
int height = dm.heightPixels; 

getWindow().setLayout((int) (width * .8), (int) (height * .5)); 
Cuestiones relacionadas