2012-07-26 14 views
6

tengo una vista subclase que se inicia desde subclase de actividad como esa:no tamaño de la pantalla Paso de la subclase Actividad

this.setContentView(instanceOfMyView); 

En ese mi punto de vista subclase Quiero hacer algún trabajo con el tamaño de la pantalla, pero toda la gente aquí dice que debe iniciarse como:

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

Pero getWindowManager() es el método que se puede llamar desde subclase única actividad (Estoy en lo cierto?)

Por lo tanto, es malo idea y necesito tener el tamaño de pantalla en actividad y usarlo como parámetros en el constructor de vista o hay una manera de obtener el tamaño de pantalla en la subclase de vista? Tal vez, solo necesita de alguna manera obtener un enlace a la instancia de actividad en la clase de vista?

Gracias de antemano.

Respuesta

25

Sí hay una manera, si se puede pasar el objeto de contexto a su clase no actividad,

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

Usted no necesita la misma actividad objeto.

+1

Perfecto, ya tenía 'context' object en la subclase de constructor of view. Gracias. –

+0

estoy contento de que te haya ayudado :) –

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

Parece ser que 'getBaseContext()' no está funcionando en la subclase view, pero solo 'getContext()' funcionó. –

Cuestiones relacionadas